Over the course of 2023, I made a simple programming language from scratch in C, called Cassette. I wanted something simple and focused that I could use for small programming experiments and art projects. I designed the syntax and implemented a parser, compiler, and virtual machine for it. The syntax is inspired by Elixir, but evolved over the project. The most useful part of the project was the dynamic memory system, which implements the basic types and operations. I used this in the parser and compiler for intermediate data structures until late in the project, and the dynamic typing greatly sped up experimentation for those.
I wrote Cassette in C, mostly for performance and because I wanted the option to port it to an old Macintosh SE/30 I have. Writing in C as a solo dev on a side project has been a lot of fun, and very instructive, but I think I prefer higher level languages like Elixir for professional work.
There’s still plenty of future work and bugs to fix, but I’m pretty happy with the result, and I’m looking forward to using it and improving it in the future. For now, though, I want to turn back to Elixir and the Web.