Зачем Rust в ядре CPython?
На Python Language Summit 2026 Дэвид Хьюитт (David Hewitt) представил дорожную карту проекта Rust for CPython. Основная цель — уменьшить число аварийных падений (label type-crash в issue-трекере) и повысить безопасность по мере того, как в CPython появляются сложные подсистемы: новый парсер, JIT, free-threading.
Команду возглавляют core-разработчики Кирилл Подопригора и Эмма Смит, авторы черновика PEP о Rust в CPython. В Discord-канале проекта около 60 участников, среди них несколько core-разработчиков Python и представители проекта Rust. У команды уже есть опыт интеграции Rust в крупные C-кодовые базы вроде Android и ядра Linux.
В экосистеме Python Rust давно присутствует через PyO3 и Maturin. Теперь речь идёт о том, чтобы Rust появился внутри самого CPython, а не только в сторонних пакетах.
План по этапам: сначала zlib
Предлагаемая дорожная карта выглядит так:
- Лето 2026 — поддержка Rust в build-системе и CI, пробный Rust API
- Конец 2026 — PEP с формальными критериями успеха
- Python 3.16 (октябрь 2027) — опциональный Rust-backend для модуля
zlib, C-реализация остаётся запасным вариантом - Python 3.17 (октябрь 2028) — устранение проблем с платформами, Rust в других частях (
io,json,xml,memoryview, парсер) - Некоторая версия 3.18+ (октябрь 2029+) — сборка CPython обязательно требует Rust, публикуется публичный Rust API
Почему выбран именно zlib:
- модуль небольшой по объёму, но критичен для Python packaging;
- при одобрении почти каждый
pip installв Python 3.16 станет быстрее; - реализация на Rust будет использовать внешний crate
zlib-rs(применяется в Firefox,uv, Cargo и часто быстрее zlib/zlib-ng), что позволяет отработать схему с Rust-зависимостями и Cargo.
Эскиз Rust API и критерии успеха
Дэвид показал пример Rust-функции с атрибутом #[pyfunction], параметром контекста Python<'_>, умными указателями Py<...> и идиоматичной обработкой ошибок через Result. В примере decompress буфер выделяется и автоматически освобождается при выходе из области видимости, тогда как в C его пришлось бы освобождать вручную.
Команда подчёркивает: Rust не гарантирует отсутствие багов, он лишь убирает целые классы ошибок памяти. Логические ошибки останутся, поэтому планируется активное использование property-based testing, fuzzing и аккуратных инженерных практик.
Предложенные критерии успеха:
- Большинство активных core-разработчиков готовы использовать Rust API (именно open, а не experts);
- Отсутствие заметного замедления бенчмарков CPython;
- Все платформы Tier 1–3, поддерживаемые CPython, должны успешно собираться с Rust, а дистрибутивы не должны испытывать чрезмерных трудностей.
На обсуждении подняли вопросы: стоит ли делать Rust API «похожим» на C API или проектировать его с нуля по-рустановски; почему это не полный переписанный форк (для этого уже есть RustPython); и насколько рискованно опираться на множество зависимостей из Cargo.
В любом случае, CPython ещё долго будет двуязычным проектом (C + Rust). Но если план сработает, Rust со временем может стать обязательной частью сборки CPython с устойчивым публичным API.
Источник: Python Insider










