Разработчики Mozilla приступили к воплощению на практике озвученного (https://www.opennet.ru/opennews/art.shtml?num=43486) в прошлом году плана по задействованию в Firefox кода на языке Rust. В ближайшем выпуске Firefox 48, который ожидается 2 августа, кроме включения (https://www.opennet.ru/opennews/art.shtml?num=44564) многопроцессного режима для ограниченного круга пользователей, в состав настольной редакции браузера впервые будет (https://hacks.mozilla.org/2016/07/shipping-rust-in-firefox/) добавлен компонент на языке Rust. В версии для Android включение компонентов на языке Rust ожидается позднее.
Первый код на Rust задействован в подсистемах, связанных с обработкой мультимедийной информации. В частности, в состав включен написанный на языке Rust парсер для распаковки (https://github.com/mozilla/mp4parse-rust) медиаконтейнеров в формате mp4. Поддержка компиляции компонентов на языке Rust встроена в систему сборки и сборочный инструментарий Firefox, и доступна для всех поддерживаемых платформ.
Язык Rust был основан в 2006 году Грейдоном Хоаре (Graydon Hoare (https://github.com/graydon)) как альтернатива языку C++, предоставляющая средства для безопасной работы с памятью, избавляющие разработчика от необходимости манипулирования указателями и защищающие от таких уязвимостей, как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. При этом, несмотря на автоматическое управление памятью, в Rust не применяется сборщик мусора и runtime, что позволяет использовать язык для системного программирования. Другим важным достоинством Rust является изначальная ориентация на организацию высокого параллелизма выполнения заданий.
В 2009 году к разработке Rust подключилась компания Mozilla, благодаря ресурсам которой язык доведён до состояния пригодного для применения в реальных проектах. Интерес Mozilla к Rust вызван в первую очередь желанием повысить безопасность Firefox и уйти об бесконечной череды исправления всё новых и новых уязвимостей (https://www.mozilla.org/en-US/security/known-vulnerabilities.../). Кроме того, при помощи Rust можно решить задачу распараллеливания операций с DOM (Document Object Model) и JavaScript - если для ускорения одновременной обработки разных страниц на многоядерных системах можно использовать многопроцессную модель, то обработка одной страницы остаётся однопоточной. Rust позволяет разбить код DOM и рендеринга на более мелкие подзадачи, которые могут выполняться параллельно и более эффективно использовать ресурсы многоядерных CPU.
URL: https://hacks.mozilla.org/2016/07/shipping-rust-in-firefox/
Новость: https://www.opennet.ru/opennews/art.shtml?num=44776