В Python 3.17 предложили сделать Rust обязательным. CPython ждет крупнейшая реформа за 10 лет
Команда CPython обсуждает предложение (pre-PEP), которое может радикально изменить процесс сборки интерпретатора: Rust предлагают сделать обязательной зависимостью уже в Python 3.17.
Если PEP примут, Python впервые за историю станет «двуязычным» проектом — частично на C, частично на Rust.
Зачем Python нужен Rust
Разработчики приводят несколько причин:
- Безопасность памяти. Rust устраняет категории ошибок, привычные для C: use-after-free, гонки, переполнения.
- Подготовка к free-threaded Python. Переход к работе без GIL требует безопасных примитивов — Rust подходит идеально.
- Производительность. Rust позволяет создавать быстрые структуры данных без ручного менеджмента памяти.
- Современный стек. Linux, Android и Firefox уже используют Rust в системных компонентах — Python догоняет тренд.
- Поддержка долгосрочного развития CPython. Сложность кода растет, а Rust упрощает сопровождение.
Что именно планируют делать
Стоит отметить, что Rust не планируют использовать в качестве полной замены C — появится возможность использовать оба языка.
В идеале, должен получиться симбиоз:
- Crate cpython-sys. Это набор автоматически сгенерированных привязок (FFI-слоя), которые позволяют Rust-коду безопасно «общаться» с внутренним API CPython.
- Поддержка модулей на Rust. Некоторые части стандартной библиотеки можно будет писать и подключать так же, как C-модули — только на Rust.
- Прозрачное разделение зон безопасности. «Безопасный» Rust будет использоваться по максимуму, а unsafe — только там, где нужно напрямую взаимодействовать с C-частями интерпретатора.
Уже есть рабочий пример — модуль _base64 на Rust, который оказался быстрее варианта на C.
Переходный план
Если PEP утвердят, переход займет три релиза:
- Python 3.15 — предупреждение при сборке без Rust.
- Python 3.16 — Rust остается опциональным, но его отключение потребует отдельного флага.
- Python 3.17 — Rust становится обязательной частью сборки CPython.
То есть через два релиза Python не соберется там, где нет Rust.
Какие есть проблемы
В обсуждении упоминают несколько рисков. Например, циклическая зависимость при сборке — Rust требует Python, Python требует Rust.
Вместе с тем, внедрение нового языка приведет и к повышению порога входа для новых участников разработки CPython. Как минимум потому, что им придется изучить Rust.
Появятся и сложности со сборкой в ограниченных средах, например embedded-системах. При этом остается неясной судьба Rust-API для сторонних расширений — скорее всего, его не откроют.
Что это значит для сообщества
Для пользователей Python почти ничего не изменится. А вот для разработчиков интерпретатора это станет одним из самых крупных сдвигов в истории проекта.
Так, Python наконец-то станет сильно безопаснее. При этом CPython получит более надежный фундамент для будущих фич вроде полного отказа от GIL.
❂ Полезные ссылочки: Telegram Канал | ВК Групп
✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤
⌨ Теги: