If you want to modify or extend these tasks or have your own ideas, please see the GNU Project guidelines for Summer of Code projects. If you want to discuss potential projects with the DotGNU team, we'd love to talk to you about it. You can contact us by email on the DotGNU mailing list, or by IRC on the #portable.net or #dotgnu channels on irc.freenode.net.
The Portable .NET Windows.Froms library implements much of .NET 1.1, but some classes are still missing or not completely implemented.
For example add support for lambda/anonymous methods and the yield statement. The Portable .NET C# compiler is based on bison, flex and the treecc tool.
It would be beneficial to have a method in GC which can enumerate all
objects which reference a specified object. The signature of this
method might be, for example, object[] GC.GetReferences( object
o )
.
DotGNU contains a code generator that can be used for Just-in-Time compilation at runtime. Code can also be compiled ahead of time to produce native code before it's needed. The goal is to modify the runtime and compilation so that the bytecodes can be safely removed from a program and a single image is shipped containing both metadata and native code.
Read the libjit rationale for instruction and rationale for the DotGNU JIT Library (libJIT).
Complete ELF reader and writer.
You can also add support for any other storage/container format (PECOFF for example).
You'll have to add the infrastructure for handling relocations too.
You could port libJIT to a new architecture, for example PPC, OpenRISC, SPARC, MIPSEL and so on or improve an existing code generator (alpha, ...). The libJIT manual describes the steps needed to for porting libJIT to new architectures.
For example, implement inlining, enhance constant propagation or dead-code elimination.
Make libjit exceptions interoperable with gcc's C++ exceptions. One possible solution might be integration of libunwind