Hadron SuperCollider Language
GitHub Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

2024 February Update

Hadron Update 2024 February

Hadron has a new logo design, created by Peter Hague. I wanted something evocative of the SuperCollider logo, but representing a fresh take on things. I feel Peter did a great job and am very grateful for his work.

Parser (mostly) Parsing

Using the ANTLR-generated Sparkler parser for comparative testing really helped me to build confidence in the parser, and it’s code complete, except a few more exotic constructs like list comprehensions and multi-variable assignments. Both are pretty self-contained parsing projects with a ton of similar worked examples already in the parser, so would make great first projects to tackle if you’re considering diving in to Hadron contributions.

I’ve fuzzed the parser a bit and fixed a few obvious flaws it found, but further fuzzing is always welcome. Try it out and please share any findings you generate!

The big missing piece of the parser is diagnostics. One of the best things about hand-writing a parser is the opportunity to provide handwritten feedback to the user about parsing errors. I’ve stubbed out a preliminary implementation but there’s a ton left to do here. Error recovery is also not started, although I do have some design ideas started in this space.

Server

I completed the text model, so now Hadron can efficiently maintain an in-process copy of text under edit. The goal was to reduce latency on parsing and further analysis, by skipping large copies and allowing Hadron to understand what text had actually changed. I plan to start fuzzing the server API next.

hadron.run

I’ve been pushing early prototypes of the Hadron WASM work here. I’d expect this site to stay pretty broken for a while, but the goal is to facilitate code sharing and SuperCollider hacking in a manner similar to Compiler Explorer does for C++ and Rust. We’ve a long way to go, but it’s exciting to see the site up and serving bits, even if they are somewhat broken and woefully unfinished bits :).

What’s Next

Generally the focus is going to be on end-to-end compilation and interpretation of a few very simple sclang expressions. This requires building some nontrivial infrastructure, like a prototype garbage collector and dispatch system. I want to get enough of the interpreter working that I can build out the integration testing design, and then widen the platform from there.