10 ms·
Racket v9.0
- webdevver 10mo agoi only know about racket because Carmack was doing Oculus stuff with it once 10 years ago: https://youtu.be/ydyztGZnbNs?t=412 https://youtu.be/ydyztGZnbNs?t=412
- gabrielsroka 10mo agoHN is written in Arc, and Arc is (was?) written in Racket. https://en.wikipedia.org/wiki/Arc_(programming_language) https://en.wikipedia.org/wiki/Arc_(programming_language)
- superdisk 10mo agoIt was actually ported to a Common Lisp based implementation a while back. https://news.ycombinator.com/item?id=41683969 https://news.ycombinator.com/item?id=41683969
- vindarel 10mo agoArc was re-written to Common Lisp (SBCL) around last year, for performance reasons. > [Clarc] is much faster and also will easily let HN run on multiple cores. It’s been in the works for years, mainly because I rarely find time to work on it, but it’s all pretty close to done. > there’s now an Arc-to-JS called Lilt, and an Arc-to-Common Lisp called Clarc. […] > open-sourcing the Arc implementation (i.e. Clarc) would be much easier [than the HN site]. [Because…] more and sources of Dang quotes: https://lisp-journey.gitlab.io/blog/hacker-news-now-runs-on-top-of-common-lisp/ https://lisp-journey.gitlab.io/blog/hacker-news-now-runs-on-...
- varun_ch 10mo agoRacket 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.
- epolanski 10mo agoAnd all of them agrees to never use it after university, which is quite telling.
- Zambyte 10mo agoAgree? Or maybe none of them graduate into a role where they get to decide what language to use?
- dleary 10mo agoEveryone gets to choose which language they use for their personal projects. Where are all the Racket personal projects? N.B. I say this as someone who personally contributed small fixes to Racket in the 90s (when it was called mzscheme) and 00s (when it was called PLT-Scheme).
- linguae 10mo agoI view Racket as an academic language used as a vehicle for education and for research. I think Racket does fine in its niche, but Racket has a lot of compelling competitors, especially for researchers and professional software engineers. Those who want a smaller Scheme can choose between plenty of implementations, and those who want a larger language can choose Common Lisp. For those who don't mind syntax different from S-expressions, there's Haskell and OCaml. Those who want access to the Java or .NET ecosystems could use Scala, Clojure, or F#. There's nothing wrong with an academic/research language like Racket, Oberon, and Standard ML.
- zelphirkalt 10mo agoI wish Standard ML had a strong ecosystem and things like a good dependency manager/package manager. I really liked it. But there is even less of an ecosystem around it than some other niche languages, and I've gone into the rabbit hole of writing everything myself too often, to know that at some point I will either hit the limit of my energy burning out, or the limits of my mathematical understanding to implement something. For example how to make a normal distribution from only having uniform distribution in the standard library. So many approaches to have an approximation, but to really understand them, you need to understand a lot of math. Anyway, I like the language. Felt great writing a few Advent of Code puzzles in SMLNJ.
- nine_k 10mo agoLisp is its own meta-language, and Racket is even more meta. It's a language construction kit, essentially.
- ModernMech 10mo agoI'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.
- nine_k 10mo agoI 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 :)
- Jeff_Brown 10mo agoYou list only academic positions. Has no popular software been written in it yet?
- hit8run 10mo agoWhat is the use case for this?
- gus_massa 10mo agoIt's a general purpouse language. Reusig an old comment, I used it for * A bot to reply emails that uses IMAP, SMTP and web scrapping. (It's not 100% automatic. It replies only the easy cases and adds labels so I reply the tricky ones.) * An program to cleanup Moodle backups that uses gzip and xml. I compiled it and send it to my coworkers. (The backups have too much info, so before restoring it in another site it's better to remove the unused parts.)
- Zambyte 10mo agoAs the other reply said, it is general purpose. It has a focus on education tooling, and language design (languages can be easily implemented on Racket)
- hatmatrix 10mo agoWhat are some difference between the education tooling around Racket and that which enables "industrial" applications Common Lisp is known for?
- spdegabrielle 10mo agoThat's a good question. The education tooling is all optional (so their only impact is perceptual) DrRacket, teaching languages, and supporting libraries are all optional. (see Minimal Racket - just the compiler and package manager https://download.racket-lang.org/releases/9.0/#:~:text=SHA256%3A%C2%A039f035f90e20b531203988ab5b661fd9b15edbe58fc6806a1ee762dcc2ba53f9-,Minimal%20Racket,-%3F%C2%A0 https://download.racket-lang.org/releases/9.0/#:~:text=SHA25... ) I'd like to know what tooling is missing from Racket that is available in major general purpose languages like C#, Java, or Common Lisp implementations?
- evdubs 10mo ago
- theoldgreybeard 10mo agoRacket is awesome. Really fun language and a good lisp for learning. Still have core memories of doing assignments in Racket with the Dr. Racket IDE
- kryptiskt 10mo agoThe big news here is that Racket now can run threads in parallel. While there were ways to get parallelism before (like places), this is much more lightweight and familiar. Anything that expands the areas where Racket is viable is good news to me since I like writing stuff in Racket.
- ModernMech 10mo agoI feel like version 9 just getting parallel threads kind of contradicts the homepage when it says Racket is "Mature" and "Polished".
- spdegabrielle 10mo agoThis is addressed in the blog post linked from the release announcement: https://blog.racket-lang.org/2025/11/parallel-threads.html https://blog.racket-lang.org/2025/11/parallel-threads.html
- ModernMech 10mo agoThat 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?
- nesarkvechnep 10mo agoHow 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.
- wduquette 10mo agoI 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, but I just can’t see myself writing a large project using Racket.
- zem 10mo agowhen you say "software" do you mean the language features or the tooling?
- wduquette 10mo agoThe tooling.
- brabel 10mo agoI liked it many years ago but when I noticed how slow and heavy my code was I left it. It manages to be slower than Python. Perhaps the Chez Scheme rewrite helped with that but now if I need a Lisp I have Common Lisp which is super fast and lightweight enough.
- gus_massa 10mo agoIt's usually faster than Python for numeric stuff, and has a similar speed for strings. See for example https://benchmarksgame-team.pages.debian.net/benchmarksgame/index.html https://benchmarksgame-team.pages.debian.net/benchmarksgame/... But if you run the code inside the default IDE call DrRacket, you must go to the menu Language>Choose_Language... then click "Show_Details" and disable "Debugging". With debugging enabled, you get nicer error messages, but it blocks a lot of optimizations and the program get slow.
- igouy 10mo agoSee for example https://benchmarksgame-team.pages.debian.net/benchmarksgame/box-plot-summary-charts.html#chart-fastest-more https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
- YouAreWRONGtoo 10mo agoDelimited 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 kind of difficult to beat an entire planet cranking out libraries in other languages as many interesting programs are written for an ecosystem; if 90% of your project is building FFIs to make something work, perhaps you can better just choose the language of fools dun jour. I don't think Scheme is the most academic language, today. Such honor would go to a language supporting a computable version of homotopy types, which I would guess only 1000 people in the world would be capable of using assuming production grade implementations (of which none exist).
- attila-lendvai 10mo agoback in the day when we wrote enterprise bullshit in common lisp (!), we had put together a proof of concept where we used delimited continuations to write business processes. business processes were written in basically full common lisp with very few limitations, and with a few extra primitives to use (and 10x slower due to being interpreted, but that didn't matter at all). when a process reached a point where it was waiting for some external event (e.g. displaying a GUI for a user and waiting for their feedback, or sleeping until a deadline), then it got serialized into the (SQL) database. it was pretty cool! when a user logged in, there was a list of processes waiting for him that he could click to see and interact with. all this with the transactional guarantees of the sql backend because the business objects were also stored in the same database. https://github.com/hu-dwim/hu.dwim.delico https://github.com/hu-dwim/hu.dwim.delico was the continuation lib, hu.dwim.perec was the object relational mapper, and hu.dwim.serializer was used to turn CL objects into SQL blobs (with some properties extracted as reified SQL schema elements to be able to search for the suspended processes).
- hencq 10mo agoDelimited 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.
- cess11 10mo agoBogdan Popa has quite a bit of interesting information about Racket on his blog. https://defn.io/ https://defn.io/ I look forward to using the new threading.
- aap_ 10mo agoI've wanted to try racket a few times but always found the "IDE" to be really unintuitive, clunky and weird. What gives? Is that by design or is it just that nothing better has been created so far?
- soegaard 10mo agoGo to racket-mode.com for the very nice Emacs-integration.
- someNameIG 10mo agoGeiser works well for Racket also.
- spdegabrielle 10mo agoThe IDE is not the language. Racket has good support in VSCode (via magic Racket and the Racket langserver), Emacs (Racket Mode) and Vim. https://download.racket-lang.org/releases/9.0/doc/guide/other-editors.html https://download.racket-lang.org/releases/9.0/doc/guide/othe... The Racket Langserver obviously enables use in other editors that support the LSP. https://github.com/jeapostrophe/racket-langserver https://github.com/jeapostrophe/racket-langserver For editors that lack LSP support, scheme support is generally sufficient. All that aside, DrRacket the IDE has some nice features that just don't exist in other editors. I don't know of another IDE that has an integrated macro stepper.
- mono442 10mo agoSpeaking of lisp, if I wanted to use a lisp nowadays, what would be the best choice, common lisp, clojure or some scheme implementation?
- yonki 10mo agoClojure 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.
- chamomeal 10mo agoAlthough if your executables are script-like, you can use babashka, which lets you write shell scripts in clojure. Good stdlib, full macro support, shell out to other commands, just a great tool. I love babashka. I could never convince my company to use clojure for a big project, so now I’m exposing all of my coworkers to clojure by making a set of nice specific-to-our-company utilities in babashka.
- dinkleberg 10mo agoI’ve been playing around with Janet for scripting use cases and it’s pretty cool.
- spdegabrielle 10mo agoRacket of course! More seriously, there is no one ‘best lisp’. What you use depends on the needs of the project. That might mean Racket, Guile, Clojure, SBCL or something else. It all depends on what you need to do.
- kscarlet 10mo agoCommon Lisp. It's the hacker-est Lisp with a thriving hacker-est community.
- mark_l_watson 10mo agoI love Racket. Just for fun, I wrote a Racket book, read online: https://leanpub.com/racket-ai/read https://leanpub.com/racket-ai/read For Scheme languages I recommend Racket or Gerbil. Racket is great for beginners since the IDE is pretty good and the standard libraries and contributed libraries are good. Gerbil is good for systems programming. network utilities, etc.
- GeoffKnauth 10mo agoI just bought your book. Thanks for writing it. I look forward to reading it!
- prakashrj 10mo agohttps://youtu.be/LXhsutNKhec?si=OTC6sn5GNp1-ZxqU https://youtu.be/LXhsutNKhec?si=OTC6sn5GNp1-ZxqU Racket is only hard if it's not your first language. Kids can also learn it.
- soegaard 10mo agoA wonderful video!
- prakashrj 10mo agoThanks for helping my son learn it.
- aeonik 10mo agoVery impressive video. This is making me want to start my daughter out on scratch or Racket when the time comes. His keyboard sounds amazing too. Buttery smooth pearls.
- prakashrj 10mo agoAfter learning to type, he learned vim through https://vim-adventures.com/ https://vim-adventures.com/ Just FYI, if you want to help your daughter as she grows up. Typing skills, VIM and Racket. He doesn't know anything else about computers.
- nish__ 10mo agoI want to thank Go for popularizing coroutines. Seems like every language now has adopted it and I love that.
- swaits 10mo agoGo definitely popularized concurrency for the modern era, but coroutines themselves are ancient tech. Melvin Conway coined the term in 1963 and Simula had them by '67. It’s also worth noting that the specific 'coroutine' model most languages are adding today (JS, Rust, Python) is based on C#'s async/await. Go actually rejected that approach in favor of Green Threads (Goroutines, not coroutines), so technically it popularized the alternative to what everyone else is doing.
- pjmlp 10mo agoAnd green threads were already present in JVM early days, with red threads being the actual OS threads. Solaris LWP and Windows Fibers were two other examples of OSes providing the infrastructure for a task based programming, although they had some issues.
- pjmlp 10mo agoOnly for the newer generation. Besides the sibling comment, we already knew them from Solo Pascal and Modula-2 among other 1980's languages. Co-routines were a famous way to simulate paralelism when you only got a single CPU.
- kunley 10mo agoBtw reading Racket documentation is a pleasure each time, both visually and intellectually. So great effort
- josefrichter 10mo agoFor all lisp lovers tackling concurrency and parallelism, a reminder there's also LFE - a lisp for Erlang VM. Which happens to have solved all these issues decades ago. LFE was created by one of the Erlang co-creators. https://lfe.io https://lfe.io