ruby-x.github.io/app/views/posts/2018/_04-22-four-years-and-going...

91 lines
3.1 KiB
Plaintext

%p
After
=link_to "finishing the code," , "/blog/a-dynamic-hello-world"
i updated all the docs too!
%h2 The rewrite
%p
Doing anything for the first time is not so easy. I have taught enough by now to see
how central
%em guidance,
the experience of another, is to the process of learning.
%br
I was so much thinking about Vm's in the beginning that a lot went sideways.
%p
Now it feels
=link_to "the abstractions", "rubyx/layers.html"
are coming into focus, the code is clean and relatively easy to understand.
%p
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
=ext_link "CodeClimate A", "https://codeclimate.com/github/ruby-x/rubyx/"
so that's ok.
%p
In the process i got much closer to the actual goal, which i'll go into more detail.
%h2 The docs
%p
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.
%h3 Architecture
%p
The
=link_to "Architecture" , "/rubyx/layers.html"
section given an overview over the new layers.
%ul
%li Ruby Simplified: Vool
%li Mom, a simple machine with object memory
%li Risc, the old abstraction of a CPU
%li Arm and Elf, to actually generate binaries
%li Parfait and Builtin to get the the system up
%h3 Parfait
%p
There is a separate document describing the classes needed to boot the system.
A little about the current state of Types and Classes.
%p
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
=ext_link "code." , "https://github.com/ruby-x/rubyx/blob/master/lib/risc/builder.rb"
%h3 Calling
%p
Since Calling is now done, i documented both the
=link_to "calling convention,", ""
and the way
=link_to "method resolution", ""
is done.
%h3 Interpreter
%p
Off course the
=link_to "Interpreter", "rubyx/debugger.html"
is still working, (since the Risc layer didn't change much) and is a large part of
the testing scheme.
%p
And i even go the
=link_to "Debugger" , "/debugger"
working again and integrated into the new site (which is now a rails app).
%h3 Misc
%p
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
=link_to "Misc section" , "/misc/index.html"
%h2 Next Steps
%p
The plan for the near future is something like this
%ul
%li
More complicated tests. Whole methods that do something and
test containing several methods. All just testing results.
%li Better test framework for testing binaries.
%li Blocks
%li Baby steps towards Stdlib
%p As one can see, work happens when i have time and inspiration.
%p.full_width
=image_tag "github-timeline-2018.jpg"
But even after 4 years, i haven't given up yet :-)
Though i may have given up on any time estimates.