20.11.2025 | Конец эпохи C? Разработчики Python предложили переписать ядро на Rust |
Два разработчика CPython предложили добавить язык программирования Rust в кодовую базу Python. Эмма Смит и её коллега опубликовали предварительное предложение по улучшению Python (Pre-PEP), в котором обосновали необходимость этого шага. Пока Rust планируется использовать только для написания опциональных модулей расширения, но в будущем он может стать обязательной зависимостью. Главная причина внедрения Rust — повышение безопасности памяти. Язык предотвращает целые классы ошибок на уровне компиляции: выход за границы массива, обращение к освобождённой памяти и гонки данных в многопоточном коде. Это особенно актуально для free-threaded Python, где безопасность потоков критически важна. Проект RustBelt даже формально доказал корректность гарантий безопасности Rust для кода без использования небезопасных конструкций. CPython регулярно сталкивается с багами из-за неправильной работы с памятью. Авторы предложения считают, что Rust радикально сократит число таких проблем. Даже если часть кода останется небезопасной из-за взаимодействия с C API, основная логика модулей будет написана на безопасном Rust. Rust уже активно используется крупными проектами на C и C++. Ядро Linux , Android , Firefox и множество других систем внедряют этот язык для повышения надёжности. Google уже отчитался о позитивных результатах применения Rust в Android. Интересно, что от 25% до 33% новых расширений для Python пишутся именно на Rust — внедрение языка в сам CPython может дополнительно простимулировать это направление. Помимо безопасности, Rust предлагает высокопроизводительные структуры данных из стандартной библиотеки . Векторы, хеш-таблицы, мьютексы — всё это реализовано с нулевыми накладными расходами и хорошо документировано. Система макросов Rust превосходит макросы C: декларативные макросы гигиеничны и не захватывают переменные случайно, а процедурные позволяют делать мощные трансформации кода. Библиотека PyO3 активно использует процедурные макросы для упрощения работы с Python API. Разработчики уже создали прототип с модулем Rust поддерживает все платформы из PEP 11 и даже больше . Все tier-1 платформы Python соответствуют tier-1 или tier-2 в Rust с полным набором инструментов разработчика. Кросс-компиляция настраивается легко — достаточно установить нужную цель и указать линкер. Авторы отказались от идеи использовать готовую библиотеку PyO3 внутри CPython. Это создало бы лишний уровень абстракции и замедлило разработку: каждое новое API сначала добавлялось бы в PyO3, потом версия обновлялась бы в CPython. С bindgen новые API становятся доступны автоматически. Существует проблема взаимной зависимости: компилятор Rust использует Python для бутстрэпа . Но решения есть. Можно собрать старую версию Python, затем Rust, потом новый CPython. Скрипты бутстрэпа Rust совместимы даже с Python 2, так что проблема решаема. Альтернативы — использование PyPy или отказ Rust от Python в процессе сборки. Для текущих разработчиков CPython предусмотрены обучающие ресурсы. The Rust Book предлагает полное введение в язык, есть также Rust for C++ programmers и официальные обучающие материалы . Планируется создать команду экспертов по Rust и добавить туториал в devguide. Для работы с аргументами функций может понадобиться адаптация Argument Clinic или создание процедурного макроса на Rust. |
|
Проверить безопасность сайта