Python 3 is the same way now -- everything is faster than Python 2, except startup. There was a good PyCon talk showing this, but this message also gives some numbers .
I have a prototype of a shell solution to this here:
Shell Protocol Designs http://www.oilshell.org/blog/2018/12/05.html#toc_2
It requires around 100 lines of code in the VM or application, assuming the application can make the dup2() libc call and such. If anyone wants to help prove the protocol, let me know :)
Code design is what keeps complex projects from collapsing under their own weight. There are always trade-offs when constructing software, but I feel that design is often neglected needlessly.
From what I can tell (and I may be wrong), some differences are:
- Chez has parallel threads (that can run on multiple cores)
- Racket seems to have some higher level concepts and more learning material
- Racket has multiple "languages" and facilitates making your own; see: Beautiful Racket
- Chez is faster than Racket
It's still basically scheme though. I mean, if you're coming from a scheme background the only thing that might trip you up in racket is cons cells are immutable. If you only have racket experience and try out [another] scheme, you might experience some culture shock when you start encountering stuff like let-values being in srfi-11 instead of racket/base. In my opinion, racket is generally a more pleasant experience. Virtually all of my personal/recreational projects are in racket these days.
This is a good way to improve language implementations with safer technology stacks.
> Putting a number on maintainability is less easy than measuring benchmark performance. Anecdotally, as the person who has worked on both systems, I can report that it’s no contest. The current Racket implementation is fundamentally put together in the wrong way (except for the macro expander), while Racket CS is fundamentally put together in the right way. Time and again, correcting a Racket CS bug or adding a feature has turned out to be easier than expected.
OTOH, at least one R7RS implementation for Racket exists.
The GitHub page has the details about the installation (it's quite straightforward), how to use it and compatibility with the standard. https://github.com/lexi-lambda/racket-r7rs