10 ms·
Racket branch of Chez Scheme merging with mainline Chez Scheme
- HwyarkGnuor 3y agoIs any software of note built on top of either software? All i can think of are these forums which, while enormously culturally influential, seem unremarkable from a technical perspective.
- sidkshatriya 3y agoEven though your question is a bit pointed, I think it is worth understanding what software is built upon Chez and Racket. The answers would be instructional to everyone. Here is some stuff, that I _do_ know -- there is probably a lot more usage in the wild: Racket is used extensively in education and research relating to Scheme and programming languages in general. Lots of work on gradual typing, programming language semantics comes out of the Racket community. Many colleges around the world use Racket. Scheme/Racket is very pared down language and lends itself to this kind of work -- the principles of whatever you are studying shine through quite easily in a way that it may not if you were using C, Rust, Python etc. in the problem domain. As noted elsewhere in the comments, Idris 2, an important dependently typed language outputs to Chez/Racket Chez. Previously it output C code which was then compiled. See: https://en.wikipedia.org/wiki/Racket_(programming_language)#Applications_and_practical_use https://en.wikipedia.org/wiki/Racket_(programming_language)#... In general, Chez is probably a great language to use as a "base". It lends itself to embedding and is performant. Lua and some Javascript implementations come to mind as comparables. In general, we might not know much about Chez being used a lot in the wild because it could be tucked deep into various proprietary company products.
- vincent-manis 3y agoI do not know why Cisco hired Kent Dybvig, the prime designer/implementer of Chez Scheme, or why they chose to host its repo. I suspect that answering this question would reveal significant production programs written using Chez Scheme.
- Bogdanp 3y agoI don’t know about “of note”, but here are a couple pieces of software I’ve built with Racket: * https://franz.defn.io/ https://franz.defn.io/ * https://remember.defn.io/ https://remember.defn.io/ * https://defn.io/2023/08/10/ann-franz-source-available/ https://defn.io/2023/08/10/ann-franz-source-available/ HN itself runs on Racket.
- mark_l_watson 3y agoWonderful projects! I wish I could give you more than 1 upvote.
- Bogdanp 3y agoThank you!
- jjtheblunt 3y agoYou just make me realize, you effectively can. In the way those Dyson bladeless fans pull more air through. In your case, many folks know you (some from UIUC too like me) and know your upvote is worth reading, ending up upvoting too.
- jjtheblunt 3y agop.s. s/make/made/ courtesy of keyboard typo
- HwyarkGnuor 3y ago[dead]
- bmitc 3y ago> HN itself runs on Racket. Isn't it an ancient version of Racket, though?
- velcrovan 3y agoBut doesn’t it also work fine, whatever version it uses?
- tmtvl 3y agoI believe mediKanren (<https://www.uab.edu/news/research/item/10382-a-high-speed-dr-house-for-medical-breakthroughs https://www.uab.edu/news/research/item/10382-a-high-speed-dr...>) runs on Racket.
- ashton314 3y agoVery exciting stuff! I submitted a link to the actual MR when this happened; wasn’t discussed much at the time: https://news.ycombinator.com/item?id=37932016 https://news.ycombinator.com/item?id=37932016 (This current submission is really nice; you get to hear more from Matthew about what’s going on.) Chez Scheme (pronounced “shay-scheme”) is the most performant and compliant Scheme implementation out there. [1] For a long time it was closed-source, but was recently open-sourced. It now forms the foundation of the Racket language. (So, I guess that means HN relies on it, provided Arc is using a recent version of Racket.) I asked Matthew why he picked Chez to base Racket off of, and I want to say that he picked it because it implemented continuations really really well and had a good garbage collector too. I could be wrong. [1]: https://ecraven.github.io/r7rs-benchmarks/ https://ecraven.github.io/r7rs-benchmarks/
- ReleaseCandidat 3y agoIdris has changed from compiling to C to Chez (or Racket) with Version 2 https://youtu.be/h9YAOaBWuIk?si=gkm2d_KLa3d9eoy5 https://youtu.be/h9YAOaBWuIk?si=gkm2d_KLa3d9eoy5
- neilv 3y agoIt's encouraging to see all this solid (if unglamorous) software engineering work happening, for a powerful platform that also has active research going on. (Maybe I'll find a way to resume using Scheme/Racket. The last few years, I've been using Python, JS, and Rust, partly for employability reasons. They have their merits, but I'm aware of what I'm missing.)
- ltac 3y agoIs it a good idea to use Chez Scheme to go over SICP? Meaning, is it still standard to enter into compatibility mode to do so? Thanks.
- kkylin 3y agoIt's been a long time since I went through SICP, so someone with more recent knowledge should correct me. But I think you can get through most (almost all?) of SICP with what's in the Scheme standard, which is a pretty small subset of almost any Scheme implementation. In particular, I don't recall much that uses anything specific to MIT Scheme.
- neilv 3y agoWe made Racket support for SICP, which is the next best thing to using MIT Scheme for SICP: https://docs.racket-lang.org/sicp-manual/ https://docs.racket-lang.org/sicp-manual/ (SICP Scheme isn't quite standard, and there's also some SICP-specific libraries.)
- aragonite 3y agoI'll always have a soft spot for Racket, because of how the IDE literally draws arrows for you, overlaid on top of the code, linking the various occurrences of a (hovered) variable together.[1][2] Seriously, how cool is that? Alas, it's unclear how to begin to implement such a feature in a performant way in a DOM-based editor like vscode (I'm not a web developer, so maybe I'm wrong about this.) [1] Example gif: https://docs.racket-lang.org/define-attributes/examplecodearrows.gif https://docs.racket-lang.org/define-attributes/examplecodear... [2] > Lexical Structure: The lexical structure is shown with arrows overlaid on the program text. When the mouse cursor passes over a variable, DrRacket draws an arrow from the binding location to the variable, or from the binding location to every bound occurrence of the variable.
- ReleaseCandidat 3y agoI don't think you can do that in a "normal" VS Code editor window, but it is possible in a custom one (where you have to do "everything" yourself): https://code.visualstudio.com/api/extension-guides/custom-editors https://code.visualstudio.com/api/extension-guides/custom-ed... (so, not much chance of adding that to my Chez extension ;)
- pjmlp 3y agoThe coolness of Lisp Machines and Interlisp-D, which is where Raket took its inspiration from.
- sitkack 3y agoThe Racket community is just full of wholesome folks and it is contagious. Racket makes more awesomeness in the world.
- jboynyc 3y agoYes, there are many lovely people, but it is best not to romanticize the community as a whole -- it's got some issues, too: https://beautifulracket.com/appendix/why-i-no-longer-contribute-to-racket.html https://beautifulracket.com/appendix/why-i-no-longer-contrib...
- sillysaurusx 3y agoApropos nothing, can we get SICP added to SCP? I’ve always thought it would be a fantastic entry. "Artifact SCP-31415, code name SICP, is a book on an obscure programming language. Students have been observed to die of fright when confronted with it, and those that escape have visible scars from what appear to be tiny blade-like curved objects. Some, however, end up becoming superstar programmers; therefore it’s been an object of fascination for the ages…"
- KingMob 3y agohttps://scp-wiki.wikidot.com/scp-061 https://scp-wiki.wikidot.com/scp-061 https://github.com/KingMob/SCP-061 https://github.com/KingMob/SCP-061
- wrx100 3y agoDoes this mean I can now use all/lots of Racket libs in Chez?
- ReleaseCandidat 3y agoNo. But you (may?) no longer need the special Racket Chez to build and run Racket.
- deleted 3y ago[deleted]
- cellularmitosis 3y agoOne of the things which the racket fork added was resurrecting support for OS X on PowerPC. Very cool to be running the fastest scheme on my old iMac!
- rurban 3y agoTitle. Already merged about two weeks ago
- nurkalam 3y ago[flagged]
- devnull3 3y agoI had a look at https://racket-lang.org https://racket-lang.org. Where we can download this build? [1] [1] Assuming that the merge has happened since the announcement was on Oct 16
- soegaard 3y agoThe main line of Chez Scheme is here: https://github.com/cisco/ChezScheme https://github.com/cisco/ChezScheme There is more work to be done before release 10.0.
- aseipp 3y agoRacket today and for several years now has already been using Chez Scheme, so any of the latest versions you download will be built that way. On all platforms. So, just download away, and you're good to go. Rather, this announcement is about going the other way around, and about merging changes back into Chez: when Racket was migrated to Chez several years ago, as a matter of practicality they had to fork it and significantly modify it to maintain feature parity with the existing implementation. The changes were very large; multiple new supported ISAs and ABIs, new compiler optimizations, an entirely new build system, etc. For years, nobody was totally clear about what would happen with this fork, but the hope was that it would all go back to the upstream Chez codebase. That is finally happening, and so this post is not about merging code from Chez into upstream Racket, but rather merging code from Racket back into upstream Chez. The hope is changes will soon be available as a new major Chez Scheme release, version 10.0, and so the fork and the upstream version will finally be unified. (Racket will likely continue to use its own fork of Chez scheme as a practical matter of engineering, but presumably it will only need very minor tweaks and small patches, if any, for it to work.)
- dark-star 3y agoTIL that ChezScheme seems to be a Cisco project. Interesting...
- kryptiskt 3y agoCisco bought Kent Dybvig's company some years back and open sourced Chez Scheme (they likely have more profitable products than a performant Scheme compiler and don't need the thousands they could make on such a product).
- randomascoward 3y agoIsn't the title "upcoming merge to create Chez Scheme v9.9.9"?
- giancarlostoro 3y agoDoes this mean that the Racket and Chez teams will merge as well? I always liked Racket, and use it on spare time once in a blue moon (not enough hours in the day), but I am out of the loop on Chez vs Racket.
- samth 3y agoIt means that Matthew Flatt will become a committer to Chez Scheme, and they plan to include Racket-driven changes. Of course, we plan to maintain Chez Scheme's high standards for quality and preserve all the things about it that are good outside Racket as well.
- giancarlostoro 3y agoThanks for the insight! I love Racket, I just never have enough time for it. I read parts of Realm of Racket some years back, and it taught me some CS concepts that I forgot after college, which have stuck with me, and have helped me answer questions in interviews weirdly enough. I wish CS was taught in the context of "let's make a game" as one option because learning the concepts in such a way for some (like myself) is fantastic, you'll never forget it.
- LAC-Tech 3y agoWasn't chez scheme the dialect that let you compile scheme code at runtime as a first class thing? I remember looking into this stuff when I had it in my idea to make a configurable text editor. I know racket is very static in this regard.
- samth 3y agoBoth Chez and Racket allow you to compile new code at runtime.
- LAC-Tech 3y agoIs that new? I'm sure I looked into this last year and it couldn't be done.
- samth 3y agoIt is certainly not new. There are some things that Racket doesn't allow, but they are very much not "compile new code". For example, you can't replace the meaning of existing modules at runtime, nor can you modify the implementation of functions that are on the stack already (both things that some runtime systems for some languages allow). But `eval` has been there since the beginning.
- ska 3y ago> Wasn't chez scheme the dialect that let you compile scheme code at runtime as a first class thing? IIRC every lisp and scheme I've used has supported this. It's pretty typical, but not universal.