, проект Chromium будет поддерживать использование сторонних библиотек C++ Rust в Chromium.
Компания 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++, и запрещает потенциально опасные действия, такие как чтение незаписанных переменных, доступ к значениям за пределами ограничений, установленных массивами, разыменование нулевых или недействительных указателей и использование недействительных итераторов.
Если вас заинтересовала более подробная информация, вы можете найти ее по следующей ссылке.