Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2804302.2804318acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
research-article

Guilt free ivory

Published: 30 August 2015 Publication History
  • Get Citation Alerts
  • 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.
    [2]
    estimator. Website http://hackage.haskell.org/ package/estimator. Retrieved Feb. 2015.
    [3]
    ghc-srcspan-plugin. Website http://hackage.haskell.org/ package/ghc-srcspan-plugin. Retrieved Feb. 2015.
    [4]
    linear. Website http://hackage.haskell.org/package/ linear. Retrieved Feb. 2015.
    [5]
    Computer-Aided Reasoning: An Approach. Kluwer Academic Publishers, 2000.
    [6]
    Heartbleed. http://heartbleed.com/, February 2015.
    [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.
    [8]
    J. Barnes. High Integrity Software: The SPARK Approach to Safety and Security. Addison-Wesley, 2003.
    [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.
    [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.
    [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.
    [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.
    [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.
    [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.
    [15]
    L. Erkok. SBV: SMT based verification in Haskell. Website, 2014. http://leventerkok.github.io/sbv/.
    [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.
    [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.
    [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.
    [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.
    [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.
    [21]
    M. Kaufmann, P. Manolios, and J. S. Moore. Computer-Aided Reasoning: An Approach. Kluwer, 2000.
    [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.
    [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.
    [24]
    J. Launchbury and S. L. Peyton Jones. Lazy functional state threads. pages 24–35, June 1994.
    [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.
    [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.
    [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.
    [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.
    [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.
    [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.
    [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.
    [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.
    [33]
    S. Sridhar. BitC: A Safe Systems Programming Language. PhD thesis, 2009.
    [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.

    Cited By

    View all
    • (2023)Could Tierless Languages Reduce IoT Development Grief?ACM Transactions on Internet of Things10.1145/35729014:1(1-35)Online publication date: 23-Feb-2023
    • (2020)Towards secure IoT programming in HaskellProceedings of the 13th ACM SIGPLAN International Symposium on Haskell10.1145/3406088.3409027(136-150)Online publication date: 27-Aug-2020
    • (2019)Safety at speed: in-place array algorithms from pure functional programs by safely re-using storageProceedings of the 8th ACM SIGPLAN International Workshop on Functional High-Performance and Numerical Computing10.1145/3331553.3342616(34-46)Online publication date: 18-Aug-2019
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    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
    • 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
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 30 August 2015

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. Embedded Domain Specific Languages
    2. Embedded Systems

    Qualifiers

    • Research-article

    Funding Sources

    • DARPA

    Conference

    ICFP'15
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 57 of 143 submissions, 40%

    Upcoming Conference

    ICFP '24

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)8
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 10 Aug 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2023)Could Tierless Languages Reduce IoT Development Grief?ACM Transactions on Internet of Things10.1145/35729014:1(1-35)Online publication date: 23-Feb-2023
    • (2020)Towards secure IoT programming in HaskellProceedings of the 13th ACM SIGPLAN International Symposium on Haskell10.1145/3406088.3409027(136-150)Online publication date: 27-Aug-2020
    • (2019)Safety at speed: in-place array algorithms from pure functional programs by safely re-using storageProceedings of the 8th ACM SIGPLAN International Workshop on Functional High-Performance and Numerical Computing10.1145/3331553.3342616(34-46)Online publication date: 18-Aug-2019
    • (2019)G2Q: Haskell constraint solvingProceedings of the 12th ACM SIGPLAN International Symposium on Haskell10.1145/3331545.3342590(44-57)Online publication date: 8-Aug-2019
    • (2018)Task Oriented Programming and the Internet of ThingsProceedings of the 30th Symposium on Implementation and Application of Functional Languages10.1145/3310232.3310239(83-94)Online publication date: 5-Sep-2018
    • (2018)VeriPhy: verified controller executables from verified cyber-physical system modelsACM SIGPLAN Notices10.1145/3296979.319240653:4(617-630)Online publication date: 11-Jun-2018
    • (2018)Formally verified software in the real worldCommunications of the ACM10.1145/323062761:10(68-77)Online publication date: 26-Sep-2018
    • (2018)VeriPhy: verified controller executables from verified cyber-physical system modelsProceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3192366.3192406(617-630)Online publication date: 11-Jun-2018
    • (2018)A Task-Based DSL for MicrocomputersProceedings of the Real World Domain Specific Languages Workshop 201810.1145/3183895.3183902(1-11)Online publication date: 24-Feb-2018
    • (2017)Rewriting a shallow DSL using a GHC compiler extensionACM SIGPLAN Notices10.1145/3170492.313604852:12(246-258)Online publication date: 23-Oct-2017
    • Show More Cited By

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media