New ideas, table of contents, cleanup
This commit is contained in:
parent
37cabd8d1d
commit
73acbebda0
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue