🛒 Arduino, ESP32 и модули
Rust для CPython: пошаговый план внедрения в ядро Python

Rust для CPython: пошаговый план внедрения в ядро Python

Команда Rust for CPython предлагает начать с модуля zlib, снизить количество аварий и к 2029 году сделать Rust обязательным для сборки интерпретатора.

7 октября 2026 г.3 мин чтения15 теги

Зачем 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

Videolar

(1)
Rust for CPython – Python Language Summit 2026