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.
Supplemental Material
Available for Download
The supplementary material provides additional benchmark measurements and analysis comparing the current Racket implementation to Racket on Chez Scheme.
- Michael D. Adams. Flow-Sensitive Control-Flow Analysis in Linear-Log Time. PhD dissertation, Indiana University, 2013. Google Scholar
Digital Library
- Leif Andersen, Vincent St-Amour, Jan Vitek, and Matthias Felleisen. Feature-Specific Profiling. Transactions on Programming Languages and Systems 41(1), 2019. Google Scholar
Digital Library
- Eli Barzilay and Dmitry Orlovsky. Foreign Interface for PLT Scheme. In Proc. Scheme and Functional Programming , 2004.Google Scholar
- Brent W. Benson Jr. libscheme: Scheme as a C Library. In Proc. USENIX Symposium on Very High Level Languages, 1994. Google Scholar
Digital Library
- John Clements and Matthias Felleisen. A Tail-Recursive Machine with Stack Inspection. Transactions on Programming Languages and Systems 26(6), pp. 1029–1052, 2004. Google Scholar
Digital Library
- John Clements, Matthew Flatt, and Matthias Felleisen. Modeling an Algebraic Stepper. In Proc. European Symposium on Programming , 2001. Google Scholar
Digital Library
- Olivier Danvy and Andrzej Filinski. Abstracting Control. In Proc. Lisp and Functional Programming, 1990. Google Scholar
Digital Library
- R. Kent Dybvig, Carl Bruggeman, and David Eby. Guardians in a Generation-Based Garbage Collector. In Proc. Programming Language Design and Implementation , 1993. Google Scholar
Digital Library
- 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. Google Scholar
Digital Library
- 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. Google Scholar
Digital Library
- 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. Google Scholar
Digital Library
- Barry Hayes. Ephemerons: a New Finalization Mechanism. In Proc. Object-Oriented Programming, Systems, Languages and Applications , 1997. Google Scholar
Digital Library
- Robert Hieb, Kent Dybvig, and Claude W. Anderson , III. Subcontinuations. Lisp and Symbolic Computation 7(1), pp. 83–110, 1994. Google Scholar
Digital Library
- Robert Hieb and R. Kent Dybvig. Continuations and Concurrency. In Proc. Principles and Practice of Parallel Programming , 1990. Google Scholar
Digital Library
- Xiangqi Li and Matthew Flatt. Debugging with Domain-Specific Events via Macros. In Proc. Software Language Engineering , 2017. Google Scholar
Digital Library
- John H. Reppy. Concurrent Programming in ML. Cambridge University Press, 1999. Google Scholar
Digital Library
- Julian Smart. User Manual for wxWindows 1.63: a Portable C++ Toolkit. 1995. Note: wxWindows is now known as wxWidgets.Google Scholar
- Michael Sperber, R. Kent Dybvig, Matthew Flatt, and Anton van Straaten (Ed.). The Revised 6 Report on the Algorithmic Language Scheme. 2007. Google Scholar
Digital Library
- 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. Google Scholar
Digital Library
- Adam Wick and Matthew Flatt. Memory Accounting without Partitions. In Proc. International Symposium on Memory Management , 2004. Google Scholar
Digital Library
Index Terms
Rebuilding racket on chez scheme (experience report)
Recommendations
Revised Report on the Algorithmic Language Scheme
The report gives a defining description of the programming language Scheme. Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis Steele, Jr. and Gerald Jay Sussman. It was designed to have ...
Pycket: a tracing JIT for a functional language
ICFP '15We present Pycket, a high-performance tracing JIT compiler for Racket. Pycket supports a wide variety of the sophisticated features in Racket such as contracts, continuations, classes, structures, dynamic binding, and more. On average, over a standard ...
Record data structures in racket: usage analysis and optimization
Built-in data structures are a key contributor to the performance of dynamic languages. Record data structures, or records, are one of the common advanced, but not easily optimizable built-in data structures supported by those languages. Records may be ...






Comments