Start with the artifact
“Native” does not describe one deployment model.
Ahead-of-time compilation happens before execution, but the resulting artifact can still be a CPython extension, an executable that carries CPython runtime components, or native machine code for a restricted Python subset or a different static language model. Those choices affect compatibility, distribution, type behavior, and which Python programs can be accepted.
The table below compares those models. It does not rank performance: no shared, reproducible benchmark suite currently exists in this repository, so speed claims would not be evidence-backed.
Different contracts
Six projects with overlapping output models.
| Tool | Input contract | Output and runtime | Current positioning |
|---|---|---|---|
| pycc | Typed, standard Python 3.14 is the v1 design target | Standalone native executable without CPython for native and pure builds; planned permitted interop bundles a pinned CPython runtime | Pre-alpha; v0.1 frontend and native backend implemented with documented gaps; not production-ready |
| LPython | Type-annotated Python subset; accepted programs are intended to remain CPython-compatible | AOT binary via LLVM; C, C++, and WASM are also documented backends, with optional CPython interop | Alpha; focused on numerical and array-oriented typed Python |
| Codon | A statically compiled language close to Python, with documented differences and additions | Native machine code without interpreter runtime overhead | High-performance applications that can adopt Codon's language model |
| Nuitka | Python applications with a compatibility-first model | Executable or extension; standalone and onefile modes package required runtime dependencies | Application compilation, distribution, and CPython ecosystem compatibility |
| mypyc | Standard Python type hints with a strict, gradually typed compiled subset | Native C extension imported and run by CPython | Alpha; accelerating typed Python modules while keeping CPython interoperability |
| Cython | A Python superset with optional static type declarations | Generated C or C++; commonly a CPython extension, with a documented CPython-embedding executable path | Extension development, native-library integration, and targeted acceleration |
Choose by constraint
The right tool depends on what must stay compatible.
- Package an existing Python application Nuitka explicitly documents standalone and onefile distribution modes while preserving a CPython-oriented compatibility model.
- Speed up typed modules inside CPython mypyc produces C extensions from standard type hints; Cython offers a broader Python-superset and C/C++ integration path.
- Compile a typed Python subset to a binary today LPython is an alpha AOT compiler with LLVM, C, C++, and WASM backends; its accepted subset is intended to remain compatible with CPython.
- Compile performance-oriented Python-like code without CPython Codon is available today, with deliberate language and semantic differences documented by its maintainers.
- Target strict standard Python with autonomous deployment Native and pure pycc builds target a standalone runtime; planned permitted interop carries a pinned CPython runtime in the application bundle.
Honest project boundary
pycc is testing a combination, not claiming a win.
pycc aims to combine hard compile-time type enforcement, standard Python syntax, a native executable without an embedded CPython interpreter for native and pure builds, an autonomous bundle for planned permitted CPython interop, and a five-target portability gate. The repository now parses, type-checks, and compiles the implemented v0.1 surface through MIR, LLVM, and its native runtime, and v0.1's own acceptance criteria are met on all five Tier-1 targets. Explicit representation and lifetime gaps remain, the full multi-version conformance matrix is unfinished, and no production release exists.
Follow the status page if the target model is relevant. Use a mature tool whose current runtime and compatibility contract matches your application if you need to ship now.
Primary documentation
Check each project's own contract.
- LPython project documentation Typed Python subset, AOT compilation, supported backends, project maturity, and CPython interoperability.
- LPython source repository Supported platforms, subset compatibility goal, compiler architecture, and current examples.
- Codon language overview Python differences, static compilation constraints, and native-code model.
- Nuitka use cases Executable, extension, standalone, and onefile deployment modes.
- mypyc introduction Type-hint compilation, strict compiled subset, C extensions, and CPython runtime.
- Cython overview Python-superset language, optional static declarations, and extension-module output.
-
Cython embedding guide
The CPython-initializing executable path supported by
cython --embed. - pycc roadmap Commit-relative implementation status and binary acceptance gates.