CPython подойдёт к Rust через эксперимент, а не приказ. Команда Rust for CPython разработала модель, при которой новый язык войдёт в проект без переделки всей цепочки сборки. Компоненты стандартной библиотеки можно писать на Rust, но они останутся необязательными — отсутствие компилятора Rust не помешает собрать интерпретатор на редких и специализированных платформах.

Вначале планы были жёстче. В ноябре 2025 года авторы pre-PEP предполагали, что Rust рано или поздно станет обязательной зависимостью и проникнет во весь код. После обсуждения сообщество быстро сузило масштаб до необязательных расширений, а вопрос об обязательном Rust отложили в отдельный PEP для будущего обсуждения.

Такой подход снимает несколько острых вопросов сразу. CPython работает не только на популярных x86-64 и ARM, но и везде, где его можно скомпилировать. Rust распространён неравномерно. Плюс сам Rust при сборке использует Python — обязательная зависимость создала бы цикл: новому Python нужен Rust, а Rust требует Python.

Техническая причина остаётся. Большая часть CPython написана на C, где ошибки управления памятью вызывают выход за границы буфера, использование освобождённых объектов, гонки данных. Rust пресекает множество таких проблем при компиляции. Граница между Rust и C всё равно потребует контроля, особенно участки unsafe.

Постепенное внедрение стало общей стратегией в крупных системных проектах. Rust в ядре Linux прошёл от эксперимента к стабильному инструменту и в апреле 2026 года перестал быть экспериментальным. CPython не копирует модель ядра напрямую и пока не требует от разработчиков одновременно работать с обоими языками.

Проект Rust for CPython создал отдельную ветку интерпретатора с поддержкой Cargo и тестирует внутренний Rust API. Первая цель интерфейса не в библиотеке для внешних разработчиков, а в безопасной связи нового кода с внутренними структурами CPython. Публичную стабилизацию отложили на отдельное предложение.

Один из испытательных проектов — zlib-py, небольшой модуль, который подключает реализацию zlib-rs к Python. Тесты показали ускорение ряда операций сжатия и распаковки, хотя отдельные сценарии, вроде CRC32 на ARM64, работают медленнее. Такой прототип нужен для проверки сборки, интерфейсов и взаимодействия Rust с C.

Работа рассчитана на Python 3.16. В апрельском плане команда нацелила первый код на Rust именно на эту ветку, финальный релиз которой выходит 5 октября 2027 года. Впереди вопросы линковки, совместной проверки памяти в C и Rust и корректного освобождения Python-объектов в разных средах.

Отдельная сложность в инструментах сборки. Cargo удобен для управления зависимостями и компиляцией, но CPython десятилетиями строит переносимый процесс вокруг C-компиляторов и собственных скриптов. Команды обсуждают поддержку GCC, совместимость библиотек и способы не заставлять дистрибутивы менять цепочку только ради необязательного компонента.

Речь не идёт о переписывании Python на Rust. Даже Гвидо ван Россум поддержал постепенный подход, когда новый язык сначала появляется в менее критичных местах. Для Rust это уже сработало в других крупных кодовых базах, где безопасность памяти стала аргументом за точечную миграцию вместо полной замены.

Нынешняя стратегия разделяет технический эксперимент и обязательное требование. Разработчики CPython проверят Rust на реальном коде, а сборщики дистрибутивов и владельцы редких платформ не обязаны менять окружение сейчас. Вопрос об обязательном Rust остаётся открытым и потребует решения после испытаний.