3/36  

Improving the Compiler Frameworks

Mentor: Marcus Denker
Second mentor: Jorge Ressia
Level: Advanced
Invited students: Flávio Cruz, Simona Poilinca
Students interested: Flávio Cruz(very), Nilesh Maaheshwari, Simona Poilinca, Mikaël Smaha

Technical Details

Squeak's compiler framework is hard to understand and not easy to extend. Over the last years, a number of projects used the compiler framework from Anthony Hanan's Closure Compiler (the NewCompiler) for research experiments.

Over the years, the compiler has seen some work (e.g. The compiler backend has been extended to support old-style non-closure code and extended to support FFI and 3.9 pragmas. In addition, work is nearly finished to generate code for new Eliot Closures).

Nevertheless, some more work is needed until the NewCompiler can replace the old squeak compiler. The goal of this project is to improve the compiler with regard to the code generation for new closures, improve performance and improve the compiler framework. One possible project to focus on could be to build an easy to understand decompiler.

Benefits to the Student

The student would learn about compilers, decompilers and in general the implementation of Programming Languages. The student would get insight into the inner workings of a dynamic language (ie. bytecode and implementation details). In addition, as the newcompiler was used for some research projects in the past, the student would learn about extending and in general using a compiler to modify and extend a smalltalk system.

Benefits to the Community

The current compiler is hard to understand and difficult to modify. In the past, many experiments (for example Reflectivity, Bytesurgeon, Helvetia, ObjectFlow, Changeboxes and Babel) used the newcompiler framework instead.
Having an easy to modify compiler as the main compiler replacing the current AST and Compiler would be of some benefit for the community: experiments get simpler and the adoption of some of the new technologies based on the newcompiler would be easier to use in real world projects.




Updated: 22.3.2010