Updated GSoC 2014 Ideas (markdown)

This commit is contained in:
Andreas Rumpf 2014-02-12 15:43:10 -08:00
parent 9f6cab8ac9
commit f705232f60
1 changed files with 15 additions and 6 deletions

View File

@ -7,9 +7,16 @@ Below is a list of project ideas for [GSoC](https://www.google-melange.com/gsoc/
## Nimrod Compiler
#### Add support for full coroutines
* Full coroutines in contrast to Nimrod's closure iterators can capture the full call stack.
* Needs inline assembler to implement the stack switching.
* The GC needs to support conservative marking of multiple stacks
**Description:**
* Many programming languages, in particular Lua, offer coroutines as way to provide light-weight collaborative tasking. Nimrod supports "closure iterators" which are comparable to Python's generators to accomplish the same.
* However closure iterators are much more limited as they cannot capture the call stack completely.
* The best example to see the limitations of Nimrod's current way is that iterators cannot be recursive.
Here is a sketch of a possible implementation, but there are lots of other possibilities to implement full coroutines for Nimrod:
* Implement the necessary stack switching via inline assembler.
* The GC needs to support conservative marking of multiple stacks.
* In particular the write barrier in the GC which does the 'isOnStack' check needs to be changed.
* Using a bloom filter for quick testing whether an address belongs to some stack is likely to pay off.
* Creating a coroutine needs to register a new stack to the GC.
@ -50,9 +57,6 @@ provides configuration for the code generator and implements the logic of the ga
**Mentor:** zahary ([@zah](http://github.com/zah))
___
#### Fix bugs with iterators/generics
...
___
#### Fix/Expand Nimrod's "Compiler as a Service" features
@ -228,6 +232,8 @@ Babel is the Nimrod package manager. It is currently very basic and some importa
**Mentor:** dom96 ([@dom96](http://github.com/dom96))
___
#### Implement re2nim, a lexer generator for nimrod
**Description:**
* Model it after re2c or the Ragel state machine generator
* Alternatively model it after Flex.
@ -240,6 +246,9 @@ ___
**Mentor:** zahary ([@zah](http://github.com/zah))
___
#### Implement a Nimrod backend for the Ragel state machine generator
**Description:**
* Ragel is a widely used state machine generator which supports C, C++ etc. But not Nimrod. So let's change that.
* http://www.complang.org/ragel/
**Skill Requirements**: Knowledge of Ragel's internals.