Nit language
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
benchmarks benchmarks/markdown: add benches for markdown2 Jun 21, 2018
c_src csrc: regen for 32 bits platforms and Windows Mar 2, 2017
clib add destruction traces, add lttng channel configuration file, resolve… May 28, 2018
contrib lib/core: remove uses of Byte for Text Jun 8, 2018
doc doc: update the README (since the directory is empty by default) Nov 27, 2014
examples lib/core: remove uses of Byte for Text Jun 8, 2018
lib Merge: src/model/model_index: model index uses BKTree Aug 13, 2018
misc Merge: Object destroy traces May 31, 2018
share Merge: nitdoc: full rewrite Jun 20, 2018
src Merge: nitunit: Use markdown2 Aug 13, 2018
tests postmerge: fix error_class_glob.res Aug 14, 2018
.gitattributes git: restrict -diff attributes to specific files Aug 29, 2017
.gitignore git: ignore .exe versions of bootstrap compilers Jun 9, 2018
.gitmodules benchs: Added submodule reference to ujson4c Dec 14, 2015
.mailmap nit: Added `` file to repository Jun 8, 2016
LICENSE-BSD update NOTICE and LICENSE Feb 14, 2012
LICENSE-GPL-2 misc: gtksourceview nit syntax highlighting Jul 14, 2009
Makefile Makefile: update rules for the new nitdoc Jun 10, 2018
NOTICE gtksourceview: Rewrite the language definition Jun 28, 2017 Merge: Added contributing guidelines and link from readme Jun 10, 2016
VERSION version 0.8 Jan 31, 2016

Nit is an expressive language with a script-like syntax, a friendly type-system and aims at elegance, simplicity and intuitiveness.

Nit has a simple straightforward style and can usually be picked up quickly, particularly by anyone who has programmed before. While object-oriented, it allows procedural styles.

The Nit Compiler (nitc) produces efficient machine language binaries.

Some Nit features:

  • Pure Object-Oriented.
  • Multiple Inheritance.
  • Realist typing policy.
  • Light and clear syntax.


Those are available in most Linux distributions

$ sudo apt-get install build-essential ccache libgc-dev graphviz libunwind-dev pkg-config

and on OS X using brew

$ brew install ccache bdw-gc graphviz libunwind-headers pkgconfig

or with MacPorts

$ sudo port install ccache boehmgc graphviz libunwind-headers pkgconfig

Important files and directories:

  • benchmarks/ Script to bench the compilers
  • bin/ The Nit tools
  • c_src/ C code of nitc (needed to bootstrap)
  • clib/ C code needed by nitc to compile programs
  • contrib/ Various Nit programs (may or may not be useful)
  • doc/ Documentation
  • examples/ Program examples written in Nit
  • lib/ Nit standard library
  • LICENCE License of the software
  • Makefile Bootstrap the Nit tools
  • misc/ Some additional files for commons text editors and tools
  • List of the authors
  • README This file
  • share/ Common resources used by tools
  • src/ The Nit tool sources (written in Nit)
  • tests/ Non-regression test-suite

How to start:

$ make
$ bin/nitc examples/hello_world.nit
$ ./hello_world

You can source misc/ to setup your environment like PATH, MANPATH and bash completion. To have your environment automatically configured at login, just source it with install as argument.

$ . misc/ install


To contribute to Nit, please see CONTRIBUTING.

The best way to ask the team for advice, submit bugs or request features, is through the use of Github issues, using the appropriate tag (forum, feature-request, bug).

Information, contacts and help: