Chez Scheme
github.com
github.com
My favorite is the slides on the development of Chez Scheme: http://icfp06.cs.uchicago.edu/dybvig-talk.pdf.
A few other good ones:
* Destination Driven Code Generation: https://legacy.cs.indiana.edu/~dyb/pubs/ddcg.pdf
* The Development of Chez Scheme: https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.72...
Here's a pretty full list: https://www.researchgate.net/scientific-contributions/R-Kent....
It shows concretely how DDCG compares to common optimizations like peephole and top-of-stack caching.
And shows concrete examples of compiling various forms (expressions, assignment, control flow, etc) with DDCG.
The only reason it's on my personal Github is because the original is so hard to find.
I spent some time reading the r6ra discussions and was blown away by the thought that went into the whole thing. There are very few parts of the semantics of R6RS that are actually bothersome. The only thing I really don't like is promises and the dynamic environment.
Sadly I have never used Racket since. The kind of stuff I'd use it for is well-covered by python.
> Made me think why they don't just build Racket entirely in its self!
I'm not sure either, but I remember it might be because Chez Scheme has a parallel garbage collector that they could reuse, and being Lisps they could easily maintain backwards compatibility.
Most students come in with some programming experience. A handful come in with a lot, the rest have none. The latter two groups fared about equivalently when compared with their counterparts in the other language intro. But the big group of students who had just enough knowledge to be dangerous benefited greatly from the Racket course, and my hypothesis on the subject is that the alienation from what they were used to 1) stopped them from checking out because they thought they knew it all already and 2) forced them to really evaluate their knowledge and separate the language specifics from fundamental truths.
"Why did you choose Chez Scheme over other Schemes to rebuild Racket?
The biggest weakness of the Racket BC (“before Chez”) implementation are its back-end compiler structure, its inefficient internal calling conventions (over-adapted to C), and its poor implementation of first-class continuations. Those are exactly the strengths of Chez Scheme. Furthermore, Racket’s evaluation model was always closely aligned with Chez Scheme, such as the emphasis on interactive evaluation and compilation.
It was clear up front that Chez Scheme lacked significant features that Racket needs, such as support for continuation marks and reachability-based memory accounting. However, the high quality of the Chez Scheme design and implementation, in contrast to old Racket’s implementation, made adapting Chez Scheme more appealing than retrofitting Racket’s old implementation further."
And much more.
I don't know the Racket situation (although I am using their chez fork), but I know that the Idris language chose to move from having their own C based runtime system to chez for the Idris2 rewrite. The reasons that I've seen were that it was much more performant than they could achieve on their own.
I suspect something similar is at play here. That the racket team wanted to concentrate on what makes racket special and leverage Chez for performance.
So I just never program in scheme.
https://github.com/Syntacticlosure/chez-runner
There might be more on the racket package server.