skip to main content
research-article

Guilt free ivory

Published:30 August 2015Publication History
Skip Abstract Section

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.

References

  1. ad. Website http://hackage.haskell.org/package/ad. Retrieved Feb. 2015.Google ScholarGoogle Scholar
  2. estimator. Website http://hackage.haskell.org/ package/estimator. Retrieved Feb. 2015.Google ScholarGoogle Scholar
  3. ghc-srcspan-plugin. Website http://hackage.haskell.org/ package/ghc-srcspan-plugin. Retrieved Feb. 2015.Google ScholarGoogle Scholar
  4. linear. Website http://hackage.haskell.org/package/ linear. Retrieved Feb. 2015.Google ScholarGoogle Scholar
  5. Computer-Aided Reasoning: An Approach. Kluwer Academic Publishers, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Heartbleed. http://heartbleed.com/, February 2015.Google ScholarGoogle Scholar
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. J. Barnes. High Integrity Software: The SPARK Approach to Safety and Security. Addison-Wesley, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarCross RefCross Ref
  15. L. Erkok. SBV: SMT based verification in Haskell. Website, 2014. http://leventerkok.github.io/sbv/.Google ScholarGoogle Scholar
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle Scholar
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle Scholar
  21. M. Kaufmann, P. Manolios, and J. S. Moore. Computer-Aided Reasoning: An Approach. Kluwer, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. J. Launchbury and S. L. Peyton Jones. Lazy functional state threads. pages 24–35, June 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  28. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  29. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  30. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  31. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  32. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. S. Sridhar. BitC: A Safe Systems Programming Language. PhD thesis, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Guilt free ivory

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    • Published in

      cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 50, Issue 12
      Haskell '15
      December 2015
      212 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/2887747
      Issue’s Table of Contents
      • cover image ACM Conferences
        Haskell '15: Proceedings of the 2015 ACM SIGPLAN Symposium on Haskell
        August 2015
        212 pages
        ISBN:9781450338080
        DOI:10.1145/2804302

      Copyright © 2015 ACM

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 30 August 2015

      Check for updates

      Qualifiers

      • research-article

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!