From 6a6471867870c5c688663c925e4cb9d1338dd34a Mon Sep 17 00:00:00 2001 From: Torsten Ruger Date: Sat, 21 Apr 2018 21:51:07 +0300 Subject: [PATCH] first version of next post --- app/assets/images/github-timeline-2018.jpeg | Bin 0 -> 56701 bytes app/assets/stylesheets/site.sass | 3 + ..._2018-5-1-four-years-and-going-strong.haml | 86 ++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 app/assets/images/github-timeline-2018.jpeg create mode 100644 app/views/posts/_2018-5-1-four-years-and-going-strong.haml diff --git a/app/assets/images/github-timeline-2018.jpeg b/app/assets/images/github-timeline-2018.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..d08f4e7bde149422c4534e44d705a94587d5b273 GIT binary patch literal 56701 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 LR!-Z1|4jS`0U$;Z literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/site.sass b/app/assets/stylesheets/site.sass index e4e352c..34e2c5f 100644 --- a/app/assets/stylesheets/site.sass +++ b/app/assets/stylesheets/site.sass @@ -44,6 +44,9 @@ ul.nav .menu width: 20% +.full_width + img + width: 100% .debug_pic border-color: white border-width: 8px diff --git a/app/views/posts/_2018-5-1-four-years-and-going-strong.haml b/app/views/posts/_2018-5-1-four-years-and-going-strong.haml new file mode 100644 index 0000000..26af132 --- /dev/null +++ b/app/views/posts/_2018-5-1-four-years-and-going-strong.haml @@ -0,0 +1,86 @@ +%p + After finishing the code, now i updated al the docs too! + +%h2 The rewrite +%p + Doing something 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. + %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 + =link_to "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.