Python, compiled
Skip the interpreter
Write the numeric core in Python. zlow turns it into a native binary — no interpreter, no mypyc, no Cython. If we can't compile it correctly, we refuse it.
Skip the interpreter
44.3 ms to run the kernel. CPython took 1,133 ms on the same source.
A real binary
The compile path is Python source to native. CPython, mypyc, and Cython are not on it.
Checked against CPython
Every accepted kernel matches pinned CPython 3.14 on IEEE bits, not printed decimals.
Small on purpose
v0 is floats, bools, and control flow. Keep the rest of the app in Python.
Refuse, don’t guess
32 out-of-profile constructs are a named error. Nothing that merely looks right is written.
44.3 ms
to run the kernel
25.6×
faster than CPython
Lightning fast
Same kernel. The interpreter walks the loop; the binary just runs it.
| Runtime | entry() |
|---|---|
zlow native | 44.3 ms |
CPython 3.14 | 1,133 ms |
44.3 ms vs 1,133 ms for a five-million-iteration recurrence (median of five interleaved rounds; range 40.1–51.1 ms vs 1,072–1,169 ms). Compile once; this is the run of entry(). 39/39 fixtures still match CPython on bits.
What's in v0
A kernel, not a rewrite of CPython. Keep the rest of the app in Python; compile the hot path.
You can write
- float and bool functions
- locals, if / elif / while
- arithmetic, comparisons, and boolean ops
- calls between functions in the same project
Not this
- classes, lists, strings, or None
- for, imports, or the stdlib
- async, exceptions, or decorators
- CPython, mypyc, and Cython on the compile path
Fully featured
Compile the hot path to native. Keep writing Python.
Native binaries
Your numeric core becomes a binary. No interpreter at runtime.
Skip the interpreter
44.3 ms versus 1,133 ms on the same kernel. No CPython at runtime.
Familiar Python
def, if, while, floats and bools — write it like Python.
Simple setup
A zlow.json and one command. That is the whole setup.
Matches CPython
Accepted kernels match the interpreter you already trust.
Clear errors
Out of scope fails loudly. You never ship a binary that almost works.
Built for the hot path
Compile the numeric core. Keep the rest of the app in Python.
Same-project calls
Functions in the project can call each other. No import maze.
One project
Every .py file compiles together. Point zlow at the folder and go.
Fast to try
Install, add a project file, run zlow native .
No surprise runtime
We do not pretend print, imports, or the stdlib work.
Honest by default
Nothing is written unless we can honour it.
Try it
Add a project file, then compile.
npm install @zlow/cli
zlow native .Put zlow.json next to your entry and run zlow native . { "language": "python", "entry": "src/main.py" }