llvmlite
lightweight wrapper around basic LLVM functionality
Install
llvmlite on PyPI
pip
pip install llvmliteuv
uv add llvmlitepoetry
poetry add llvmlitePackage facts
| License | BSD-2-Clause AND Apache-2.0 WITH LLVM-exception (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 2 days since the last release |
| Last repo commit | |
| First released | |
| Popularity | one of the top 1,000 most-downloaded packages on PyPI (30-day window, as of 2026-08-13) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-13) |
Evidence: llvmlite-0.49.0-cp310-cp310-macosx_12_0_arm64.whl; llvmlite-0.49.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; llvmlite-0.49.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl; llvmlite-0.49.0-cp310-cp310-win_amd64.whl; llvmlite-0.49.0-cp311-cp311-macosx_12_0_arm64.whl; llvmlite-0.49.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; llvmlite-0.49.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl; llvmlite-0.49.0-cp311-cp311-win_amd64.whl; llvmlite-0.49.0-cp312-cp312-macosx_12_0_arm64.whl; llvmlite-0.49.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; llvmlite-0.49.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl; llvmlite-0.49.0-cp312-cp312-win_amd64.whl; llvmlite-0.49.0-cp313-cp313-macosx_12_0_arm64.whl; llvmlite-0.49.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; llvmlite-0.49.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl; llvmlite-0.49.0-cp313-cp313-win_amd64.whl; llvmlite-0.49.0-cp314-cp314-macosx_12_0_arm64.whl; llvmlite-0.49.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; llvmlite-0.49.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl; llvmlite-0.49.0-cp314-cp314t-macosx_12_0_arm64.whl
About llvmlite
from the package's own PyPI description — quoted content, verbatim
======== llvmlite ========
.. image:: https://dev.azure.com/numba/numba/_apis/build/status/numba.llvmlite?branchName=main :target: https://dev.azure.com/numba/numba/_build/latest?definitionId=2&branchName=main :alt: Azure Pipelines .. image:: https://coveralls.io/repos/github/numba/llvmlite/badge.svg :target: https://coveralls.io/github/numba/llvmlite :alt: Coveralls.io .. image:: https://readthedocs.org/projects/llvmlite/badge/ :target: https://llvmlite.readthedocs.io :alt: Readthedocs.io
A Lightweight LLVM Python Binding for Writing JIT Compilers
.. _llvmpy: https://github.com/llvmpy/llvmpy
llvmlite is a project originally tailored for Numba_'s needs, using the following approach:
- A small C wrapper around the parts of the LLVM C++ API we need that are not already exposed by the LLVM C API.
- A ctypes Python wrapper around the C API.
- A pure Python implementation of the subset of the LLVM IR builder that we need for Numba.
Why llvmlite
The old llvmpy_ binding exposes a lot of LLVM APIs but the mapping of C++-style memory management to Python is error prone. Numba_ and many...
Read as markdown · JSON record · Source repository · Homepage
AI interpretation — verify before relying
AI-generated interpretation of the package facts above; every digit, version, license, or vulnerability id it cites is grounded in the facts already shown on this page
llvmlite provides a lightweight Python binding to LLVM's core APIs for building JIT compilers, exposing an IR builder, optimizer, and compiler interface without requiring direct C++ interaction.
Medium install friction due to compiled wheels; however, pre-built binaries are available across Python 3.10–3.14 and major platforms (x86_64, ARM64, Windows). Maintenance is active with a recent release (2 days old) and steady repository engagement (2279 stars).
Dual-licensed under BSD-2-Clause and Apache-2.0 WITH LLVM-exception (permissive); both are business-friendly and impose no copyleft obligations, making the package suitable for proprietary and open-source projects alike.
Usage
import llvmlite.binding as llvm
llvm.initialize()
llvm.initialize_native_target()
llvm.initialize_native_asmprinter()
Requires LLVM 22.x.x system library; Python ≥3.10 required.
Verdict: llvmlite is a well-maintained, actively developed binding for LLVM IR generation and JIT compilation. Its permissive dual license, zero known vulnerabilities, broad platform coverage, and active maintenance make it a solid choice for projects requiring low-level code generation. The medium install friction is offset by pre-built wheels and clear LLVM version requirements.
Needs verification
- Whether LLVM 22.x.x must be pre-installed system-wide or if wheels bundle it
- Performance characteristics relative to direct LLVM C API usage for specific workloads
- Stability guarantees for the pure-Python IR builder across LLVM version transitions
Similar packages
permissive · top 1,000 on PyPI
pybind11permissive · top 1,000 on PyPI
tritonpermissive · top 1,000 on PyPI
pypdfium2permissive · top 1,000 on PyPI
jpype1permissive · top 1,000 on PyPI
tree-sitter-bashpermissive · top 1,000 on PyPI
nvidia-nvjitlinkunclear · top 1,000 on PyPI
nvidia-nvjitlink-cu12unclear · top 1,000 on PyPI
jaxpermissive · top 1,000 on PyPI
nvidia-cuda-nvrtc-cu12unclear · top 1,000 on PyPI