Back in February, I visited Mozilla to present my research on dynamic language optimization and learn more about the architecture of the JIT compiler that powers Mozilla Firefox. The talk I gave at Mozilla was made available online and eventually linked on Reddit. This resulted in Andrei Alexandrescu, co-creator of the D programming language noticing my work and inviting me to present at DConf 2013. I accepted the invitation as this seemed like a great opportunity to get the word out about my research, network with programming language and compiler experts, and of course, to learn more about D.
Last week, I had the pleasure of attending DConf. The conference was hosted at the Facebook HQ in Menlo Park, California. The talks gave me more insight into the D language and the philosophy behind its design. I was a little worried about my own talk, trying to fit 70 slides into 55 minutes and touching on many different subjects: dynamic languages, Higgs, my research, a small critique of D, and the potential use of a JIT compiler for D's Compile-Time Function Execution (CTFE). It seems I managed to thread it together pretty well in front of the audience, however; I ended up receiving several compliments. I agreed to have the talk filmed, and so a video should appear on YouTube in the next few days. In the meantime, the slides are available here.
One of the things I touched on in my talk is the new approach I'm taking with the Higgs JIT. After running into some issues with tracing, I decided that a method JIT would make more sense, and so I spent a few days converting the Higgs JIT to be method-based instead; fortunately, this went surprisingly smoothly. I am planning on using a technique which should hopefully offer some of the same benefits as tracing, without the downsides. I call this technique context-driven block versioning. The idea is similar to that of procedure cloning, but done at a lower level (that of basic blocks). I plan on cloning/versioning block based on type information to remove much of the dispatch overhead.
Higgs interfacing with xlib:
On a different front, Molly Everett is still helping me grow Higgs. She's completed the implementation of a Foreign Function Interface (FFI) and used this to create a user-friendly wrapper for the C stdio functions. We've updated the README file on github to explain how this API can be used. Our hope is to improve the FFI API itself and eventually provide wrappers for graphics and sound libraries. We'd also like to devise a procedure for people to request the inclusion of libraries and tests they wrote into Higgs using pull requests.