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:
- meta-typing and polyadic behaviour
- improving theorem proving (Felix generates Why format files from assertions)
- Extending range of optimisations
- Adding new optimisations
- Support for generating OMP directives
- 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.