3 ms·
I was disappointed that this isn't a complete working project, but I have to say the documentation is well-written and informative. This seems like a great lear
by burlesona 5y ago
I was disappointed that this isn't a complete working project, but I have to say the documentation is well-written and informative. This seems like a great learning project.
- chrisseaton 5y agoYeah, sorry, it was designed to be deep but not broad, and of course it's unfinished. It's a bit of a shame. The reading list is the starting point https://github.com/chrisseaton/rhizome#how-to-read-this-repository https://github.com/chrisseaton/rhizome#how-to-read-this-repo..., as is the code in lib of course. You can also run the experiments to generate programs before and after passes. Someone who knows about basic things like bytecode might like to start reading at https://github.com/chrisseaton/rhizome/blob/main/doc/construction.md https://github.com/chrisseaton/rhizome/blob/main/doc/constru... and may find that then starts to be new information.
- stormbrew 5y agoI did something very similar to this (though I never got to JITing to actual machine code, it was on my roadmap, and there were differences in goals[1]) back in the 1.8.x days and the reality is that writing any kind of ruby interpreter is an astoundingly complex task. It is not a simple language and it has a lot of awkward corners. I spent months getting it to the point where it could just properly run rubyspec, and then months more just making it pass a decent number of its tests. I can't imagine this has gotten any easier since then, it would be a hell of a project to make anything like this a complete working project. [1] it's kind of horrifying to me now but it's still up on my github at github.com/stormbrew/channel9 -- the actual goal was a multilanguage vm where you can implement languages in themselves. It was originally written in ruby and eventually the bytecode interpreter core was rewritten in C++. The OP project is much nicer, more directed, and better documented by far than what I wrote there though.