FP /


LLVM backend for Timber

What is LLVM?

LLVM, the Low Level Virtual Machine, is a virtual instruction set, a collection of program transformations and optimisations and backends for many architectures.

What is Timber?

Timber is a pure, strict functional language with Haskell-like syntax and a object-oriented monadic layer. Timber is intended for programming embedded systems with some real-time constraints. Presently, a POSIX implementation is available; an ARM version, running on bare hardware, is soon forthcoming.

What is this project?

The Timber compiler compiles source code to C, which is then compiled by gcc (or some other C compiler). Before emitting C code, the compiler has transformed the program into an intermediate, imperative language. The aim of his project is to emit LLVM code instead of C and to investigate the use of various LLVM optimisations in the Timber context.

Outline of project activities:

  • Learn the Timber langage.
  • Learn the overall structure of the Timber compiler (it is written in Haskell).
  • Learn the LLVM instruction set and some example uses of LLVM (several tutorials can be found on the LLVM site).
  • Write a new Haskell module, emitting LLVM from the internal Kindle language.
  • Evaluate the result.
  • As time permits: experiment with different LLVM backend passes.

Prerequisites: Functional programming, Programming languages, Compiler construction

Contact: Björn von Sydow

Number of people: 1-2