Christophe Rhodes from Steel Bank Common Lisp, a high performance Common Lisp compiler, is today’s guest writer on the Google Open Source Blog. SBCL participated as a mentoring organization for the first time in Google Summer of Code 2013 and will join us again in 2014.
Google’s call for organization proposals in the 2013 Summer of Code program spurred Steel Bank Common Lisp (SBCL) developers to organize their thoughts and come up project suggestions that could be reasonably achieved in the course of two to three months. The construction of the list was already a positive outcome, but SBCL being accepted into the 2013 program was a huge bonus, and allowed us to work with two students on two successful projects. Read more about them below:
Modernizing register allocation (student: Alexandra Barchunova, mentor: Paul Khuong)
Alexandra proposed to improve the register allocator in SBCL by implementing a classic algorithm known to perform well on practical C and Fortran programs. Adapting that algorithm, on top of the pre-existing register allocation infrastructure, took the better part of the summer. It also helped fix bugs and suboptimalities in related support code.
Because register allocation is such a fiddly problem, the remainder of Alexandra’s project period was spent exploring various tweaks and parameterisation for the high level iterative colouring/spilling logic described by prior research.
The new allocator has been forward-ported and cleaned up, and it can hopefully be merged in the near future. Alexandra plans to keep working on the allocator, and we hope to see the result hit official SBCL by the end of the year. Her work is at https://github.com/abarch/sbcl.
Efficient interpretation (student: Matthias Benkard, mentor: Juho Snellman)
Matthias’ project was to develop an efficient interpretation scheme for SBCL, starting from strategies such as Feeley’s use of closures in code generation. The idea was to develop a fast compiler from Lisp code to an internal representation while performing minimal compilation on the way, as well as an efficient interpreter of this internal representation. Matthias successfully developed these two components, and in addition, integrated this evaluation strategy into other parts of the Lisp environment.
Matthias did manage to give his mentor Juho some stress and strain — most notably by informing him, a week before the `pens-down date’, that a substantially different approach was likely to have some benefits, and that he was going to go for it. Fortunately, he got there in time, and it certainly did have additional benefits! Matthias’ interpreter is benchmarked as being around 10 times faster than the simple s-expression interpreter, and all is looking promising for a merge into the mainline SBCL in the near future. His code is available at https://github.com/benkard/sbcl.
It was a good summer for the SBCL team as a whole. Participation in GSoC has been a good morale boost as well as good general publicity for our organization. And there’s no shortage of challenging and fun projects left to tackle. We are also very excited to have been accepted as a mentoring organization for Google Summer of Code 2014!
By Christophe Rhodes, Org Admin for SBCL