Проект Chromium підтримуватиме використання бібліотек Rust

Хром

, проект Chromium підтримуватиме використання сторонніх бібліотек C++ Rust у Chromium

Нещодавно Google оголосив , що команда, яка стоїть за проєктом Chromium, працює над додаванням інструментарію Rust до своєї системи збірки.

Тим, хто ще не знав про Rust, слід пам’ятати про це добре, оскільки ця мова програмування, розроблена Mozilla спеціально для використання в написанні браузера, почала просочуватися та прийматися в багатьох важливих проектах, одним із яких є Ядро Rust Linux.

Це дозволить нам включити код Rust у двійковий файл Chrome протягом наступного року. Мета полягає в тому, щоб почати з малого та встановити чіткі очікування щодо того, які бібліотеки будуть розглянуті, коли вони будуть готові.

Тож логічно, що Chromium нарешті також починає розробляти цю технологію. Для Google впровадження Rust у Chromium дозволить досягти мети забезпечення простішого та безпечнішого способу досягнення «правила двох», яке полягає у прискоренні розробки та покращенні безпеки Chrome. Крім того, це покращує безпеку, усуваючи помилки пам’яті та зменшуючи щільність помилок у коді.

Ми знаємо, що C++ і Rust можуть дуже добре працювати разом завдяки таким інструментам, як cxx, autocxx bindgen, cbindgen, diplomat і (експериментальний) crubit. Однак існують і обмеження. Ми можемо очікувати, що форма цих обмежень зміниться з часом із новими або вдосконаленими інструментами, але рішення та описи тут базуються на поточному стані технологій.

Це рішення було прийнято в рамках ініціативи щодо запобігання появі помилок пам'яті в кодовій базі Chrome. Згідно зі статистикою, наданою два роки тому, 70% критичних і небезпечних проблем безпеки в Chromium пов'язані з помилками пам'яті.

Використання мови програмування Rust, яка зосереджена на безпечному управлінні пам'яттю та забезпечує автоматичне керування пам'яттю, зменшить ризик вразливостей, спричинених такими проблемами, як доступ до області пам'яті після її звільнення та переповнення буфера.

Мета впровадження Rust у Chromium полягає в тому, щоб забезпечити простіший (без IPC) і безпечніший (менш складний C++ загалом, відсутність помилок безпеки пам’яті в ізольованому середовищі) спосіб задовольнити правило двох, щоб пришвидшити розробку (менше коду для написання , менше проектних документів, менше патчів безпеки) і покращити безпеку (більше рядків коду без помилок безпеки в пам’яті, менша щільність коду помилок) Chrome. Крім того, компанія впевнена, що ми можемо використовувати сторонні бібліотеки Rust для досягнення цієї мети.

На початку 2022 року команда Chromium вже експериментувала з Rust і через кілька місяців дійшла висновку, що мова спочатку не підходить як заміна C++ для складних завдань з асинхронним кодом, який повинен працювати разом з існуючим кодом.

Таким чином, заплановане використання Rust у Chromium спочатку явно обмежене . З одного боку, сумісність буде йти лише в одному напрямку: від C++ до Rust. З іншого боку, спочатку дозволено використовувати лише сторонні бібліотеки. Вони функціонують як окремі компоненти та не залежать від внутрішніх компонентів Chromium. Бібліотеки повинні мати простий API для свого конкретного завдання. Потім команда Chromium перегляне бібліотеки.

Нарешті, варто зазначити, що додавання підтримки в Chromium дозволить портувати код Rust на бінарні файли Chrome , починаючи з наступного року. Рішення зумовлене, головним чином, міркуваннями безпеки: Rust пропонує більшу безпеку під час запису в пам'ять, ніж C++, і забороняє потенційно шкідливу поведінку, таку як читання незаписаних змінних, доступ до значень поза межами, встановленими масивами, розіменування нульових або недійсних вказівників та використання недійсних ітераторів.

Якщо ви зацікавлені дізнатися більше, ви можете знайти деталі за наступним посиланням.


Додати як пріоритетне джерело в Google