В Firefox 48 начнётся интеграция компонентов на языке Rust
Разработчики Mozilla приступили к воплощению на практике озвученного в прошлом году плана по задействованию в Firefox кода на языке Rust. В ближайшем выпуске Firefox 48, который ожидается 2 августа, кроме включения многопроцессного режима для ограниченного круга пользователей, в состав настольной редакции браузера впервые будет добавлен компонент на языке Rust. В версии для Android включение компонентов на языке Rust ожидается позднее.
Первый код на Rust задействован в подсистемах, связанных с обработкой мультимедийной информации. В частности, в состав включен написанный на языке Rust парсер для распаковки медиаконтейнеров в формате mp4. Поддержка компиляции компонентов на языке Rust встроена в систему сборки и сборочный инструментарий Firefox, и доступна для всех поддерживаемых платформ.
Язык Rust был основан в 2006 году Грейдоном Хоаре (Graydon Hoare) как альтернатива языку C++, предоставляющая средства для безопасной работы с памятью, избавляющие разработчика от необходимости манипулирования указателями и защищающие от таких уязвимостей, как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. При этом, несмотря на автоматическое управление памятью, в Rust не применяется сборщик мусора и runtime, что позволяет использовать язык для системного программирования. Другим важным достоинством Rust является изначальная ориентация на организацию высокого параллелизма выполнения заданий.
Изначально Rust развивался как персональный проект Грейдона, но в 2009 году разработкой заинтересовалась компания Mozilla, благодаря ресурсам которой спустя семь лет язык был доведён до состояния пригодного для применения в реальных проектах. Интерес Mozilla к Rust вызван в первую очередь желанием повысить безопасность Firefox и уйти об бесконечной череды исправления всё новых и новых уязвимостей. Кроме того, при помощи Rust можно решить задачу распараллеливания операций с DOM (Document Object Model) и JavaScript — если для ускорения одновременной обработки разных страниц на многоядерных системах можно использовать многопроцессную модель, то обработка одной страницы остаётся однопоточной. Rust позволяет разбить код DOM, JavaScript и разбора HTML на более мелкие подзадачи, которые могут выполняться параллельно и более эффективно использовать ресурсы многоядерных CPU.
© OpenNet