it has a name, but i'm not going to post it until i'm sure this has legs c:
i'm basically doing a trial run of a new project to learn two things about myself:
- do i want to work on improving existing programming languages, or do i want to make a whole new language?
- how do i feel about Rust compared to C++? if i spend enough time with it, is it realistic to swap over to it as my new go-to language? if so, does the answer to #1 change?
so! the project is a little toy compiler and virtual machine, written in Rust. i'm hoping to be finished with it in a couple months tops, at which point i'll decide if i want to make it a Real Project or if it was just a fun little exercise before going back to Crucible.
Rust thoughts
so far, Rust is really good! it feels a lot more mature than the last time i tried it. i did run into the occasional "you can only do this on the experimental branch of the compiler" hitch, but (A) none of those hitches have been severe and (B) i'm honestly fine with using experimental features for toy projects if i have to, i'm just trying to stay on the stable branch as long as i can.
it's a little awkward learning to phrase things in the way that rustc expects, but on the other hand, the error messages from this compiler are so good that debugging is honestly a breeze. i think i've never spent more than five minutes on a single error so far; most of them are just adding/removing borrows (still don't quite have The Sense for the implicit borrow cases yet).
moreover, i'm struck by how well everything just Works. every time i think "this is kind of a weird corner case, i wonder if they implemented that", they absolutely implemented that and several other corner cases i hadn't thought of. everything is very consistent and new information feels like it follows naturally from what i know already. it's neat!
Cargo, which used to be my big UX bugbear with Rust projects, has been completely unproblematic and actually pretty convenient to work with. i mentioned this before, but i really like that i can just add a couple lines to Cargo.toml and have a project structure that makes more sense to me than the default one. the package management functionality is amazing, too.
New vs. existing language thoughts
i don't have an end-to-end example running yet, so my thoughts aren't super deep here, but i've been enjoying designing the syntax of a new language. it's cool to get to add or change things that i always thought should be different in existing languages. i'll post more about the language itself once i have some examples actually in a runnable state, mainly so that i can guarantee that what i wrote is actually parseable and makes sense 

eggbug enjoyer