Numba Mission Statement
This document is the mission statement for the Numba project. It exists to provide a clear description of the purposes and goals of the project. As such, this document provides background on Numba’s users and use-cases, and outlines the project’s overall goals.
This is a living document:
The first revision date is:
The last updated date is:
The next review date is:
The Numba project provides tools to improve the performance of Python software. It comprises numerous facilities including just-in-time (JIT) compilation, extension points for library authors, and a compiler toolkit on which new computational acceleration technologies can be explored and built.
The range of use-cases and applications that can be targeted by Numba includes, but is not limited to:
Computationally intensive tasks
Numerically oriented applications
Data science utilities and programs
The user base of Numba includes anyone needing to perform intensive computational work, including users from a wide range of disciplines, examples include:
The most common use case, a user wanting to JIT compile some numerical functions.
Users providing JIT accelerated libraries for domain specific use cases e.g. scientific researchers.
Users providing JIT accelerated libraries for use as part of the numerical Python ecosystem.
Those writing more advanced JIT accelerated libraries containing their own domain specific data types etc.
Compiler engineers who explore new compiler use-cases and/or need a custom compiler.
Hardware vendors looking to extend Numba to provide Python support for their custom silicon or new hardware.
The primary aims of the Numba project are:
To make it easier for Python users to write high performance code.
To have a core package with a well defined and pragmatically selected feature scope that meets the needs of the user base without being overly complex.
To provide a compiler toolkit for Python that is extensible and can be customized to meet the needs of the user base. This comes with the expectation that users potentially need to invest time and effort to extend and/or customize the software themselves.
To support both the Python core language/standard libraries and NumPy.
To consistently produce high quality software:
Feature stability across versions.
Well established and tested public APIs.
Clearly documented deprecation cycles.
Internally stable code base.
Externally tested release candidates.
Regular releases with a predictable and published release cycle.
Maintain suitable infrastructure for both testing and releasing. With as much in public as feasible.
To make it as easy as possible for people to contribute.
To have a maintained public roadmap which will also include areas under active development.
To have a governance document in place and it working in practice.
To ensure that Numba receives timely updates for its core dependencies: LLVM, NumPy and Python.