Updated GSoC 2015 Ideas (markdown)

This commit is contained in:
Dennis Felsing 2015-02-11 18:45:25 +01:00
parent 4d6df43c29
commit ec278b500e
1 changed files with 22 additions and 18 deletions

View File

@ -1,5 +1,5 @@
# Introduction
Below is a list of project ideas for [GSoC](https://www.google-melange.com/gsoc/homepage/google/gsoc2015) 2015. These projects require familiarity with the Nim programming language so it is absolutely essential that you become familiar with Nim ahead of time.
Below is a list of project ideas for [GSoC 2015](https://www.google-melange.com/gsoc/homepage/google/gsoc2015). These projects require familiarity with the Nim programming language so it is absolutely essential that you become familiar with Nim ahead of time.
[Nim](http://nim-lang.org) is a statically typed programming language which compiles primarily to C and has an excellent performance/productivity ratio. Nim's design focuses on efficiency, expressiveness, elegance.
@ -21,13 +21,11 @@ The following list of projects are just some ideas that the community and the de
**Description:**
A REPL (read-eval-print loop) can be an valuable tool while exploring a
A REPL (read-eval-print loop) can be a valuable tool while exploring a
language, new libraries and during regular development, as it allows faster
feedback than creating source code files, saving them after each change, and
reexecuting.
Nim provides a simple REPL based on its compile-time Virtual Machine, but it is
not adequate. For example importing C based code does not work.
feedback. Nim provides a simple REPL (nim i) based on its compile-time virtual
machine, but it is not adequate. For example importing C based code does not
work.
An alternative approach is the development of a new REPL that actually compiles
the entered code to C and then uses TinyCC to immediately execute this code.
@ -35,9 +33,8 @@ TinyCC is well suited for this as it can execute C code very quickly.
**Tasks:**
* Add a simple TinyCC based REPL for Nim.
* Ensure that global state (that is: state stored in global variables) is kept during recompilations of the generated C code. This means the C codegen needs to emit some kind of getters and setters for global variable access.
* Make sure common Nim code works as well as importing C based libraries.
* Improve its performance.
* Make sure common Nim code works as well as importing C based libraries
* Investigate how to reduce the overhead to improve performance
**Difficulty:** Medium to Hard
@ -61,7 +58,7 @@ any Nim code they want and use common libraries.
**Tasks:**
* Implement an online compiler
* Make sure it is secure
* Make sure it is secure (jail, specify maximum of resources, ...)
**Difficulty:** Easy to Medium
@ -134,7 +131,7 @@ with learning about Nim compiler internals.
* Make JS test cases.
**Bonus points:**
* Speed up the JavaScript backend by targetting `asm.js`.
* Speed up the JavaScript backend by targetting `asm.js`
**Difficulty:** Medium
@ -168,15 +165,22 @@ documentation should be installed on the system as well.
docs of all your installed libraries
* Automatically create an online documentation of each nimble package
**Difficulty:** Medium
**Difficulty:** Easy to Medium
**Mentor:** def- ([@def-](http://github.com/def-))
___
#### Xpath like support for macros
**Desirable skills:**
**Description:**
TODO: Fill out
**Expected Result:**
**Difficulty:** ...
**Mentor:** Araq ([@Araq](http://github.com/Araq))
___
@ -188,7 +192,7 @@ make a great language for this use.
**Tasks**:
* Create a low level wrapper for the MPI standard using c2nim
* Create a low level wrapper of a C library for the MPI standard using c2nim
* Write a high level abstraction library for comfortable MPI in Nim
**Difficulty:** Medium
@ -270,9 +274,9 @@ ___
**Desirable skills**: Knowledge of Ragel's internals.
**Difficulty:** Medium
**Difficulty:** Easy
**Mentor:** zahary ([@zah](http://github.com/zah))
**Mentor:** def- ([@def-](http://github.com/def-))
# Project spec