Four years and going strong ( 2018-04-22 )
After finishing the code, i updated all the docs too!
The rewrite
Doing anything for the first time is not so easy. I have taught enough by now to see
how central
guidance,
the experience of another, is to the process of learning.
I was so much thinking about Vm's in the beginning that a lot went sideways.
Now it feels the abstractions are coming into focus, the code is clean and relatively easy to understand.
During this latest wobble, maybe 500 commits in all, almost everything above the Risc layer was rewritten. At the low point, i was down to just over 400 tests, but now, back strong, at over 800. That's 94% coverage with a CodeClimate A so that's ok.
In the process i got much closer to the actual goal, which i'll go into more detail.
The docs
Now i have also cleaned up all the documentation. This does not mean that everything is documented, but i hope one can get a good idea from the docs, and then just read the code.
Architecture
The Architecture section given an overview over the new layers.
- Ruby Simplified: Vool
- Mom, a simple machine with object memory
- Risc, the old abstraction of a CPU
- Arm and Elf, to actually generate binaries
- Parfait and Builtin to get the the system up
Parfait
There is a separate document describing the classes needed to boot the system. A little about the current state of Types and Classes.
But it should definitely be expanded, and there is nothing about Builtin. Builtin is the way to write methods that can not be expressed in ruby. And since writing them got so messy i wrote a DSL, which is only documented in code.
Calling
Since Calling is now done, i documented both the calling convention, and the way method resolution is done.
Interpreter
Off course the Interpreter is still working, (since the Risc layer didn't change much) and is a large part of the testing scheme.
And i even go the Debugger working again and integrated into the new site (which is now a rails app).
Misc
Finally i cleaned up the old mumble jumble docs and sorted them a bit into what is ideas, plans and just background info, in the Misc section
Next Steps
The plan for the near future is something like this
- More complicated tests. Whole methods that do something and test containing several methods. All just testing results.
- Better test framework for testing binaries.
- Blocks
- Baby steps towards Stdlib
As one can see, work happens when i have time and inspiration.
But even after 4 years, i haven't given up yet :-) Though i may have given up on any time estimates.