Google и Mozilla вече преминаха към Rust, сега е ред на Python.
Двама от разработчиците на CPython предложиха да се добави езикът за програмиране Rust към базата данни на Python. Ема Смит и нейният колега са публикували Pre-PEP (Предварителен технически документ), в който обосновават необходимостта от тази стъпка. Засега се планира Rust да се използва само за писане на незадължителни разширителни модули, но в бъдеще може да се превърне в задължителна зависимост.
Основната причина за внедряването на Rust е подобряването на безопасността на паметта. Езикът предотвратява цели класове грешки на ниво компилация: превишаване на масива, достъп до освободена памет и надпревари с данните в многонишковия код. Това е особено актуално за free-threaded Pytho, където безопасността на нишките е от критично значение. Проектът RustBelt дори е доказал официално коректността на гаранциите за безопасност на Rust за код без опасни конструкции.
CPython редовно се сблъсква с грешки, дължащи се на неправилната обработка на паметта. Авторите на предложението смятат, че Rust радикално ще намали броя на тези проблеми. Дори част от кода да остане опасен поради взаимодействието с API на C, основната логика на модулите ще бъде написана на безопасния Rust.

Rust вече се използва активно от големи проекти написани на езиците C и C++. Ядрото на Linux, Android, Firefox и много други системи прилагат този език за подобряване на надеждността. Google вече съобщи за положителни резултати от използването на Rust в Android. Интересно е, че 25-33% от новите разширения на Python са написани на Rust – въвеждането на езика в самия CPython може допълнително да стимулира тази тенденция.
В допълнение към сигурността Rust предлага високопроизводителни структури от данни от стандартната библиотека. Вектори, хеш-таблици, мютекси – всички те са реализирани с нулеви разходи и са добре документирани. Макросистемата на Rust превъзхожда макросите на C: декларативните макроси са хигиенични и не прихващат случайно променливи, а процедурните макроси позволяват да се правят мощни трансформации на кода. В библиотеката PyO3 се използват много процедурни макроси, за да се опрости работата с API на Python.

Разработчиците вече са създали прототип с модула _base64, който демонстрира ускорение при използване на Rust. За интеграцията ще е необходим нов крейт cpython-sys с FFI дефиниции на C API. Предлага се връзките да се генерират чрез bindgen, официалния инструмент на Rust, който се използва дори в различни проекти за Linux и Android.
Rust поддържа всички платформи от PEP 11 и дори повече. Всички платформи от първо ниво на Python са съвместими с първо или второ ниво на Rust с пълен набор от инструменти за разработчици. Кръстосаната компилация се настройва лесно – просто се задава желаната цел и се посочва линкерът.
Авторите са изоставили идеята за използване на готовата библиотека PyO3 в CPython. Това би създало ненужно ниво на абстракция и би забавило разработката: всеки нов API първо би бил добавян в PyO3, а след това версията би била актуализирана в CPython. С bindgen новите API се предоставят автоматично.
Съществува проблем с взаимната зависимост: компилаторът на Rust използва Python за bootstrap. Но има и решения. Можете да изградите стара версия на Python, след това Rust, а след това новия CPython. Скриптовете за bootstrap на Rust са съвместими дори с Python 2, така че проблемът е решим. Алтернативите са да се използва PyPy или Rust да се откаже от Python в процеса на изграждане.
За настоящите разработчици на CPython са налични учебни ресурси. Книгата за Rust предлага пълно въведение в езика, има също Rust за програмисти на C++ и официални уроци. Съществуват планове за създаване на екип от експерти по Rust и добавяне на ръководство в devguide. За да работите с аргументи на функции, може да се наложи да адаптирате Argument Clinic или да създадете процедурен макрос в Rust.
Всичко важно от света на технологиите, директно в пощата ти.
С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.
Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!