Static Compilation (pycc)¶
pycc allows users to compile Numba functions into a shared library. The user writes the functions, exports them and the compiler will import the module, collect the exported functions and compile them to a shared library. Below is an example:
from numba import * def mult(a, b): return a * b export('mult f8(f8, f8)')(mult) exportmany(['multf f4(f4, f4)', 'multi i4(i4, i4)'])(mult) export('multc c16(c16, c16)')(mult)
This defines a trivial function and exports four specializations under different names. The code can be compiled as follows:
Which will create a pure shared library for your platform which can be linked against any other program. This is not a Python extension. You would have to use ctypes to load the code that is created. Multiple files may be given to compile them simultaneously into a shared library. Options exist to compile to native object files instead of a shared library and to emit LLVM code. For more information on the available command line options, see pycc -h.
C header generation has been disabled in this release due to an incorrect implementation. The feature will return in a future release of Numba.