Updated GSoC 2015 Ideas (markdown)
This commit is contained in:
parent
4d6df43c29
commit
ec278b500e
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue