Google представил новости недавно, что команда, стоящая за проектом Chromium работает над добавлением цепочки инструментов Rust от производства до вашей системы сборки.
Для тех, кто еще не знаком с Rust, следует хорошо его запомнить, потому что этот язык программирования, разработанный Mozilla специально для использования при написании браузера, начал проникать и приниматься во многих важных проектах, одним из которых является Ядро ржавчины Linux.
Это позволит нам включить код Rust в бинарный файл Chrome в течение следующего года. Цель состоит в том, чтобы начать с малого и установить четкие ожидания относительно того, какие библиотеки будут рассмотрены, когда они будут готовы.
Поэтому само собой разумеется, что Chromium наконец-то начинает внедрять и эту технологию. Для Google внедрение Rust в Chromium выполнит задачу предоставления более простого и безопасного способа соблюдения правила двух, которое заключается в ускорении разработки и повышении безопасности Chrome, в дополнение к повышению безопасности, удалению ошибок памяти. и снижение плотности ошибок в коде.
Мы знаем, что C++ и Rust могут очень хорошо работать вместе благодаря таким инструментам, как cxx, autocxx bindgen, cbindgen, дипломат и (экспериментальный) 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++, и запрещает потенциально опасные действия, такие как чтение незаписанных переменных, доступ за пределы, установленные массивами, разыменование нулевых или недопустимых указателей, использование переопределенных итераторов. .
Если вы хотите узнать больше об этом, вы можете ознакомиться с деталями По следующей ссылке.