diff --git a/GSoC-2015-Ideas.md b/GSoC-2015-Ideas.md index 1c7745f..a594497 100644 --- a/GSoC-2015-Ideas.md +++ b/GSoC-2015-Ideas.md @@ -14,6 +14,23 @@ The following list of projects are just some ideas that the community and the de # Projects ## Table of Contents + * [Nim Compiler](#nim-compiler) + * [Create a new REPL for Nim using TinyCC](#create-a-new-repl-for-nim-using-tinycc) + * [Make Nim a viable research platform for Garbage Collection algorithms](#make-nim-a-viable-research-platform-for-garbage-collection-algorithms) + * [Add a code generator for OpenCL](#add-a-code-generator-for-opencl) + * [Improve the JavaScript Backend](#improve-the-javascript-backend) + * [A strong theoretical foundation for Nim's parallel statement](#a-strong-theoretical-foundation-for-nims-parallel-statement) + * [Standard Library](#standard-library) + * [Enhance and expand the standard library documentation](#enhance-and-expand-the-standard-library-documentation) + * [High Level Game Library](#high-level-game-library) + * [Benchmarking library](#benchmarking-library) + * [MPI support](#mpi-support) + * [Tools & Infrastructure](#tools--infrastructure) + * [nimfmt: Automatically format Nim code](#nimfmt-automatically-format-nim-code) + * [c2nim: Improve the automation of low-level C bindings](#c2nim-improve-the-automation-of-low-level-c-bindings) + * [Implement re2nim, a lexer generator for Nim](#implement-re2nim-a-lexer-generator-for-nim) + * [Implement a Nim backend for the Ragel state machine compiler](#implement-a-nim-backend-for-the-ragel-state-machine-compiler) + ## Nim Compiler @@ -217,6 +234,62 @@ as well. **Mentor:** def- ([@def-](http://github.com/def-)) +___ +#### Benchmarking library + +A high quality benchmarking library is a must for a high performance language. +Time, memory usage, and utilization of each CPU core can be interesting metrics +to measure. It should be possible to compare different implementations with a +variety of inputs semi-automatically. The output of such a benchmarking library +should be visually appealing and easy to share, similar to the one of +[criterion](http://www.serpentine.com/criterion/fibber.html), a Haskell +benchmarking library. Since Nim code can seamlessly be compiled with different +C compilers and garbage collectors, make it possible to run benchmarks with +combinations of these. + +**Tasks:** + * Implement ways to reliably measure time, memory usage and other metrics on multiple platforms. See [bench.nim](https://github.com/def-/nim-benchmarksgame/blob/master/bench.nim) for a start of doing this on Linux. + * Implement a way to specify inputs of different sizes for the code to be tested. + * Create Output reports in a nice HTML with Graphs and JavaScript. + +**Bonus Points:** + * Make it possible to run benchmark code from other languages as well. + * Use this library as the basis of a modern benchmarking game where participants submit algorithm implementations in many languages for comparisons, similar to [The Benchmarks Game](http://benchmarksgame.alioth.debian.org/). + +**Expected Result:** A high quality benchmarking library for Nim. + +**Difficulty:** Easy to Medium (depending on the scope) + +**Mentor:** def- ([@def-](http://github.com/def-)) + +___ +#### High Level Game Library + +The Nim language is a good fit for writing games because of its high +performance, script-like programming style and [controllable garbage +collector](http://nim-lang.org/gc.html). There are many wrappers for existing +game libraries available in Nim, such as +[CSFML](https://github.com/blaxpirit/nim-csfml), +[SDL2](https://github.com/nim-lang/sdl2), +[GLFW](https://github.com/rafaelvasco/nimrod-glfw) and +[Urho3D](https://github.com/3dicc/Urhonimo). In this idea a friendly, high +level game library should be written directly in Nim with an SDL2 and possibly +GLFW backend. This will allow games to be created more idiomatically and with +less overhead involved. Other new languages like Rust have similar projects +like [Piston](https://github.com/PistonDevelopers/piston). + +**Tasks:** + * Start implementing a high level game library on top of SDL2 and OpenGL, inspired by other game libraries like Piston and Pyglet. + * Prove the usability to write a simple Minecraft clone in the spirit of the 500 line Python/Pyglet [Minecraft](https://github.com/fogleman/Minecraft). + +**Expected Result:** + * Games can be written more easily in Nim. + * A simple Minecraft clone can be played. + +**Difficulty:** Medium + +**Mentor:** def- ([@def-](http://github.com/def-)) + ___ #### MPI support