Hi there, I'm Blake Anderson - the creator of Rhovas. Since this page is about the history of Rhovas, I'll take the opportunity to use first-person 'I' here as I go through the story. Let's get started!
The early motivation for creating a programming language came in December 2017, where I considered making
a scripting language for custom behavior in a Minecraft plugin (which I ultimately decided wasn't
practical). Later on, after having a plugin crash from mutating a List
object that was actually an ImmutableList
, I began considering what a
language designed for mutability would look like.
It wasn't until Summer 2018 when I started seriously planning out a language. The first notes for Rhovas
were from July 11 (considered the anniversary of the language) and early problems I explored were
mutability, error handling, and dependent types (not that I knew what they were at the time). The name
Rhovas came about a week later, which was chosen due to the file extension (.rho
,
itself from density for fluid dynamics) and had a similar syllabic pattern with Kotlin. The name stuck,
helped by its uniqueness for SEO.
Over the next few years I worked on many iterations of the language and continued to learn more about programming language design/implementation as well as the particular problems I was trying to solve. Crafting Interpreters was by far the most helpful resource early on, and I also used ANTLR for a while before opting to handwrite a recursive-descent parser. I also discovered the r/ProgrammingLanguages Discord, which really helped me when it came to language design.
Most of these attempts were built for things like hackathons or my senior project and didn't make it too far. I struggled a lot with managing scope for class instances - especially with inheritance - and never really made much progress with static analysis beyond the basics. I also tried a few times to compile to Java bytecode or just transpile to Java directly, which worked okay for simple features but was overall more complex than I could handle at the time. Nonetheless, each time I made it just a bit further and got really good at writing parsers.
In August 2020 I participated in the Repl.it LangJam (Submission) where I worked full-time to rebuild Rhovas from scratch and tackle a few new ideas that I had never gotten to. The largest one here was embedded DSLs, which has since become a key feature as well as being one of my main research areas.
One year later, the current iteration of the language (and likely last before self-hosting) was started. Unlike the previous attempts, I kept the core language down to just statements and expressions before working on static analysis, and that really helped get through that hurdle. Additionally, I also emphasized strong test coverage which made refactoring much easier when I inevitably ran into issues.
Nowadays, Rhovas is really starting to come together and we have a growing community on Discord too. There's still some core challenges that need to be solved before the language is really usable, but I'm making progress faster than ever and things are definitely looking up!