GSoC/GCI Archive
Google Summer of Code 2013

Steel Bank Common Lisp

Web Page: http://www.sbcl.org/gsoc2013/ideas/

Mailing List: https://lists.sourceforge.net/lists/listinfo/sbcl-devel

Steel Bank Common Lisp (SBCL) is a high performance Common Lisp compiler. It is open source / free software, with a permissive license. In addition to the compiler and runtime system for ANSI Common Lisp, it provides an interactive environment including a debugger, a statistical profiler, a code coverage tool, and many other extensions.

Projects

  • Efficient Interpretation for SBCL The project is to write a minimal compiler of ANSI Common Lisp code to an intermediate representation that can be interpreted efficiently within an existing Common Lisp system, along with the corresponding interpreter. The compiler/interpreter combination will be designed as an alternative to the high-overhead native code compilation process that SBCL already provides, intended to be used in situations where compilation overhead weighs more heavily than raw performance of compiled code.
  • Modernising register allocation in SBCL This project aims to improve the compiler back end by enhancing the register allocation procedure. To realize this goal, we propose to implement (i) a new heuristic optimization based on coloring the global interference graph, (ii) live ranges and live range splitting, (iii) spill code insertion. The task of the register allocator is to assign an unconstrained number of temporary names (TNs) in the intermediate representation (IR) to a finite number of registers. A naive approach yields too many memory operations resulting in a reduced execution speed. The currently implemented SBCL register allocator performs only graph coloring, essentially treating spills by coloring with stack slots. In order to improve the allocator, we propose to integrate a new heuristic graph coloring method inspired by the concepts introduced by Briggs et al. (1994) in the SBCL compiler. According to Briggs' results of the optimistic coloring, the proposed enhancements can be expected to increase performance of produced code by up to 15\%.