Live data from Hacker News

Racket v9.0

blog.racket-lang.org

51–60 of 129 posts

Re: Racket v9.0

#51

Earlier quoted context omitted.

it's bootstrapped off of GHC. it was only using ChezScheme as an optimizing compiler backend. (i created a PR to refactor their build system to reify the bootstrap process all the way down from GHC. it basically generalized the normal build workflow of Idris2 to be able to animate the entire bootstrap chain from GHC. sadly, it was pretty much ignored, and later abandoned: https://github.com/idris-lang/Idris2/pull/199…

From the Idris 2 documentation: >> Can Idris 2 compile itself? > Yes, Idris 2 is implemented in Idris 2. By default, it targets Chez Scheme, > so you can bootstrap from the generated Scheme code, as described in Section > Getting Started. Also, check this talk: https://www.youtube.com/watch?v=h9YAOaBWuIk

well, i wouldn't call that beeing bootstrapped.

in this case the generated scheme code is just a strange form of executable file that happens to need ChezScheme to be executed.

i.e. an ELF64 idris2 linux binary vs. an idris2.scm file that needs ChezScheme to come alive.

as for Idris2 implemented in Idris2: well, yes, that's true for the current version of Idris2. but the first version of Idris2 was written in Idris1. and the first version of Idris1 was written in Haskell.

Re: Racket v9.0

#52
post #3

Racket is a fun language. My university uses the bundled teaching languages for first year CS courses. Some people really hate it, and others silently like it.

What was the name of the class?

Might have been Waterloo's Introduction to Functional Programming (CS 135). I have TA'd (technically ISA'd) that course several times and helped countless students in office hours. The struggling students didn't just hate Racket, they hated the whole HTDP philosophy of following a "design recipe" and writing documentation prior to implementing a function. Most of those struggling students essentially waited till the last minute to do the documentation, completely flouting the intention of the course.

I don't know if the strong students had the intended approach since they were never in office hours asking for help!

Re: Racket v9.0

#53

Earlier quoted context omitted.

I feel like version 9 just getting parallel threads kind of contradicts the homepage when it says Racket is "Mature" and "Polished".

This is addressed in the blog post linked from the release announcement: https://blog.racket-lang.org/2025/11/parallel-threads.html

That post is even more worrisome!

> To address larger problems with the implementation and to improve performance, we started in 2017 rebuilding Racket on top of Chez Scheme. Rebuilding took some time, and we only gradually deprecated the old “BC” implementation in favor of the new “CS” implementation, but the transition is now complete. Racket BC is still maintained, but as of August 2025, we distribute only Racket CS builds

So they're billing Racket as "Mature Practical Extensible Robust and Polished". Of those I will give them "Extensible" and "Robust". You can't say you're mature and polished and practical if you've just rewritten the entire thing and deprecated the legacy codebase to support new features that have been in other languages since forever.

Maybe they were talking about Racket 8.0 and didn't change the website yet?

Re: Racket v9.0

#54

Delimited continuations as a programming construct were somewhat of interest when I learned about them, but not even my university discussed them. I don't think I ever had a colleague that even ever heard of the concept, let alone applied it. Of the "smart people", they typically only have heard of plain continuations, if you are lucky. The debugger in Racket was useful when I used it years ago. Unfortunately, it's k…

Delimited continuations are quite similar to effect systems that seem to be getting a lot of interest lately. So who knows, maybe they will become more mainstream in the future.

Re: Racket v9.0

#55

Earlier quoted context omitted.

This is addressed in the blog post linked from the release announcement: https://blog.racket-lang.org/2025/11/parallel-threads.html

That post is even more worrisome! > To address larger problems with the implementation and to improve performance, we started in 2017 rebuilding Racket on top of Chez Scheme. Rebuilding took some time, and we only gradually deprecated the old “BC” implementation in favor of the new “CS” implementation, but the transition is now complete. Racket BC is still maintained, but as of August 2025, we distribute only Racket…

How rewriting something internally makes Racket not mature? Sounds like refactoring to me and with an extensive test suite there's nothing to be hysterical about.

Re: Racket v9.0

#56
post #17

Earlier quoted context omitted.

I've often heard this, but I don't really know of many people in the PL dev community who build their language in Racket. Also, I've taught a PL course and I tried to use Racket as a component, but students mostly just struggled with the LISP-y ness of it all, as they were primarily used to Java and Python. In all, I'm not really sure who Racket is for.

I suppose, Racket is for CS grads / post-grads / researchers / professors. That is, not for those who just learn CS basics, but for those learnèd enough. Students might use some simplified or customized languages produced with Racket. The syntax needs not be lispy; #lang algol60 is built in :)

Actually it's great for learning CS basics.

https://zoo.cs.yale.edu/classes/cs201/Spring_2021/lectures/R...

Re: Racket v9.0

#57

Earlier quoted context omitted.

That post is even more worrisome! > To address larger problems with the implementation and to improve performance, we started in 2017 rebuilding Racket on top of Chez Scheme. Rebuilding took some time, and we only gradually deprecated the old “BC” implementation in favor of the new “CS” implementation, but the transition is now complete. Racket BC is still maintained, but as of August 2025, we distribute only Racket…

How rewriting something internally makes Racket not mature? Sounds like refactoring to me and with an extensive test suite there's nothing to be hysterical about.

Maybe I just have a different working definition of these words. To me "mature" means "fully developed" and "polished" means "achieved a high level of refinement". To me, rewriting it all to introduce a major feature that fills in a longstanding hole in the language doesn't say "mature and polished". Because often times many bugs are introduced into a codebase on a major rewrite despite extensive test suites, especially at the interfaces between features. Typically people might prefer a mature codebase to one that's just been rewritten precisely because it hasn't been vetted over years. "mature rewrite" sounds like an oxymoron to me, and I guess no one else agrees but I find it strange. That is all.

Re: Racket v9.0

#58

I first experimented with Lisp back in the mid-80’s, and have returned to it time and again—not as a language for serious projects, but just as a way of learning new techniques and new ways to think about writing software. I’ve tried using Racket on a number of occasions going back to way before it was called that, and something about the software just puts me off. Perhaps I could get past that if I stuck with it, bu…

when you say "software" do you mean the language features or the tooling?

Re: Racket v9.0

#59
post #48

Speaking of lisp, if I wanted to use a lisp nowadays, what would be the best choice, common lisp, clojure or some scheme implementation?

Clojure is widely used, opinionated, promotes immutability, has lots of libraries and lively community. It is overall great language, really nicely designed, 100% worth using.

If you want the best performance and need to build executables without JVM then SBCL is a better choice, although probably takes longer to learn.

I wrote my fair share of Clojure, SBCL just had a look at.

Re: Racket v9.0

#60

Earlier quoted context omitted.

How rewriting something internally makes Racket not mature? Sounds like refactoring to me and with an extensive test suite there's nothing to be hysterical about.

Maybe I just have a different working definition of these words. To me "mature" means "fully developed" and "polished" means "achieved a high level of refinement". To me, rewriting it all to introduce a major feature that fills in a longstanding hole in the language doesn't say "mature and polished". Because often times many bugs are introduced into a codebase on a major rewrite despite extensive test suites, especia…

The rewrite started in 2017.

Fears about refactoring introducing bugs are fine and valid - but after eight years, haven't really happened. Seems the extensive test suite did its job.

This isn't a case of Python 2 v 3. Packages weren't broken en masse. The API remained stable.

If anything, the rewrite has proved that it is mature. Because they could perform a refactor without breaking everyone's everyday.

Post reply on HN