spell check
This commit is contained in:
parent
2ecf56423d
commit
a569f6b042
|
@ -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))
|
Loading…
Reference in New Issue