В коде Chromium разрешили использовать язык Rust

Язык программирования Rust включили в число используемых в коде проекта Chromium. Существующий код пока не планируют переписывать на Rust, но допустима интеграция в кодовую базу сторонних библиотек, написанных на Rust. 

4f94700d45774ab0914b7815ad7a3f19.jpg

В сборочную систему добавили инструментарий для компиляции кода на языке, проведения тестов и интеграции компонентов с кодом на C++. 

Ожидается, что код на Rust появится в составе выпусков Chrome в следующем году.

К претендующим на интеграцию в кодовую базу Chromium сторонним библиотекам на Rust предъявляется ряд требований. Так, они должны превосходить аналоги по скорости, потреблению памяти и стабильности или быть единственными реализациями определённой технологии. 

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

Разработчики пока не решили, какие именно библиотеки могут войти в состав Chromium.

Решение о включении Rust приняли в рамках инициативы по предотвращению появления ошибок работы с памятью в кодовой базе Chrome. По статистике, 70% опасных и критических проблем с безопасностью в Chromium вызваны такими ошибками. 

В Rust безопасная работа с памятью обеспечивается во время компиляции через проверку ссылок, отслеживание владения объектами и учёт времени жизни объектов (области видимости), а также через оценку корректности доступа к памяти во время выполнения кода. 

Также язык предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.

Применение Rust позволит добиться более простого и безопасного соблюдения «правила двух», которое применяется Google для поддержания безопасности кодовой базы. Любой добавляемый код должен подпадать не больше, чем под два условия из трёх: работа с непроверенными входными данными, использование небезопасного языка программирования (C/C++) и выполнение с повышенными привилегиями. Таким образом, код для обработки внешних данных должен либо быть урезан до минимальных привилегий, либо быть написанным на безопасном языке.

© Habrahabr.ru