Skip to content
This repository

NumPy aware dynamic Python compiler using LLVM

Octocat-spinner-32 benchmarks Add benchmark suite February 12, 2014
Octocat-spinner-32 bin Revive 'numba' script. Improve annotation for lifted loops. February 17, 2014
Octocat-spinner-32 buildscripts Update buildscript. Failing tests not caught by conda-build on windows. April 14, 2014
Octocat-spinner-32 deps Patch for issue #284 July 22, 2013
Octocat-spinner-32 docs Update documentation March 21, 2014
Octocat-spinner-32 examples Remove extension class example February 23, 2014
Octocat-spinner-32 numba Export intp and intc April 15, 2014
Octocat-spinner-32 oldnumba Merge branch 'devel' February 03, 2014
Octocat-spinner-32 tools Improve cuda driver initialization April 11, 2014
Octocat-spinner-32 tutorials vectorize default target is now called 'cpu' as in guvectorize and jit. February 12, 2014
Octocat-spinner-32 .gitattributes add versioneer February 01, 2013
Octocat-spinner-32 .gitignore Ignore .dylib files January 29, 2014
Octocat-spinner-32 .jenkins Added use of pip to skip some conda shortcomings in .jenkins April 26, 2013
Octocat-spinner-32 .jenkins.bat Added stub batch file for Jenkins CI on Windows. April 26, 2013
Octocat-spinner-32 .travis.yml Add argparse package to travis-ci script January 30, 2014
Octocat-spinner-32 AUTHORS Update CHANGE LOG September 18, 2013
Octocat-spinner-32 CHANGE_LOG Update changelog April 15, 2014
Octocat-spinner-32 LICENSE Add make_ufunc function. March 08, 2012
Octocat-spinner-32 Fix PyPi packaging February 20, 2014
Octocat-spinner-32 Update docs with installation instructions February 27, 2014
Octocat-spinner-32 Refactor lowering and codegen api January 21, 2014
Octocat-spinner-32 Patch for issue #283 (thanks to @eltjpm) July 22, 2013
Octocat-spinner-32 Added from __future and utf-8 encoding directive to all files (except… March 02, 2013
Octocat-spinner-32 Set safe conversion rule for Array with contiguous layout to any layout February 02, 2014
Octocat-spinner-32 Prepare for merge from NumbaPro January 12, 2014
Octocat-spinner-32 requirements.txt Update readme and requirements February 03, 2014
Octocat-spinner-32 Add multitest() for multiprocess testing January 29, 2014
Octocat-spinner-32 proof of concept export of npymath symbols using a module March 20, 2014
Octocat-spinner-32 Minimal support for user exception January 29, 2014
Octocat-spinner-32 Added from __future and utf-8 encoding directive to all files (except… March 02, 2013


Numba is an Open Source NumPy-aware optimizing compiler for Python sponsored by Continuum Analytics, Inc. It uses the remarkable LLVM compiler infrastructure to compile Python syntax to machine code.

It is aware of NumPy arrays as typed memory regions and so can speed-up code using NumPy arrays. Other, less well-typed code will be translated to Python C-API calls effectively removing the "interpreter" but not removing the dynamic indirection.

Numba is also not a tracing jit. It compiles your code before it gets run either using run-time type information or type information you provide in the decorator.

Numba is a mechanism for producing machine code from Python syntax and typed data structures such as those that exist in NumPy.


  • LLVM 3.3
  • llvmpy (from llvmpy/llvmpy fork)
  • numpy (version 1.6 or higher)
  • argparse (for pycc in python2.6)


The easiest way to install numba and get updates is by using the Anaconda Distribution:

    $ conda install numba

If you wanted to compile Numba from source, it is recommended to use conda environment to maintain multiple isolated development environments. To create a new environment for Numba development:

    $ conda create -p ~/dev/mynumba python numpy llvmpy

To select the installed version, append "=VERSION" to the package name, where, "VERSION" is the version number. For example:

    $ conda create -p ~/dev/mynumba python=2.7 numpy=1.6 llvmpy

to use Python 2.7 and Numpy 1.6.

Custom Python Environments

If you're not using anaconda, you will need LLVM with RTTI enabled:

  • Compile LLVM 3.3

See for the most up-to-date instructions.

    $ wget
    $ tar zxvf llvm-3.3.src.tar.gz
    $ cd llvm-3.3.src
    $ ./configure --enable-optimized --prefix=LLVM_BUILD_DIR
    $ # It is recommended to separate the custom build from the default system
    $ # package.
    $ # Be sure your compiler architecture is same as version of Python you will use
    $ #  e.g. -arch i386 or -arch x86_64.  It might be best to be explicit about this.
    $ REQUIRES_RTTI=1 make install
  • Install llvmpy
    $ git clone
    $ cd llvmpy
    $ LLVM_CONFIG_PATH=LLVM_BUILD_DIR/bin/llvm-config python install
  • Installing Numba
    $ git clone
    $ cd numba
    $ pip install -r requirements.txt
    $ python build_ext --inplace
    $ python install

or simply

    $ pip install numba

NOTE: Make sure you install distribute instead of setuptools. Using setuptools may mean that source files do not get cythonized and may result in an error during installation.


Mailing Lists

Join the numba mailing list :

Some old archives are at:


See if our sponsor can help you (which can help this project):

Continuous Integration

Something went wrong with that request. Please try again.