Llvmlite
A lightweight LLVM-Python binding for writing JIT compilers.
llvmlite provides a Python binding to LLVM for use in Numba. Numba previously relied on llvmpy.
Llvmpy became hard to maintain because:
- It has a cumbersome architecture.
- The C++11 requirement of recent LLVM versions does not go well with the compiler and runtime ABI requirements of some Python versions, especially under Windows.
Llvmpy also proved to be responsible for a sizable part of Numba’s compilation times, because of its inefficient layering and object encapsulation. Fixing this issue inside the llvmpy codebase seemed a time-consuming and uncertain task.
The Numba developers decided to start a new binding from scratch, with an entirely different architecture, centered around the specific requirements of a JIT compiler.