Question

I am looking at a semester long project in compilers that could also evolve into my graduate thesis. I do not have much experience in this field (I have written a small "translator" for Pascal as part of my undergraduate work) --- I have been more into Machine Learning, and AI. The idea is to take this up as a challenge, and learn something in the process.

I did have a look at: Interesting compiler projects , but most of the ideas seem outdated.

The same is also true of the LLVM Open Projects page --- http://llvm.org/OpenProjects.html

Since I will have a semester to work on it, I am aiming for something slightly significant. I would like to work broadly on optimisations, or parallelisation. What might be an interesting thing to work on?

Was it helpful?

Solution

Feel free to contribute to Felix, there are an unlimited number of suitable mini-projects related to just about anything you're interested in :) Felix is written in Ocaml so you will have to work with that. The parser does use Scheme for action codes. Felix generates C++, if you're into run-time support. Possible subprojects include:

  1. meta-typing and polyadic behaviour
  2. improving theorem proving (Felix generates Why format files from assertions)
  3. Extending range of optimisations
  4. Adding new optimisations
  5. Support for generating OMP directives
  6. Improved garbage collector

These problems range in difficulty from easy to as hard as you want. The level of knowledge of the product ranges from needing to understand the whole thing to just some simple data structures.

Basic info: Felix is a statically typed procedural scripting language in the ML family that runs faster than C. It generates C++ which is passed to your C++ compiler to generate machine binaries. It uses a resource manager to find all the resources and link them so it's as easy to use as Python. It embeds C and C++ so most of your C/C++ libraries can be used. It is a whole program analyser which focuses on high level optimisations and allows your C++ compiler to do the low level ones. High level optimisations include very high level semantic rules such as specifying that reversing a list twice is a no-op, or implementing parallel assignments to minimise the cost of tail recursion, however inlining of functions and variables is the main source of performance. The semantics are chosen to allow aggressive optimisation, for example the default argument passing mode allows either eager or lazy evaluation, whichever the compiler thinks will be faster.

Contact me on skaller at users dot sourceforge dot net.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top