Way back in the days of 2002 I wrote two silly compilers: A brainf*ck .Net compiler and an Ook# .Net compiler, the latter specifically of interest to orang-utans.
The past few days my interest in compilers has resurfaced. There's an itch to scratch, and this time I'm thinking about a serious compiler that should compete with erlang. Possibly by compiling into erlang bytecode like Reia does, or by leveraging some other existing VM platform such as Lua or Neko. Of course, grand ideas, when am I retiring again?
- Read _why's poetry tests in his new language potion. Fantastic commit messages!
- Read & played with Ragel. Classic writeup.
- Peeked the code of the hate promoting Utu platform. The design document is noice!
- Played some more with erlang.
- Read tons of stuff on compiler technologies.
- Browsed code of Lua, Neko VM and Reia implementations. Still wouldn't use any of them. But a lot can be learned from reading their code.
- Browsed the code of RabbitMQ, an impressively looking message queueing system on top of erlang OTP.
- Watching renewed developments in the functor gem: functional progamming based on pattern matching in ruby. Thinking of creating a version that is implemented by rewriting the AST of ruby.
- Dabbled with johnson, a javascript interpreter that runs within ruby. Want a headless browser with javascript support and support for the DOM and Ajax functions that runs on ruby (not jruby) to test the whole stack of my web apps easily. It should work by combining johnson with mechanize and env-js. Cucumber/Webrat combo isn't cutting it for me.
- Meanwhile submitting various patches to shoulda, and adding heaps of basic tests to a rails app using shoulda (macros only), factory_girl, sham with faker, matchy for rspec'ish BDD, pending and rr for using test doubles. I'm done with rspec, think it's too bloated, too slow. Like simply using expectations best when developing components/gems, not so much for testing the models, controllers or the whole stack of a webapp.
- Reread parts of the LISP documentation.
- Played with a simple distributed mapreduce function in ruby. Which incidently is currently broken because of this bug in ParseTree which doesn't seem to get any love.
- Dabbled a bit with the code of ruby2ruby.
... and then I went back to do some awfully mundane stuff. Like getting dressed and brushing my teeth.
I found your entry through my referrer log... The best bet if you want to play with compilers is to just keep writing them... My current series is the latest in a long line, and it's taught me a lot not only about compilers but about software development in general - programming a compiler gives you a whole different level of understanding for language trade-offs.
— Vidar Hokstad on February 13, 2009 at 6:01 pm #