New ideas, table of contents, cleanup

This commit is contained in:
Dennis Felsing 2015-02-20 03:38:58 +01:00
parent 37cabd8d1d
commit 73acbebda0
1 changed files with 73 additions and 0 deletions

View File

@ -14,6 +14,23 @@ The following list of projects are just some ideas that the community and the de
# Projects # Projects
## Table of Contents ## 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 ## Nim Compiler
@ -217,6 +234,62 @@ as well.
**Mentor:** def- ([@def-](http://github.com/def-)) **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 #### MPI support