Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article
Open access

Rebuilding racket on chez scheme (experience report)

Published: 26 July 2019 Publication History
  • Get Citation Alerts
  • Abstract

    We rebuilt Racket on Chez Scheme, and it works well—as long as we're allowed a few patches to Chez Scheme. DrRacket runs, the Racket distribution can build itself, and nearly all of the core Racket test suite passes. Maintainability and performance of the resulting implementation are good, although some work remains to improve end-to-end performance. The least predictable part of our effort was how big the differences between Racket and Chez Scheme would turn out to be and how we would manage those differences. We expect Racket on Chez Scheme to become the main Racket implementation, and we encourage other language implementers to consider Chez Scheme as a target virtual machine.

    Supplementary Material

    Auxiliary Archive (icfp19main-p6-p-aux.zip)
    The supplementary material provides additional benchmark measurements and analysis comparing the current Racket implementation to Racket on Chez Scheme.
    WEBM File (a78-flatt.webm)

    References

    [1]
    Michael D. Adams. Flow-Sensitive Control-Flow Analysis in Linear-Log Time. PhD dissertation, Indiana University, 2013.
    [2]
    Leif Andersen, Vincent St-Amour, Jan Vitek, and Matthias Felleisen. Feature-Specific Profiling. Transactions on Programming Languages and Systems 41(1), 2019.
    [3]
    Eli Barzilay and Dmitry Orlovsky. Foreign Interface for PLT Scheme. In Proc. Scheme and Functional Programming, 2004.
    [4]
    Brent W. Benson Jr. libscheme: Scheme as a C Library. In Proc. USENIX Symposium on Very High Level Languages, 1994.
    [5]
    John Clements and Matthias Felleisen. A Tail-Recursive Machine with Stack Inspection. Transactions on Programming Languages and Systems 26(6), pp. 1029–1052, 2004.
    [6]
    John Clements, Matthew Flatt, and Matthias Felleisen. Modeling an Algebraic Stepper. In Proc. European Symposium on Programming, 2001.
    [7]
    Olivier Danvy and Andrzej Filinski. Abstracting Control. In Proc. Lisp and Functional Programming, 1990.
    [8]
    R. Kent Dybvig, Carl Bruggeman, and David Eby. Guardians in a Generation-Based Garbage Collector. In Proc. Programming Language Design and Implementation, 1993.
    [9]
    R. Kent Dybvig, Simon Peyton Jones, and Amr Sabry. A Monadic Framework for Delimited Continuations. Journal of Functional Programming 17(6), pp. 687–730, 2007.
    [10]
    Matthew Flatt, Robert Bruce Findler, Shriram Krishnamurthi, and Matthias Felleisen. Programming Languages as Operating Systems (or Revenge of the Son of the Lisp Machine). In Proc. International Conference on Functional Programming, 1999.
    [11]
    Matthew Flatt, Gang Yu, Robert Bruce Findler, and Matthias Felleisen. Adding Delimited and Composable Control to a Production Programming Enviornment. In Proc. International Conference on Functional Programming, 2007.
    [12]
    Barry Hayes. Ephemerons: a New Finalization Mechanism. In Proc. Object-Oriented Programming, Systems, Languages and Applications, 1997.
    [13]
    Robert Hieb, Kent Dybvig, and Claude W. Anderson, III. Subcontinuations. Lisp and Symbolic Computation 7(1), pp. 83–110, 1994.
    [14]
    Robert Hieb and R. Kent Dybvig. Continuations and Concurrency. In Proc. Principles and Practice of Parallel Programming, 1990.
    [15]
    Xiangqi Li and Matthew Flatt. Debugging with Domain-Specific Events via Macros. In Proc. Software Language Engineering, 2017.
    [16]
    John H. Reppy. Concurrent Programming in ML. Cambridge University Press, 1999.
    [17]
    Julian Smart. User Manual for wxWindows 1.63: a Portable C++ Toolkit. 1995. Note: wxWindows is now known as wxWidgets.
    [18]
    Michael Sperber, R. Kent Dybvig, Matthew Flatt, and Anton van Straaten (Ed.). The Revised 6 Report on the Algorithmic Language Scheme. 2007.
    [19]
    T. Stevie Strickland, Sam Tobin-Hochstadt, Robert Bruce Findler, and Matthew Flatt. Chaperones and Impersonators: Run-time Support for Reasonable Interposition. In Proc. Object-Oriented Programming, Systems, Languages and Applications, 2012.
    [20]
    Adam Wick and Matthew Flatt. Memory Accounting without Partitions. In Proc. International Symposium on Memory Management, 2004.

    Cited By

    View all
    • (2023)Rhombus: A New Spin on Macros without All the ParenthesesProceedings of the ACM on Programming Languages10.1145/36228187:OOPSLA2(574-603)Online publication date: 16-Oct-2023
    • (2023)How Profilers Can Help Navigate Type MigrationProceedings of the ACM on Programming Languages10.1145/36228177:OOPSLA2(544-573)Online publication date: 16-Oct-2023
    • (2021)Runtime and compiler support for HAMTsProceedings of the 17th ACM SIGPLAN International Symposium on Dynamic Languages10.1145/3486602.3486931(48-59)Online publication date: 19-Oct-2021
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image Proceedings of the ACM on Programming Languages
    Proceedings of the ACM on Programming Languages  Volume 3, Issue ICFP
    August 2019
    1054 pages
    EISSN:2475-1421
    DOI:10.1145/3352468
    Issue’s Table of Contents
    This work is licensed under a Creative Commons Attribution International 4.0 License.

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 26 July 2019
    Published in PACMPL Volume 3, Issue ICFP

    Permissions

    Request permissions for this article.

    Check for updates

    Badges

    Author Tags

    1. Racket
    2. Scheme

    Qualifiers

    • Research-article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)224
    • Downloads (Last 6 weeks)47

    Other Metrics

    Citations

    Cited By

    View all
    • (2023)Rhombus: A New Spin on Macros without All the ParenthesesProceedings of the ACM on Programming Languages10.1145/36228187:OOPSLA2(574-603)Online publication date: 16-Oct-2023
    • (2023)How Profilers Can Help Navigate Type MigrationProceedings of the ACM on Programming Languages10.1145/36228177:OOPSLA2(544-573)Online publication date: 16-Oct-2023
    • (2021)Runtime and compiler support for HAMTsProceedings of the 17th ACM SIGPLAN International Symposium on Dynamic Languages10.1145/3486602.3486931(48-59)Online publication date: 19-Oct-2021
    • (2020)Compiler and runtime support for continuation marksProceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3385412.3385981(45-58)Online publication date: 11-Jun-2020

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Get Access

    Login options

    Full Access

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media