Abstract
Ivory is a language that enforces memory safety and avoids most undefined behaviors while providing low-level control of memory- manipulation. Ivory is embedded in a modern variant of Haskell, as implemented by the GHC compiler. The main contributions of the paper are two-fold. First, we demonstrate how to embed the type-system of a safe-C language into the type extensions of GHC. Second, Ivory is of interest in its own right, as a powerful language for writing high-assurance embedded programs. Beyond invariants enforced by its type-system, Ivory has direct support for model-checking, theorem-proving, and property-based testing. Ivory’s semantics have been formalized and proved to guarantee memory safety.
- ad. Website http://hackage.haskell.org/package/ad. Retrieved Feb. 2015.Google Scholar
- estimator. Website http://hackage.haskell.org/ package/estimator. Retrieved Feb. 2015.Google Scholar
- ghc-srcspan-plugin. Website http://hackage.haskell.org/ package/ghc-srcspan-plugin. Retrieved Feb. 2015.Google Scholar
- linear. Website http://hackage.haskell.org/package/ linear. Retrieved Feb. 2015.Google Scholar
- Computer-Aided Reasoning: An Approach. Kluwer Academic Publishers, 2000. Google Scholar
Digital Library
- Heartbleed. http://heartbleed.com/, February 2015.Google Scholar
- E. Axelsson, K. Claessen, M. Sheeran, J. Svenningsson, D. Engdal, and A. Persson. The design and implementation of Feldspar - an embedded language for digital signal processing. In Implementation and Application of Functional Languages, volume 6647 of LNCS, pages 121–136. Springer, 2011. Google Scholar
Digital Library
- J. Barnes. High Integrity Software: The SPARK Approach to Safety and Security. Addison-Wesley, 2003. Google Scholar
Digital Library
- C. Barrett, C. L. Conway, M. Deters, L. Hadarean, D. Jovanovi´c, T. King, A. Reynolds, and C. Tinelli. CVC4. In Proceedings of the 23rd International Conference on Computer Aided Verification, pages 171–177, 2011. Google Scholar
Digital Library
- S. Checkoway, D. McCoy, B. Kantor, D. Anderson, H. Shacham, S. Savage, K. Koscher, A. Czeskis, F. Roesner, and T. Kohno. Comprehensive experimental analyses of automotive attack surfaces. In USENIX Security, 2011. Google Scholar
Digital Library
- K. Claessen and J. Hughes. QuickCheck: A lightweight tool for random testing of Haskell programs. In ACM SIGPLAN Notices, pages 268–279. ACM, 2000. Google Scholar
Digital Library
- I. S. Diatchki and M. P. Jones. Strongly typed memory areas programming systems-level data structures in a functional language. In Proceedings of the ACM SIGPLAN Workshop on Haskell, pages 72–83. ACM, 2006. Google Scholar
Digital Library
- I. S. Diatchki, M. P. Jones, and R. Leslie. High-level views on lowlevel representations. In Intl. Conference on Functional Programming, pages 168–179. ACM, 2005. Google Scholar
Digital Library
- G. Eakman, H. Reubenstein, T. Hawkins, M. Jain, and P. Manolios. Practical formal verification of domain-specific language applications. In NASA Formal Methods Symposium. Springer, 2015.Google Scholar
Cross Ref
- L. Erkok. SBV: SMT based verification in Haskell. Website, 2014. http://leventerkok.github.io/sbv/.Google Scholar
- S. Frazzetta and M. Pacino. A STANAG 4586 oriented approach to UAS navigation - the case of Italian Sky-Y flight trials. Journal of Intelligent and Robotic Systems, 69:21–31, 2013. Google Scholar
Digital Library
- T. Hawkins. Controlling hybrid vehicles with Haskell. Presentation. Commercial Users of Functional Programming (CUFP), 2008. Available at http://cufp.galois.com/2008/schedule.html.Google Scholar
- P. C. Hickey, L. Pike, T. Elliott, J. Bielman, and J. Launchbury. Building embedded systems with embedded DSLs (experience report). In Intl. Conference on Functional Programming (ICFP). ACM, 2014. Google Scholar
Digital Library
- T. Jim, J. G. Morrisett, D. Grossman, M. W. Hicks, J. Cheney, and Y. Wang. Cyclone: A safe dialect of C. In USENIX Conference, Berkeley, CA, USA, 2002. USENIX. Google Scholar
Digital Library
- JPL. JPL institutional coding standard for the C programming language. Technical Report JPL DOCID D-60411, Jet Propulsion Laboratory, 2009. Available at http://lars-lab.jpl.nasa.gov/ JPL_Coding_Standard_C.pdf.Google Scholar
- M. Kaufmann, P. Manolios, and J. S. Moore. Computer-Aided Reasoning: An Approach. Kluwer, 2000. Google Scholar
Digital Library
- O. Kiselyov and C.-c. Shan. Lightweight monadic regions. In Proceedings of the First ACM SIGPLAN Symposium on Haskell, Haskell ’08, pages 1–12, New York, NY, USA, 2008. ACM. ISBN 978-1-60558-064-7.. URL http://doi.acm.org/10.1145/ 1411286.1411288. Google Scholar
Digital Library
- O. Kiselyov, A. Sabry, and C. Swords. Extensible effects: An alternative to monad transformers. In Proceedings of the 2013 ACM SIGPLAN Symposium on Haskell, Haskell ’13, pages 59–70. ACM, 2013. Google Scholar
Digital Library
- J. Launchbury and S. L. Peyton Jones. Lazy functional state threads. pages 24–35, June 1994. Google Scholar
Digital Library
- J. R. Lewis, J. Launchbury, E. Meijer, and M. B. Shields. Implicit parameters: Dynamic scoping with static types. In Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 108–118. ACM, 2000. Google Scholar
Digital Library
- S. Lindley and C. McBride. Hasochism: The pleasure and pain of dependently typed haskell programming. In Symposium on Haskell, pages 81–92. ACM, 2013. Google Scholar
Digital Library
- J. P. Magalh˜aes. The right kind of generic programming. In Proceedings of the 8th ACM SIGPLAN Workshop on Generic Programming, WGP ’12, pages 13–24, New York, NY, USA, 2012. ACM. ISBN 978-1-4503-1576-0.. Google Scholar
Digital Library
- G. Mainland. Why it’s nice to be quoted: Quasiquoting for Haskell. In Proceedings of the ACM SIGPLAN Workshop on Haskell Workshop, pages 73–82. ACM, 2007. Google Scholar
Digital Library
- N. D. Matsakis and F. S. Klock, II. The Rust language. Proceedings of the 2014 ACM SIGAda Annual Conference on High Integrity Language Technology, 34(3):103–104, Oct. 2014. Google Scholar
Digital Library
- T. Nipkow, M. Wenzel, and L. C. Paulson. Isabelle/HOL: A Proof Assistant for Higher-order Logic. Springer-Verlag, Berlin, Heidelberg, 2002. ISBN 3-540-43376-7. Google Scholar
Digital Library
- L. Pike, A. Goodloe, R. Morisset, and S. Niller. Copilot: A hard realtime runtime monitor. In Runtime Verification (RV), volume 6418, pages 345–359. Springer, 2010. Google Scholar
Digital Library
- T. Schrijvers, S. Peyton Jones, M. Chakravarty, and M. Sulzmann. Type checking with open type functions. Intl. Conference on Functional Programming, pages 51–62, Sept. 2008. ISSN 0362-1340. Google Scholar
Digital Library
- S. Sridhar. BitC: A Safe Systems Programming Language. PhD thesis, 2009. Google Scholar
Digital Library
- B. A. Yorgey, S. Weirich, J. Cretin, S. Peyton Jones, D. Vytiniotis, and J. P. Magalh˜aes. Giving Haskell a promotion. In Proceedings of the 8th ACM SIGPLAN Workshop on Types in Language Design and Implementation, TLDI ’12, pages 53–66. ACM, 2012. Google Scholar
Digital Library
Index Terms
Guilt free ivory
Recommendations
Guilt free ivory
Haskell '15: Proceedings of the 2015 ACM SIGPLAN Symposium on HaskellIvory is a language that enforces memory safety and avoids most undefined behaviors while providing low-level control of memory- manipulation. Ivory is embedded in a modern variant of Haskell, as implemented by the GHC compiler. The main contributions ...
LibDSL: a library for developing embedded domain specific languages in d via template metaprogramming
GPCE '14This paper presents a library called LibDSL that helps the implementer of an embedded domain specific language (EDSL) effectively develop it in D language. The LibDSL library accepts as input some kinds of ``specifications'' of the EDSL that the ...
LibDSL: a library for developing embedded domain specific languages in d via template metaprogramming
GPCE 2014: Proceedings of the 2014 International Conference on Generative Programming: Concepts and ExperiencesThis paper presents a library called LibDSL that helps the implementer of an embedded domain specific language (EDSL) effectively develop it in D language. The LibDSL library accepts as input some kinds of ``specifications'' of the EDSL that the ...






Comments