
I’m bowled over by the expressiveness and power of Racket. All programming should be this fun :slightly_smiling_face:

Hear, hear!

Stupid question perhaps — Racket compiler and runtime is being redone on chez. But is it racket-on-chez, or is it more actually racket-on-scheme, but with chez implementation? Ie would it be hard to substitute chez with some other scheme?

More specifically, I’m curious about possibility of racket getting put onto JVM via Kawa

@nma.arvydas.silanskas the vast majority of the primitives Racket depends on to efficiently implement things like threads, I/O, the FFI, custodians, chaperones/impersonators, wills and executors, etc. are not in standard Scheme, so Racket-on-Chez still depends on a lot of Chez-specific functionality (and has sometimes even needed to change Chez to support certain things)

@nma.arvydas.silanskas The way RacketCS is implemented is that Racket programs are translated to Chez programs that also use an API (called Rumble) that supports things like @lexi.lambda mentioned. Those are implemented directly in Chez code. However, the set of features required for that code is much smaller than for full Racket programs, so porting to another Scheme is much easier than previously.

With that said, it’s not clear that Kawa would be easiest way to porting Racket to the JVM — it really depends on how easily Kawa could support the various tricky features that Racket needs (like delimited continuations) and how high-fidelity the implementation needs to be.

If you’re interested in trying this, I’m happy to provide help/advice.

@franklai has joined the channel