В Python 3.17 предложили сделать Rust обязательным. CPython ждет крупнейшая реформа за 10 лет

В 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 упрощает сопровождение.
В Python 3.17 предложили сделать Rust обязательным. CPython ждет крупнейшая реформа за 10 лет

Что именно планируют делать

Стоит отметить, что 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.

https://school-maestro7it.ru/
https://school-maestro7it.ru/

❂ Полезные ссылочки: Telegram Канал | ВК Групп

❂ Хижина программиста: Rutube | YouTube | Plvideo

✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤

⌨ Теги:

Начать дискуссию