So the benchmarks show that everything is faster with Chez Scheme, except VM startup is slower? That seems to be the prevailing trend in VMs.
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 [1].
I have a prototype of a shell solution to this here:
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 :)
Racket has a special place in my heart. Racket, together with https://htdp.org/, helped me reach a point where I felt my code truly reflected the structure I was modeling. It helped me focus on data flowing through my code, rather than blindly following "cookbooks". Racket is one of the very few languages that get out of your way, so that the model is almost tangible.
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.
Great news on the status! I use both Chez and Racket and I look forward to having the merged Chez backend being the default. I am going to try Racket CS soon, and hopefully I can immediately switch.
How would you compare / contrast Chez and Racket? I'd be interested in hearing your thoughts.
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[0]
- Chez is faster than Racket
Chez is a scheme, whereas Racket is basically a scheme but was renamed from PLT-Scheme because the authors/community felt it had strayed far enough from scheme that a renaming was a good idea.
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.
Did I read ~1000 packages? That's great for a small community and bigger than last time I checked a few years ago. It has a long way to go to get to CPAN or Nuget size though (captain obvious to the rescue :)). I think it demonstrates that the community is healthy though and I like the packages I saw by some brief browsing.
Will this work also help other alternative implementations like pycket [1]? As a layman it seems like making things more maintainable and less tied to C would help, but I'm curious if someone has more insights.
They are trying to move from their C-based implementation to Chez Scheme for maintainability. Since Racket programmers are familiar with Scheme, using a Scheme for the implementation has obvious advantages. They're also using it as an opportunity to "do things the right way this time".
> 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.
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
Well, Racket CS is "just" standard Racket running on Chez Scheme instead of the old Racket VM. Therefore no changes has been made to Racket (the language) - and thus there is no R7RS compatibility (which wasn't and still isn't a goal for Racket).
> As a superset of the language described in the Revised6 Report on the Algorithmic Language Scheme (R6RS), Chez Scheme supports all standard features of Scheme [...]
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 [1].
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
https://github.com/oilshell/shell-protocols/tree/master/copr...
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 :)
[1] https://mail.python.org/pipermail/python-dev/2017-July/14865...