spell check

This commit is contained in:
Dennis Felsing 2015-02-20 15:25:17 +01:00
parent 2ecf56423d
commit a569f6b042
1 changed files with 10 additions and 10 deletions

View File

@ -3,7 +3,7 @@ Below is a list of project ideas for [GSoC 2015](https://www.google-melange.com/
[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.
Areas of the project you may wish to work on include the [Nim compiler](#wiki-nim-compiler) which is itself written in Nim, Nim's [standard library](#wiki-standard-library) and/or the [tools and infrastructure](#wiki-tools--infrastructure) of Nim which includes the Nim build farm (Nimbuild) and the Nim package manager (nimble).
Areas of the project you may wish to work on include the [Nim compiler](#wiki-nim-compiler) which is itself written in Nim, Nim's [standard library](#wiki-standard-library) and/or the [tools and infrastructure](#wiki-tools--infrastructure) of Nim which includes the Nim package manager (nimble).
To get started you will need to clone the Nim repository and then subsequently bootstrap the compiler, instructions for doing this are located [here](https://github.com/Araq/Nim#compiling). You can then move onto the [tutorial](http://nim-lang.org/tut1.html) and read through the [other documentation](http://nim-lang.org/documentation.html) as well.
@ -135,7 +135,7 @@ examples](https://github.com/def-/nim-unsorted) with the JS backend.
* Make JS test cases.
**Bonus points:**
* Speed up the JavaScript backend by targetting `asm.js`.
* Speed up the JavaScript backend by targeting `asm.js`.
* Write a library for communication between client-side Nim (compiled to JavaScript) and server-side Nim (compiled to C).
**Expected Result:** Nim becomes more usable for client-side website development.
@ -154,12 +154,12 @@ ___
Nim uses a fresh idea to model fork&join parallelism via its ``parallel``
builtin that performs a range of additional checks at compile-time
like array bounds checking or the so called "disjoint check". The disjoint
check ensures the datasets are disjoint; that means every processed element is
check ensures the data sets are disjoint; that means every processed element is
only accessed by one worker. This way no locking is required and yet (memory)
safety is guaranteed.
Unfortunately, how exactly this checking is performed is not
yet documented: It's done in a pretty adhoc fashion that mostly uses
yet documented: It's done in a pretty ad hoc fashion that mostly uses
the transitivity of inequality relations and some simple control flow analysis.
However, in the context of *optimization* and code generation there has been
@ -184,7 +184,7 @@ Here is a sketch of a possible implementation:
* Implement an AST to polyhedral model transformation.
* Implement a semantic checking pass that works on the polyhedral model and
proves array bounds correct as well as that the datasets are disjoint.
proves array bounds correct as well as that the data sets are disjoint.
* In addition to that it needs to be proven that the code is free
of "write after write" or "write after read" etc. conflicts.
@ -198,7 +198,7 @@ Here is a sketch of a possible implementation:
#### Enhance and expand the standard library documentation
**Desirable Skills:** Basic writing and documentation skills, webdesign and infrastructure setup.
**Desirable Skills:** Basic writing and documentation skills, web design and infrastructure setup.
**Description**:
The [Nim documentation](http://nim-lang.org/lib.html) is generally good but it
@ -319,7 +319,7 @@ libraries like OpenMPI or MPICH. Afterwards it will be interesting how to deal
with the C preprocessor macros specifying the differences between MPI
implementations. You will need to investigate whether a solution such as [in
Julia](https://github.com/lcw/MPI.jl/blob/master/deps/make_f_const.f) will be
necessary to create a custom wrapper for each MPI implementation. Preferrably
necessary to create a custom wrapper for each MPI implementation. Preferably
this would be solved directly with Nim's capabilities, and the close relation
to C could come in handy here.
@ -402,7 +402,7 @@ ___
**Description:**
Lexer generators are useful tools for writing all sorts of parsers. Currently Nim lacks native lexer generators. This project involves the implementation of a lexer generator. It should be modelled after [re2c](http://re2c.org/) or alternatively it can be based on the wide number of existing lexer generators such as Flex.
Lexer generators are useful tools for writing all sorts of parsers. Currently Nim lacks native lexer generators. This project involves the implementation of a lexer generator. It should be modeled after [re2c](http://re2c.org/) or alternatively it can be based on the wide number of existing lexer generators such as Flex.
Here is a sketch of a possible implementation:
@ -424,7 +424,7 @@ ___
**Description:**
[Ragel](http://www.complang.org/ragel/) is a "finite-state machine compiler with output support for C, C++, C#, Objective-C, D, Java, OCaml, Go, and Ruby source code." This project involves the implementation of a Nim backend for Ragel. This can be based on the large number of pre-existing backends listed previously. Ragel itself is written in C++, so C++ programming should be familiar to you. Ragel embeds code in the backend language directly and then generates a regular source code file from this. Ideally the new Nim backend would end upstream in Ragel, but alternatively we can maintain it ourselves.
[Ragel](http://www.complang.org/ragel/) is a "finite-state machine compiler with output support for C, C++, C#, Objective-C, D, Java, OCaml, Go, and Ruby source code." This project involves the implementation of a Nim backend for Ragel. This can be based on the large number of preexisting backends listed previously. Ragel itself is written in C++, so C++ programming should be familiar to you. Ragel embeds code in the backend language directly and then generates a regular source code file from this. Ideally the new Nim backend would end upstream in Ragel, but alternatively we can maintain it ourselves.
**Tasks:**
* Become familiar with the template format used by Ragel and Ragel internals by studying how it works with other language backends.
@ -454,4 +454,4 @@ Please add your project ideas in the following format.
**Difficulty:** ...
**Mentor:** Mentor name ([@MentorName](http://github.com/MentorName))
**Mentor:** Mentor name ([@MentorName](http://github.com/MentorName))