documentation updates
This commit is contained in:
parent
8b93e4132c
commit
5272213da4
7 changed files with 99 additions and 59 deletions
|
|
@ -2,13 +2,13 @@
|
|||
Home
|
||||
====
|
||||
|
||||
Welcome to Nimrod
|
||||
-----------------
|
||||
Welcome to Nim
|
||||
--------------
|
||||
|
||||
**Nimrod** is a statically typed, imperative programming language that tries to
|
||||
give the programmer ultimate power without compromises on runtime efficiency.
|
||||
This means it focuses on compile-time mechanisms in all their
|
||||
various forms.
|
||||
**Nim** (formerly known as "Nimrod") is a statically typed, imperative
|
||||
programming language that tries to give the programmer ultimate power without
|
||||
compromises on runtime efficiency. This means it focuses on compile-time
|
||||
mechanisms in all their various forms.
|
||||
|
||||
Beneath a nice infix/indentation based syntax with a
|
||||
powerful (AST based, hygienic) macro system lies a semantic model that supports
|
||||
|
|
@ -18,10 +18,10 @@ shared memory heap is also provided for the increased efficiency that results
|
|||
from that model.
|
||||
|
||||
|
||||
Nimrod looks like this:
|
||||
=======================
|
||||
Nim looks like this:
|
||||
====================
|
||||
|
||||
.. code-block:: nimrod
|
||||
.. code-block:: nim
|
||||
# compute average line length
|
||||
var count = 0
|
||||
var sum = 0
|
||||
|
|
@ -34,11 +34,11 @@ Nimrod looks like this:
|
|||
if count > 0: sum / count else: 0
|
||||
|
||||
|
||||
Nimrod is efficient
|
||||
===================
|
||||
Nim is efficient
|
||||
================
|
||||
|
||||
* Native code generation (currently via compilation to C), not dependent on a
|
||||
virtual machine: **Nimrod produces small executables without dependencies
|
||||
virtual machine: **Nim produces small executables without dependencies
|
||||
for easy redistribution.**
|
||||
* A fast **non-tracing** garbage collector that supports soft
|
||||
real-time systems (like games).
|
||||
|
|
@ -55,11 +55,11 @@ Nimrod is efficient
|
|||
the stack.
|
||||
|
||||
|
||||
Nimrod is expressive
|
||||
====================
|
||||
Nim is expressive
|
||||
=================
|
||||
|
||||
* **The Nimrod compiler and all of the standard library are implemented in
|
||||
Nimrod.**
|
||||
* **The Nim compiler and all of the standard library are implemented in
|
||||
Nim.**
|
||||
* Built-in high level datatypes: strings, sets, sequences, etc.
|
||||
* Modern type system with local type inference, tuples, variants,
|
||||
generics, etc.
|
||||
|
|
@ -69,31 +69,31 @@ Nimrod is expressive
|
|||
* Macros can modify the abstract syntax tree at compile time.
|
||||
|
||||
|
||||
Nimrod is elegant
|
||||
=================
|
||||
Nim is elegant
|
||||
==============
|
||||
|
||||
* Macros can use the imperative paradigm to construct parse trees. Nimrod
|
||||
* Macros can use the imperative paradigm to construct parse trees. Nim
|
||||
does not require a different coding style for meta programming.
|
||||
* Macros cannot change Nimrod's syntax because there is no need for it.
|
||||
Nimrod's syntax is flexible enough.
|
||||
* Macros cannot change Nim's syntax because there is no need for it.
|
||||
Nim's syntax is flexible enough.
|
||||
* Statements are grouped by indentation but can span multiple lines.
|
||||
Indentation must not contain tabulators so the compiler always sees
|
||||
the code the same way as you do.
|
||||
|
||||
|
||||
Nimrod plays nice with others
|
||||
=============================
|
||||
Nim plays nice with others
|
||||
==========================
|
||||
|
||||
* The Nimrod Compiler runs on Windows, Linux, BSD and Mac OS X.
|
||||
* The Nim Compiler runs on Windows, Linux, BSD and Mac OS X.
|
||||
Porting to other platforms is easy.
|
||||
* **The Nimrod Compiler can also generate C++ or Objective C for easier
|
||||
* **The Nim Compiler can also generate C++ or Objective C for easier
|
||||
interfacing.**
|
||||
* There are lots of bindings: for example, bindings to GTK2, the Windows API,
|
||||
the POSIX API, OpenGL, SDL, Cairo, Python, Lua, TCL, X11, libzip, PCRE,
|
||||
libcurl, mySQL and SQLite are included in the standard distribution or
|
||||
can easily be obtained via the
|
||||
`Babel package manager <https://github.com/nimrod-code/babel>`_.
|
||||
* A C to Nimrod conversion utility: New bindings to C libraries are easily
|
||||
* A C to Nim conversion utility: New bindings to C libraries are easily
|
||||
generated by ``c2nim``.
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ News
|
|||
====
|
||||
|
||||
..
|
||||
2014-06-29 Version 0.9.6 released
|
||||
=================================
|
||||
2014-10-11 Version 0.10.0 released
|
||||
==================================
|
||||
|
||||
Changes affecting backwards compatibility
|
||||
-----------------------------------------
|
||||
|
|
@ -47,6 +47,10 @@ News
|
|||
found under the `nim-code <https://github.com/nimrod-code>`_ organisation.
|
||||
- Removed the deprecated ``web`` module, the ``httpclient`` module should
|
||||
be used instead.
|
||||
- Large parts of the stdlib got rid of the T/P type prefixes. Instead most
|
||||
types now simply start with an uppercased letter. The
|
||||
so called "partial case sensitivity" is now active allowing code
|
||||
like ``var foo: Foo``.
|
||||
- String case (or any non-ordinal case) statements
|
||||
without 'else' are deprecated.
|
||||
- Recursive tuple types are not allowed anymore. Use ``object`` instead.
|
||||
|
|
|
|||
|
|
@ -6,11 +6,12 @@
|
|||
General
|
||||
=======
|
||||
|
||||
What is Nimrod?
|
||||
---------------
|
||||
What is Nim?
|
||||
------------
|
||||
|
||||
Nimrod is a statically typed, imperative programming language that tries to
|
||||
give the programmer ultimate power without compromises on runtime efficiency.
|
||||
Nim (formerly known as "Nimrod") is a statically typed, imperative programming
|
||||
language that tries to give the programmer ultimate power without compromises
|
||||
on runtime efficiency.
|
||||
This means it focuses on compile-time mechanisms in all their
|
||||
various forms. Beneath a nice infix/indentation based syntax with a
|
||||
powerful (AST based, hygienic) macro system lies a semantic model that supports
|
||||
|
|
@ -23,7 +24,7 @@ from that model.
|
|||
Why yet another programming language?
|
||||
-------------------------------------
|
||||
|
||||
Nimrod is one of the very few *programmable* statically typed languages, and
|
||||
Nim is one of the very few *programmable* statically typed languages, and
|
||||
one of the even fewer that produces native binaries that require no
|
||||
runtime or interpreter.
|
||||
|
||||
|
|
@ -36,29 +37,29 @@ C++, Python, Lisp, Oberon.
|
|||
|
||||
|
||||
|
||||
What is Nimrod's take on concurrency?
|
||||
-------------------------------------
|
||||
What is Nim's take on concurrency?
|
||||
----------------------------------
|
||||
|
||||
Nimrod primarily focusses on thread local (and garbage collected) heaps and
|
||||
asynchronous message passing between threads. Each thread has its own GC, so no
|
||||
Nim primarily focusses on thread local (and garbage collected) heaps and
|
||||
message passing between threads. Each thread has its own GC, so no
|
||||
"stop the world" mechanism is necessary. An unsafe shared memory heap is also
|
||||
provided.
|
||||
provided.
|
||||
|
||||
Future versions will additionally include a GC "per thread group"
|
||||
and Nimrod's type system will be enhanced to accurately model this shared
|
||||
and Nim's type system will be enhanced to accurately model this shared
|
||||
memory heap.
|
||||
|
||||
|
||||
How is Nimrod licensed?
|
||||
-----------------------
|
||||
How is Nim licensed?
|
||||
--------------------
|
||||
|
||||
The Nimrod compiler and the library are MIT licensed.
|
||||
The Nim compiler and the library are MIT licensed.
|
||||
This means that you can use any license for your own programs developed with
|
||||
Nimrod.
|
||||
Nim.
|
||||
|
||||
|
||||
How stable is Nimrod?
|
||||
---------------------
|
||||
How stable is Nim?
|
||||
------------------
|
||||
|
||||
The compiler is in development and some important features are still missing.
|
||||
However, the compiler is quite stable already: It is able to compile itself
|
||||
|
|
@ -66,11 +67,11 @@ and a substantial body of other code. Until version 1.0.0 is released,
|
|||
minor incompatibilities with older versions of the compiler will be introduced.
|
||||
|
||||
|
||||
How fast is Nimrod?
|
||||
-------------------
|
||||
How fast is Nim?
|
||||
----------------
|
||||
Benchmarks show it to be comparable to C. Some language features (methods,
|
||||
closures, message passing) are not yet as optimized as they could and will be.
|
||||
The only overhead Nimrod has over C is the GC which has been tuned
|
||||
The only overhead Nim has over C is the GC which has been tuned
|
||||
for years but still needs some work.
|
||||
|
||||
|
||||
|
|
@ -84,7 +85,7 @@ but would require much work.
|
|||
What about editor support?
|
||||
--------------------------
|
||||
|
||||
- Nimrod IDE: https://github.com/nimrod-code/Aporia
|
||||
- Nim IDE: https://github.com/nimrod-code/Aporia
|
||||
- Emacs: https://github.com/Tass/nimrod-mode
|
||||
- Vim: https://github.com/zah/nimrod.vim/
|
||||
- Scite: Included
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue