Improving the Compiler Frameworks
Last updated at 1:29 pm UTC on 13 March 2007
Marcus Denker (Google Account: marcus.denker)
Squeak's compiler framework is hard to understand and not easy to extend. Over the last years, a number of projects used the compiler framwork from the Closure Compiler (the NewCompiler) for experiments. Even with some progress (e.g. the compiler backend has been extended to support old-style non-closure code and extended to support 3.9 pragmas), many things are needed until the NewCompiler can replace the old squeak compiler.
The goal of this project is to improve the closure compiler with regard to the code it generates for closures. The Student should design and implement a number of schemes to optimize the perfomance of closures.
This project follows the previous one (which was part of ESUG SummerTalk 2006) around the new generation compiler.
Benefits to the Student
The student will learn about compiler construction, especially the algorithms and strategies used in the Squeak compiler. In a first step, the student will get familar on how to change and extend the compiler framework. Later the focus will be Closures and how to implement them in a practical, optimized way in a dynamic programming lanuage. The student will learn
basic concepts about Closures and how to implement them efficiently.
Benefits to the Community
Squeak's current implementation of Blocks does not provide closure semantics. Over the last years, especially with modern framworks like Seaside, it has shown that the design decision of not providing true closure semantics needs to be revised. There have been at least two attempts in the past that provided closures for Squeak, but with a noticable performance degradation. The goal of this project is to provide an implementation of Closures for Squeak that are fast enough to replace the current implemetation of non-Closure Blocks.