mrkeyoor.com_
Sat 26 Sept 23:38 UTC
Dev Toolsevaluationupdated 26 Aug 2026

RustPython review

RustPython is a Python 3 interpreter written in Rust rather than a wrapper around CPython. It is useful when a Rust application needs embedded Python, or when Python code must run in WebAssembly or WASI without shipping the usual CPython runtime.

+12stars / 7d
Verdict

Our RustPython build and 2-test Cargo suite both passed, but they consumed 947 seconds combined and do not establish CPython 3.14 compatibility across a 1,311,696-line checkout. Try it for Rust embedding or WebAssembly, where its architecture solves a problem CPython does not solve neatly. Keep CPython as the safer default for general applications, native extensions, and untrusted Python source.

We ran it

Lab card: what happened when we ran RustPythonScreenshot of RustPython (rustpython.github.io)
Install✓ · 58s382 packages
Build✓ · 470s
Tests✓ · 477s2 passed · 0 failed of 2 (cargo test)
Repo3326 files~1,311,696 lines of source · 67.2 MB · 10 CI workflows

Answers from our run

Does RustPython build from source?

Dependencies installed in 58 seconds (382 packages), and the build succeeded in 470 seconds. We cloned commit cc1e55e into a clean Debian container with 3 CPUs and no project-specific setup.

Do RustPython's tests pass?

Yes: 2 of 2 passed when we ran the project's own test command (cargo test). Some failures need services or credentials a bare container does not have.

Who should not use RustPython?

Teams needing drop-in CPython compatibility for arbitrary packages: the README says RustPython is not fully production-ready, and Python 3.14 library and test updates remain open.

What are the alternatives to RustPython?

CPython, PyPy, MicroPython. Our RustPython build and 2-test Cargo suite both passed, but they consumed 947 seconds combined and do not establish CPython 3.

Setup3/5Cargo works, but the build is long and SSL or JIT adds system tools
Docs3/5Useful recipes exist; the README calls documentation early
Community4/5Pushed August 2026 with active compatibility work and issue discussion
Maturity3/5Real embedding and WASM uses, with acknowledged compatibility gaps

Discussed on

  1. hnRustPython607 points
  2. hnA Python Interpreter Written in Rust430 points
  3. hnRustPython – A Python-3 (CPython >= 3.11.0) Interpreter written in Rust229 points
  4. hnRustPython: A Python Interpreter Written in Rust196 points
  5. hnPython interpreter written in rust reaches 10000 commits194 points

Who it’s for

Rust developers who want to expose Python scripting inside an application.
Browser and edge-tool builders who need a Python interpreter compiled to WebAssembly or WASI.
Language implementers interested in a clean Rust implementation of Python 3 semantics.
Contributors willing to help close compatibility gaps against CPython 3.14.

Who it’s NOT for

Teams needing drop-in CPython compatibility for arbitrary packages: the README says RustPython is not fully production-ready, and Python 3.14 library and test updates remain open.
Workloads built around CPython C extensions: an open pull request still describes its C API implementation as minimal.
Services parsing hostile or deeply nested Python source: open issue 7655 reports a parser SIGSEGV near 4,000 nesting levels instead of CPython's SyntaxError.
Users who expect a polished binary installer: the README says installation is not well packaged and suggests a virtual environment to make pip easier.
Anyone counting on the JIT for routine speedups: the project labels it very experimental and requires extra native build tools.

Setup reality

Our sandbox installed 382 Rust packages in 58 seconds. The build succeeded in 470 seconds, then cargo test succeeded in 477 seconds with 2 passed and 0 failed. The checkout was 67.2 MB with 3,326 files and about 1,311,696 source lines.

Basic local use needs the latest stable Rust toolchain. Pip requires an SSL-enabled build; OpenSSL on Windows may add a C compiler, Perl, and Make, while the default binary uses a rustls provider. The experimental JIT adds autoconf, automake, libtool, and Clang.

Windows needs symlink handling and may need RUSTPYTHONPATH. WASI requires its Rust target and a release build. The README also warns that packaging and documentation are still early.

Rust embedding and WebAssembly are the reason to choose it

RustPython implements a Python 3 interpreter in Rust. It can run a REPL, execute a command, create a virtual environment, install pip when SSL support is enabled, and expose Python scripting inside a Rust application. The repository includes small embedding examples, which is the clearest reason to consider it: an application can offer a familiar scripting language without binding its architecture to CPython.

The other strong fit is WebAssembly. RustPython has documented builds for WASI and a browser demo. A freeze-stdlib feature can include the standard library in the WebAssembly binary, and the README shows running the result through Wasmer or WAPM. These paths are more specific than another Python interpreter: they put it in environments where distributing CPython can be awkward.

The 470-second build asks for patience

We cloned commit cc1e55e into a fresh Debian container with 3 CPUs and 12 GB of RAM. Installation resolved 382 Rust packages in 58 seconds. The build then succeeded in 470 seconds. Rust compilation is expected to do substantial work here, but nearly 8 minutes is still a cost for clean CI jobs, ephemeral development environments, and frequent feature-matrix builds.

The checkout contained 3,326 files, about 1,311,696 lines of source, and occupied 67.2 MB. That line count includes an interpreter, standard-library material, tests and supporting code rather than one small crate. Ten CI workflow files show active automation, while our scan found no Dockerfile and no directory literally named tests. Neither directory signal describes all testing in a Rust workspace.

What happened when we ran it

Our cargo test step succeeded in 477 seconds. Cargo reported 2 passed and 0 failed out of 2. Combined with the 470-second build, the measured compile and test work took 947 seconds after installation. Nothing in the supplied log showed a compiler error or failing test at commit cc1e55e.

Two passing tests are a narrow result for a Python interpreter with 1,311,696 source lines. They prove that the default command selected by our harness completed in this container. They do not prove broad Python language conformance, standard-library parity, C-extension support, platform behavior, or performance. The open compatibility tracker is better evidence of how much CPython 3.14 work remains.

Our sandbox did not run the browser demo, build the WASI target, enable the JIT, install third-party Python packages, or benchmark code against CPython. We therefore make no speed claim. The project itself calls the JIT very experimental, and an open pull request proposes a performance regression check, which shows that performance tooling is still being developed.

CPython compatibility remains unfinished

The README identifies CPython 3.14 or newer as the language target and separately says RustPython is not completely production-ready. Issue 6839 tracks updates to Python 3.14.7 libraries and tests. Its long checklist includes completed modules alongside unfinished areas such as warnings, pickle, JSON, typing, asyncio, concurrent futures, multiprocessing, and parts of the test suite.

That tracker is more useful than a vague maturity label. A script using basic syntax and pure Python modules may work, while an application leaning on a missing standard-library corner can stop quickly. Native-extension compatibility is a larger boundary: open pull request 7562 describes a minimal C API capable of building with PyO3, not a finished substitute for CPython's extension ecosystem. Test your real dependencies before designing around RustPython.

Deeply nested input can crash the current parser

Open issue 7655 reports that roughly 4,000 nested brackets or parentheses cause a SIGSEGV in the parser, where CPython rejects deep nesting with a SyntaxError. The report reproduces the crash through both compile() and ast.parse() and identifies the shared parser layer. That makes RustPython a poor choice for evaluating arbitrary source supplied by untrusted users until the behavior is fixed and verified.

Another open report, issue 8449, says a statically linked Linux build compiled successfully and then segfaulted at startup, while the non-static build ran. One report does not define every static target, but it is a concrete reason to test the exact linking strategy and deployment image. A green compile alone is insufficient for an alternate interpreter.

Installation has several platform branches

The ordinary path needs the latest stable Rust toolchain and a release build. Windows users may have to enable Git symlinks and set RUSTPYTHONPATH to the repository's Lib directory. Pip installation requires SSL support. On Windows, the OpenSSL route may require OpenSSL 3, a C compiler, Perl, and Make, while a vendored feature compiles OpenSSL for the build.

WASI users must install the wasm32-wasip1 target. JIT users add autoconf, automake, libtool, and Clang, then opt into the Cargo feature. The repository's GitHub latest-release endpoint returned no release object, although the last push was August 26, 2026 and active issues were updated the same day. Health is visible in current work, but distribution remains less settled than CPython's.

Use it for the runtime boundary, not Python familiarity

RustPython is compelling when the runtime boundary is the actual requirement: Python inside a Rust program, or an interpreter compiled to WebAssembly. The MIT license and active development make a prototype easy to justify, and our build completed without errors.

For a normal Python service, familiarity is not enough. The 2 passing tests from our run do not cancel the project's own production disclaimer, unfinished 3.14 parity, parser crash report, or packaging caveat. Start with one representative script and its dependencies. If Rust or WASM integration is worth the compatibility work, continue. Otherwise, CPython remains the practical answer.

Alternatives

ProjectWhat it isPick it when
CPython gh↗The reference Python implementation and compatibility target for the ecosystem.pick this instead when package compatibility and production predictability matter more than a Rust-native runtime.
PyPyA Python implementation with a tracing JIT and broad Python compatibility.pick this instead when speeding up long-running Python code is the main goal.
MicroPython gh↗A compact Python implementation designed for microcontrollers and constrained systems.pick this instead when the target is embedded hardware rather than Rust or WebAssembly integration.

What people are saying

  1. [github-trending] RustPython/RustPython

Sources

  1. RustPython README
  2. RustPython repository
  3. Python 3.14 library and test tracker
  4. Parser stack overflow issue
  5. Static build crash issue

More dev tools reviews

terminal-browser · fearless_simd · devops-exercises · scriptc · 30-seconds-of-code · styleguide · the whole board →