diff --git a/GSoC-2014-Ideas.md b/GSoC-2014-Ideas.md index 10da2e2..aeccf92 100644 --- a/GSoC-2014-Ideas.md +++ b/GSoC-2014-Ideas.md @@ -28,13 +28,34 @@ ___ **Mentor:** Araq ([@Araq](http://github.com/Araq)) +___ +#### Make Nimrod a viable research platform for Garbage Collection algorithms + **Skill Requirements:** Familiarity with the various GC approaches and algorithms, knowledge of the compiler codegen modules. + +Most of the popular garbage collected languages of today require a separately distributed run-time environment, responsible for executing the code and providing a predetermined set of garbage collection algorithms. This leaves little room for experimentation with various approaches and condemns GC researchers to develop and test their algorithms on specialized platforms such as the [Jikes RVM](http://jikesrvm.org/) that have limited practical significance. + +In contrast, in Nimrod, the garbage collection algorithm is chosen at compile-time and embedded in the resulting stand-alone native executable. This enables the users to pick a GC algorithm that's most suitable to their project and allows for a proliferation of GC algorithms, developed by independent groups and individuals, without requiring any modifications to be made to the standard Nimrod distribution. + +The Nimrod code generator and type system can provide various GC roots marking strategies, various kinds of write/read barriers and all necessary static type information (e.g. static cycle analysis). A GC implementation will consist only of a single Nimrod module (supplied as a command-line parameter) that +provides configuration for the code generator and implements the logic of the garbage collection algorithm. This module will be compiled as C code with the rest of the program and it could be easily debugged using standard C/C++ debugging and profiling tools. + + * Add support for precise stack marking + * Add support for read barriers and polish the support for Levanoni/Petrank style of write barriers + * Implement the infrastructure for picking a user-supplied GC module + +**Bonus points:** Implement simple forms of variety of GC algorithms as a proof-of-concept + +**Difficulty:** Medium to Hard + +**Mentor:** zahary ([@zah](http://github.com/zah)) + ___ #### Fix bugs with iterators/generics ... ___ #### Fix/Expand Nimrod's "Compiler as a Service" features -**Skill Requirements:** Command line argument parsing, minimal knowledge of compiler internals and theory. +**Skill Requirements:** Command line argument parsing, good knowledge of compiler internals and theory. **Description:** * Fix https://github.com/Araq/Nimrod/issues/804, which makes `idetools` unusable. @@ -43,7 +64,7 @@ ___ **Bonus points:** Implement "Compiler as a Service" support to major IDEs/text editors such as Light Table, Sublime Text, or Visual Studio. -**Difficulty:** Medium +**Difficulty:** Medium to Hard **Mentor:** zahary ([@zah](http://github.com/zah)) @@ -54,7 +75,7 @@ ___ **Description**: * Allow the nimrod bootstrap process to integrate the nimrod standard library source code and other associated resources into the nimrod binary, to be used by the nimrod binary when compiling source code. The included library modules should be overridable, either by a switch passed to the nimrod executable, or by placing an actual library file in a pre-determined path. -**Difficulty:** Hard +**Difficulty:** Medium **Mentor:** zahary ([@zah](http://github.com/zah))