Rewrite my toy language interpreter in Rust, an update
Im rewriting Grotsky (my toy programming language) in Rust, the previous implementation was done in Go. The goal of the rewrite is to improve my Rust skills, and to improve the performance of Grotsky, by at least 10x.
In a previous post I've outlined a plan to migrate Grotsky to a Rust based platform.
I was suposed to finish it more than a month ago :').
Of course, I wasn't able to do it.
I think my original estimation was actually very flawed, but I also didn't put enough work.
I failed my estimation, because I decided to skip the step of first writing a Tree-based interpreter in Rust. To go directly to a Register-based virtual machine.
The reason that is taking me so long is that I travel a lot. I've been a digital nomad for more than a year now. And when I finish working I prefer to go outside and explore the place where Im staying. I go to a lot of interesting places: at this time Im in Turkey and heading to Hong Kong, after that Im going to South Korea. So, it makes sense to actually experience the places where Im staying than to stay inside writing code.
Im here to propose a new roadmap that is more achivable with the time I have to work on this. And the idea is to finish it before the end of the year.
Plus, I recently heard some advice that I think it's worth to try: Work on someone for 15 minutes every day. I do have 15 minutes everyday where Im probably scrolling through social media or just consuming content. I can make better use of that time by putting it into this project.
Updated Roadmap
- Sep 30: Publish a blogpost about the memory model of the Rust implementation.
- Oct 15: Migrate automated tests to the new backend and make sure they pass.
- Oct 30: Implement stdlib in bytecode interpreter. Share results.
- Nov 15: Add ability to compile to bytecode and run from bytecode.
- Dec 30: Finish up everything and publish a blogpost update before end of year.
This is gonna be rough, because of the traveling and being jetlaged all the time. But I think the roadmap is easy enough so I can do it.
Thanks for reading.