[HN Gopher] Chez Scheme ___________________________________________________________________ Chez Scheme Author : qsort Score : 15 points Date : 2022-08-25 21:10 UTC (1 hours ago) (HTM) web link (github.com) (TXT) w3m dump (github.com) | jesushax wrote: | I learned about Chez when Racket started their rewrite from C to | Chez. Made me think why they don't just build Racket entirely in | its self! | qsort wrote: | I have fond memories of Racket, my intro to CS course used it. | I already knew how to program, but I was really only familiar | with C and it stumped me, in a good way. | | 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. | bigdict wrote: | Go Huskies? | fspeech wrote: | Here is an interview talking about the move to ChezScheme | https://www.notamonadtutorial.com/rebuilding-the-racket-comp... | | "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. | dunham wrote: | There still is a bit of a runtime system that you'd write in | something like C - you'll see it in the "c" directory of the | linked chez repository. Chez is reportedly very fast, it's much | easier to use that than write your own from scratch. | | 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. | zelphirkalt wrote: | From what I have read, Chez is a quite performant | implementation (benchmarks https://ecraven.github.io/r7rs- | benchmarks/) and does a lot of things correctly (according to | spec) and cleanly. Basing Racket on Chez takes advantage of the | things Chez does well and probably saves a lot of time. I have | too little knowledge about Racket's internals, to give a better | and less general answer. | eatonphil wrote: | There are lots of cool papers Dybvig has published related to | Chez Scheme that are relevant for anyone building compilers. | | A few I remember/can find: | | * 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... | | And there's an awesome powerpoint/slides about the Chez Scheme | compilation techniques over time but I'm struggling to find it | right now. | | Here's a pretty full list: | https://www.researchgate.net/scientific-contributions/R-Kent.... ___________________________________________________________________ (page generated 2022-08-25 23:00 UTC)