Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
etanter:internship_proposal_2012 [2012/02/02 21:54] – created etanter | etanter:internship_proposal_2012 [2012/02/02 22:00] (current) – etanter | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Internship Proposal ====== | ||
+ | |||
+ | **Supervisor**: | ||
+ | |||
+ | **Level:** L3 | ||
+ | |||
+ | **Keywords: | ||
+ | |||
+ | **Requirements: | ||
+ | |||
+ | **Abstract: | ||
+ | |||
+ | When designing a new programming language, the question of how much work should go in the implementation is a recurrent one. Defining the language with an interpreter is nicely descriptive, | ||
+ | |||
+ | Recently, the PyPy project has developed a new language, called RPython, a statically-typed restricted subset of Python, well-suited to write VMs. RPython allows meaningful whole-program static analyses to be performed, provide a good garbage collector, and useful datatypes. RPython also integrates well with C code. But most of all, it can provide a custom just-in-time compiler for the language, for free (almost). By supplying annotations, | ||
+ | |||
+ | So far, a few experiments have been made on RPython: building VMs for Python itself, for Prolog, and for Converge. | ||
+ | |||
+ | The goal of this internship is to study the RPython approach to building and optimizing VMs, starting with various textbook-like programming languages of increasing complexity. Each time the language is extended, the corresponding cost to update the VM while preserving optimizations will be assessed. The expected outcome is a set of small-to-medium virtual machines built with RPython with their evaluation, both in terms of performance and programming complexity. The material thus generated will be of great help to anyone interested in adopting this approach to experiment with new languages and build their own VMs. | ||
+ | |||
+ | ** References ** | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * A good understanding of programming languages and their interpretation is required (recommended: | ||
+ | |||
+ | |||