
Python 3.15 ships in October — less than two weeks away — and if you build CPython from source, your configure script is about to complain. On September 14, The Register reported that at RustConf in Montréal, CPython maintainers confirmed a significant course correction: mandatory Rust is off the table, at least for now. The original plan would have required a Rust compiler to build Python by version 3.17. That milestone is indefinitely postponed. Here’s what actually changed, what still applies, and what your CI needs before October.
The Original Plan Was Aggressive
Late 2025, Python core developers Emma Smith and Kirill Podoprigora proposed integrating Rust into CPython. The logic was sound: Rust could rewrite performance-critical standard library modules like zlib and base64 with memory safety guarantees and measurable speed gains. The proposed roadmap escalated in three steps:
- Python 3.15: configure script warns if no Rust compiler is found at build time
- Python 3.16: configure fails without Rust unless you pass
--with-rust=no - Python 3.17: Rust becomes a full mandatory build dependency
That third step is what died at RustConf. It is now postponed indefinitely.
What Actually Happened at RustConf
Rust Programming Manager Tomáš Šedovič presented the revised approach at the conference. The shift: Rust will be used for optional extension modules only, never required to build or run standard Python. All Rust code ships vendored via Cargo inside the CPython source tree, so no external package manager is needed at build time. The bridge between Rust and CPython’s C internals uses the cpython-sys crate, with bindgen auto-generating Rust bindings from CPython’s C headers.
Šedovič was direct about the reasoning: the move sidesteps a lot of the concerns that people raised. That is a diplomatic reference to the Linux kernel situation — years of maintainer conflicts, resignations, and mailing list wars before Rust was finally declared permanent in December 2025. CPython’s leadership chose to learn from that episode rather than repeat it.
The Revised Timeline
| Version | Expected | Rust Impact | What to Do |
|---|---|---|---|
| 3.15 | October 2026 | configure warns if rustc missing | Add rustc or live with the warning |
| 3.16 | October 2027 | configure fails without --with-rust=no | Add rustc or explicitly opt out |
| 3.17 | ~2028 | Mandatory — postponed indefinitely | Watch for updates |
Who Is Actually Affected
If you install Python from pyenv, Homebrew, apt, conda, or Docker’s official python:3.x images, you are completely unaffected. Binary distributions do not trigger the configure script.
The developers who need to act are those building CPython from source: custom Alpine Linux Docker images that compile Python in the image layer, embedded platform toolchains, CI that compiles the interpreter rather than downloading a binary, or any environment running ./configure && make directly. For those cases, the fix is straightforward:
# Option 1: Add Rust to your build environment
curl --proto '='https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Option 2: Suppress the warning/failure explicitly (Python 3.15+)
./configure --with-rust=no && make
The Zlib Crate Is the Real Test
The first Rust code to ship in CPython will be a reimplementation of the zlib module, targeting Python 3.16 in October 2027. It ships as an optional extension. If the Rust zlib is measurably faster, more correct, and does not cause platform headaches, the case for eventually making Rust mandatory becomes much stronger. If it introduces cross-platform bugs, maintenance debt, or build friction on unusual architectures, the indefinite postponement of 3.17’s mandatory requirement stays indefinite.
The zlib crate is effectively a one-year proof of concept running under production conditions. The Python Insider blog and the pre-PEP discussion thread have the full technical details. The LWN.net analysis covers the community reaction in depth.
The Right Call
Mandatory Rust in CPython would have triggered the same fight the Linux kernel had — years of political overhead, maintainer burnout, and real platform breakage for Python’s unusually wide target range, which includes architectures where Rust simply does not build. There is also a circular dependency problem: rustc itself is partially built using Python, making a strict mandatory requirement genuinely awkward to bootstrap.
Optional-first is the correct approach. Rust gets to prove its value in the zlib module before it gets to demand a compiler from every Python developer on the planet. That is responsible stewardship of a 35-year-old ecosystem. Python 3.15’s configure warning is a polite signal: Rust is coming to CPython. The timeline is just longer than originally planned — and that’s fine.













