73 lines
2.8 KiB
Plaintext
73 lines
2.8 KiB
Plaintext
%p
|
||
Ok, that was surprising: I just wrote a language in two months. Parser, compiler, working binaries
|
||
and all.
|
||
%p
|
||
Then i
|
||
%a{:href => "/typed/typed.html"} documented it
|
||
, detailed the
|
||
%a{:href => "/typed/syntax.html"} syntax
|
||
and even did
|
||
some
|
||
= succeed "." do
|
||
%a{:href => "/typed/benchmarks.html"} benchmarking
|
||
%p
|
||
So, the good news: it
|
||
%strong it works
|
||
%p
|
||
Working means: calling works, if, while, assignment, class and method definition. The benchmarks
|
||
were hello world and fibonacci, both recursive and by looping.
|
||
%p
|
||
I even updated the
|
||
%a{:href => "/book.html"}
|
||
%strong whole book
|
||
to be up to date. Added a Soml section, updated
|
||
parfait, rewrote the register level . . .
|
||
%h3#it-all-clicked-into-place It all clicked into place
|
||
%p
|
||
To be fair, i don’t think anyone writes a language that isn’t a toy in 2 months, and it was only
|
||
possible because a lot of the stuff was there already.
|
||
%ul
|
||
%li
|
||
%a{:href => "/typed/parfait.html"} Parfait
|
||
was pretty much there. Just consolidated it as it is all just adapter.
|
||
%li
|
||
The
|
||
%a{:href => "/typed/debugger.html"} Register abstraction
|
||
(bottom) was there.
|
||
%li Using the ast library made things easier.
|
||
%li
|
||
A lot of the
|
||
%a{:href => "https://github.com/ruby-x/salama-reader"} parser
|
||
could be reused.
|
||
%p And off course the second time around everything is easier (aka hindsight is perfect).
|
||
%p
|
||
One of the better movie lines comes to mind,
|
||
(
|
||
%a{:href => "http://www.imdb.com/title/tt1341188/quotes"}> paraphrased
|
||
) “We are all just one small
|
||
adjustment away from making our code work”. It was a step sideways in the head which brought a leap
|
||
forward in terms of direction. Not where i was going but where i wanted to go.
|
||
%h3#open-issues Open issues
|
||
%p
|
||
Clearly i had wobbled on the parfait front. Now it’s clear it will have to be recoded in soml,
|
||
and then re-translated into ruby. But it was good to have it there in ruby all the time for the
|
||
concepts to solidify.
|
||
%p
|
||
Typing is not completely done, and negative tests for types are non existant. Also exceptions and
|
||
the machinery for the returns.
|
||
%p
|
||
I did a nice framework for testing the binaries on a remote machine, would be nice to have it
|
||
on travis. But my image is over 2Gb.
|
||
%h3#and-onto-the-next-compiler And onto the next compiler
|
||
%p
|
||
The ideas about how to compile ruby into soml have been percolating and are waiting to be put to
|
||
action.
|
||
%a{:href => "http://book.salama-vm.org/object/dynamic_types.html"} The theory
|
||
looks good,but one has
|
||
to see it to believe it.
|
||
%p
|
||
The first steps are quite clear though. Get the
|
||
%a{:href => "https://github.com/whitequark/parser"} ruby parser
|
||
integrated, get the compiler up, start with small tests. Work the types at the same time.
|
||
%p And let the adventure continue.
|