While many features are already present or easily feasible in L, many parts of the current implentation are both naive and incomplete. Some parts are clear, some parts are clearly dirty as I didn't spend time to rewrite them. I wanted to create quickly something simple to have a clear view of the whole picture, and so that people could easily start hacking on it. So if your contribution implies writing something in C, you can just keep it simple, and make it in such a way that it could easily be redone efficiently later. If you write something in L on the contrary, try making it both clear and efficient. If you have written something functional but lack features to finish it, just write it in your code.

The goal we should be striving for version 1.0 is that L should be self hosting, that is to say, we have to port the whole compiler to L. This can be done incrementally while adding new features to L (work on it has already begun). The C code will thus be ultimately thrown away; thus it's no use spending time optimising it.

Further releases will extend the libraries, optimize the compiler, create new backends...

So do not hesitate, if you are interested in compiler technology or programming languages in general, please join the L project! Whatever your skills are, you should be able to contribute to L. If there is something in the following list that you'd like to do, please say so on the l-lang-dev mailing list, so that work is not duplicated, and so that I can help you on the understanding of the task and its context. I have put some of the tasks that are needed to do, along with the estimated difficulty, time estimated to complete the task, and relative urgency (if you want to pick up one, please say so on the project mailing list, l-lang-devel at


Complete L documentation
I began to write one, completing it and commiting it is my top priority.


Clean up the backend interface for the jit backend
The cocytus base language should be the only interface to backends. The backend interface and jit backend should be cleaned to do that.
Finish the GNU C output backend
This is the next thing I'm going to do.


Add interactive input support
L is ready for interactive compilation, and is an interactive compiler in its heart; what is lack is top-level support. This is also a good starting point.
Add an optional "loop name" argument to loop, break, and continue
so that it is easy to break two loops or continue an outer loop. This is really a low-urgency task.


Port the dynamic regexp compilation engine so that it can output L code
This is really doable by anybody that can program in C. This is a really good starting point.
Add more libraries to L
Make L more usable by adding more base libraries. By doing that, some little improvements in the compiler will occasionaly be needed. For instance, a more complete XML library should be written, so that these web pages can be automatically generated.