pyscriptc
Compile annotated Python to a native binary. No CPython at runtime.
pyscriptc compiles typed Python to native executables. It uses Python's inferred types and type hints to generate machine code from supported code. Static output runs without a Python runtime.
pyscriptc is experimental, aims for CPython compatibility, and supports a subset of Python, its builtins and standard library, and selected PyPI packages. For any code that's not supported, it can run it in CPython runtime. The CPython runtime is not bundled and is expected to be available at the host.
Installation
uv tool install pyscriptc
Building a binary needs a clang (or zig) on your PATH; pyscriptc doctor checks. See getting started for other install methods and toolchain setup.
Windows: the pyscriptc binary runs there (experimental) and coverage works. Emitted programs are experimental cross-compilation only: pyscriptc compile FILE --target x86_64-windows-gnu --driver zig builds a Windows binary from Linux or macOS, but no CI job runs the output and Windows semantics are unverified. Native Windows compiles are not supported yet.
Documentation
Documentation site, including the CLI reference and the Python subset.
Hello world
Create hello.py:
def main() -> None:
print("hello from a native binary")
if __name__ == "__main__":
main()
pyscriptc run hello.py
pyscriptc compile hello.py --emit bin -o hello && ./hello
Benchmarks
| Group | Time | Peak memory |
|---|---|---|
| Kernels (sum-squares, floor-sum, horner, repeat-len) | 23.9x faster | 5.8x smaller |
| Scripting | 22.2x faster | 6.0x smaller |
| Stdlib calls | 14.4x faster | 5.2x smaller |
Compiled binary versus the same call under CPython 3.15.0, geometric mean per workload group, higher is better. Reference recorded 2026-10-15 on one Linux x86_64 host (8 CPUs, 5 runs per sample).
Source: benchmarks/baseline/reference.json. Fresh numbers are in the job summary of the latest nightly run. Reproduce with uv run python -m benchmarks.baseline.run --check.
Using the stdlib
The practical summary and the fenced constructs: The Python subset.
Using PyPI packages
We keep track of the share of the top 100 PyPI libraries that compiles. Mind that the compiler requires typed code. The per-library status lives in the generated .agents/docs/support/compat-top100.md (moving to the compat site, see The Python subset).
Contributing
See Contributing for setup and conventions.
License
Apache License 2.0. See LICENSE.
Metadata
Release files for pyscriptc 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| pyscriptc-0.6.0.tar.gz | 1.3 MB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyscriptc-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.7 MB
Release files / pyscriptc-0.6.0.tar.gz
| Download URL | pyscriptc-0.6.0.tar.gz |
|---|---|
| Size | 1.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1ead34bc23b783a65e31b81c5aa5a1889293405e5aeed1185e1984124e63e98c
|
|
BLAKE2b-256 checksum How to use checksums |
fce621af89271ea9e6a0905cc39166e85519079cca3bb2c54f576f9bd3fa041a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / pyscriptc-0.6.0-py3-none-any.whl
| Download URL | pyscriptc-0.6.0-py3-none-any.whl |
|---|---|
| Size | 1.4 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ec9c644f038aa7554283017be092ad5b6cb39d9e2e849c7a6260dcd970dd522a
|
|
BLAKE2b-256 checksum How to use checksums |
1317ca7692269d64195a5b5cc3bd261dbd7ce0cac3bdb048308e37c398c1096d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logSecurity for pyscriptc 0.6.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for pyscriptc-0.6.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.