Nim (formerly known as "Nimrod") is a compiled, garbage-collected systems programming language which has an excellent productivity/performance ratio. Nim's design focuses on efficiency, expressiveness, elegance (in the order of priority). http://nim-lang.org/
Find a file
jyelon e8bc19f79c Add 'auto-decoration' to nimGetProcAddr
Maintainers of win32 DLLs can opt to provide libraries with
'decorated' function names (Google "stdcall name decoration").  To
pull a function pointer out of one of these DLLs, you have to pass a
decorated name to getProcAddress.  This is painful for the authors
of NIM DLL wrappers - they have to pass manually-decorated strings
to "importc", but only on win32.

This commit adds auto-decoration to nimGetProcAddress.  This function
will probe the DLL for the undecorated name, and if that fails, it
will automatically add decoration and try again.  That way, the author
of the wrapper doesn't have to deal with it.
2015-11-11 21:55:33 -05:00
bin empty.txt files: Trim trailing whitespace 2015-09-04 23:09:54 +02:00
build empty.txt files: Trim trailing whitespace 2015-09-04 23:09:54 +02:00
compiler os.walkDir is available at compile time 2015-11-10 15:31:21 +01:00
config Move deprecated modules into lib/deprecated/ 2015-09-30 12:26:25 +02:00
doc documented untyped/typed meta-types 2015-11-10 22:51:03 +01:00
examples fixes regression: tactiontable 2015-10-14 14:35:44 +02:00
icons nimrod -> nim in some filenames 2015-02-14 19:00:11 +01:00
lib Add 'auto-decoration' to nimGetProcAddr 2015-11-11 21:55:33 -05:00
tests Merge pull request #3514 from vegansk/3513_pgsql_prepstat 2015-11-11 16:09:18 +00:00
tinyc Trim remaining .txt files trailing whitespace 2015-09-04 23:12:25 +02:00
tools updated old links on the website 2015-11-10 15:31:21 +01:00
web Update website link 2015-10-28 18:41:42 +09:00
.gitignore Get rid of git submodule 2015-05-26 14:16:22 +03:00
.travis.yml tries to fix the travis build 2015-10-26 14:57:22 +01:00
appveyor.yml try with windows slashes 2015-10-13 16:21:30 -07:00
bootstrap.sh bootstrap: Generate final install.sh during build 2015-10-03 19:51:17 +02:00
compiler.nimble updated compiler.nimble file 2015-10-28 14:19:12 +01:00
contributing.rst fixed test instruction 2015-08-16 13:41:25 +02:00
contributors.txt Fixed my name. 2015-09-07 19:51:52 -05:00
copying.txt Trim remaining .txt files trailing whitespace 2015-09-04 23:12:25 +02:00
docstyle.rst Fix double-ticks 2015-07-29 17:57:47 -04:00
install.txt s/Github/GitHub/g 2015-09-22 13:33:37 -07:00
install_nimble.nims Nimble is officially a part of Nim now 2015-09-05 11:34:38 +02:00
koch.nim skip tester html on travis/appveyor 2015-10-07 16:45:48 -07:00
koch.nim.cfg Rename *.nimrod.cfg to *.nim.cfg 2015-02-03 09:04:24 +01:00
readme.md readme.md: Open builder page from its status icon 2015-10-13 00:11:21 +02:00
readme.txt website knows about new URLs 2015-06-15 01:30:25 +02:00
start.bat fixes start.bat file 2015-11-03 14:52:35 +01:00
todo.txt updated todo.txt 2015-10-28 08:13:49 +01:00

Nim Compiler

Join the chat at https://gitter.im/nim-lang/Nim

This repo contains the Nim compiler, Nim's stdlib, tools and documentation.

Compiling

Compiling the Nim compiler is quite straightforward. Because the Nim compiler itself is written in the Nim programming language the C source of an older version of the compiler are needed to bootstrap the latest version. The C sources are available in a separate repo here.

The compiler currently supports the following platform and architecture combinations:

  • Windows (Windows XP or greater) - x86 and x86_64
  • Linux (most, if not all, distributions) - x86, x86_64, ppc64 and armv6l
  • Mac OS X 10.04 or higher - x86, x86_64 and ppc64

In reality a lot more are supported, however they are not tested regularly.

To build from source you will need:

  • gcc 3.x or later recommended. Other alternatives which may work are: clang, Visual C++, Intel's C++ compiler
  • git or wget

If you are on a fairly modern *nix system, the following steps should work:

$ git clone git://github.com/nim-lang/Nim.git
$ cd Nim
$ git clone --depth 1 git://github.com/nim-lang/csources
$ cd csources && sh build.sh
$ cd ..
$ bin/nim c koch
$ ./koch boot -d:release

koch install [dir] may then be used to install Nim, but lots of things don't work then so don't do that. Add it to your PATH instead. More koch related options are documented in doc/koch.txt.

The above steps can be performed on Windows in a similar fashion, the build.bat and build64.bat (for x86_64 systems) are provided to be used instead of build.sh.

Nimble

Nimble is Nim's package manager. For the source based installations where you added Nim's bin directory to your PATH the easiest way of installing Nimble is via:

$ nim e install_nimble.nims

Getting help

A forum is available if you have any questions, and you can also get help in the IRC channel on Freenode in #nim. If you ask questions on StackOverflow use the nim tag.

License

The compiler and the standard library are licensed under the MIT license, except for some modules where the documentation suggests otherwise. This means that you can use any license for your own programs developed with Nim, allowing you to create commercial applications.

Read copying.txt for more details.

Copyright (c) 2006-2015 Andreas Rumpf. All rights reserved.

Build Status

Build Waterfall

Linux Windows Mac
x86 linux-x86 windows-x86
x86_64 linux-x86_64 windows-x86_64 mac-x86_64
arm linux-armv5
linux-armv6
linux-armv7