WOW this just makes it one of the best implementation of scheme, though i would love to see the chez backend version to produce executable binaries like chicken scheme or current raco compiler does. The current chez scheme supports only fasl binaries which require a scheme interpreter to be distributed. The only hacky way currently is chez-exe.
As I understand it, raco (if it's the same as the old mzscheme) creates executables by combining bytecode with a complete interpreter and runtime. Chicken, via C, can probably leverage existing compiler support for creating minimal static binaries.
I've long been a fan of Dybvig and Chez Scheme and it would be a lot of fun to try running Hacker News on RoC with no effort on our part.
Are there any scheme implementations that dump executables the way e.g. cmucl or clozureCL do? That is they dump the entire core to disk and prepend the runtime. This is actually the more traditional way of creating an executable (all of the static compiling ones I'm aware of derive from a single implemenation, KCL)
IIRC it can, but whenever you use eggs (chicken libraries) there might be some limitations to whether you can create a fat executable or have to distribute the runtime and the eggs together with your application.
Very cool. I have been enjoying Chez since the licensing changed, I even started an application book using Chez (which may never get finished), but having the full Racket environment on top of Chez will be great when the re-write is finished.
Looks like there is a fundamental tradeoff for startup time here which might prevent using racket directly as a subshell (there are ways around this such as making the racket process a daemon). I'll be interested to see if the 'rough unscientific benchmark' numbers can reach the chez levels and to see some more scientific benchmarks (I've been trying to get the r7 repo to build to run some personal benchmarks, but haven't really had time).
Fantastic work and looking forward to what the future holds!
Note that the Chez startup time isn't that good, and even the current Racket startup time is not great (node is still maybe 5x faster to start up). We'd really like to improve this as well, but it's hard if you don't want to have your whole standard library linked into the binary.
On the contrary. The racket7 repo is full of activity. In fact, I have many times wondered whether mflatt is a code producing robot. Just racket7 seems like more than a one-man job at times, with non-trivial patching of chez and lots and lots of new code.