![](https://habrastorage.org/files/a8e/b48/20b/a8eb4820bf854728b1fe9d4fa78b60f7.png)
Mozilla любит Rust
Трудно поверить, что прошло почти семь лет с тех пор как Mozilla Research впервые начала спонсировать разработку Rust — системного языка программирования, нацеленного на безопасную работу с памятью, скорость и параллельное выполнение кода. В то время это был не более чем амбициозный исследовательский эксперимент, вокруг которого образовалось небольшое, но преданное сообщество. Удивительно, что несмотря на долгую историю изобретений и открытий, Rust сохранил свой ключевые принципы. Изначально разработчики хотели создать безопасную альтернативу C++, повысить эффективность системного программирования, защитить критическое программное обеспечение от эксплоитов памяти, упростить работу с параллельными алгоритмами — вот почему Mozilla поддержала проект Rust и, в конечном счёте, начала использовать Rust в стабильной версии браузера.
Столько же многообещающим событием стало то, что безопасность и современные функции Rust привлекают новых людей в системное программирование. Для Mozilla, где совместная работа сообщества буквально прописана в нашей миссии, расширение круга разработчиков жизненно важно.
Так что я рад отметить важную веху: в Firefox 48 Mozilla включит первый компонент на Rust для всех десктопных платформ, а скоро появится и поддержка Android.
Внедрение Rust в медиастек Mozilla
Одной из первых использовать Rust в Mozilla начала команда Media Playback. Сейчас вполне очевидно, что медиа является ключевым элементом работы в современном вебе. Что может быть не так очевидно для не-параноиков, так это что каждый раз, когда запускается безобидное, на первый взгляд, видео (скажем, как хамелеончик лопает пузыри), браузер считывает данные в сложном формате и созданные кем-то, кого вы не знаете и кому не доверяете. Как выясняется, с помощью медиаформатов можно манипулировать декодерами и вытаскивать неприятные уязвимости в безопасности. Они эксплуатируют баги в механизме управления памятью, которые реализован в коде веб-браузеров.
По этой причине безопасный для памяти язык программирования вроде Rust становится неотделимым дополнением в наборе инструментов Mozilla для защиты от потенциально вредоносного медийного контента в вебе. По этой причине, Ральф Жиль (Ralph Giles) и Мэтью Греган (Matthew Gregan) разработали в Mozilla первый медиапарсер на Rust. И я рад сообщить, что их код станет первым компонентом на Rust, который войдёт в состав Firefox. Это реальное достижение также для сообщества Rust: код Rust будет работать на сотнях миллионов компьютеров у пользователей Firefox. Наши предварительные исследования показывают, что компонент на Rust отлично проявляет себя и не уступает оригинальному компоненту на C++, место которого он займёт — но теперь реализован на безопасном для памяти языке программирования.
![](https://habrastorage.org/files/8f6/cea/a99/8f6ceaa9994f445bba8df4a619b7b5a1.png)
Телеметрия Firefox не показывает ни одной проблемы за более чем миллиард запусков нового кода на Rust
Ещё больше впереди!
Многие люди заслужили огромную благодарность за помощь. Ральф Жиль и Мэтью Греган реализовали компонент, а Натан Фройд (Nathan Froyd), Ник Нетеркот (Nick Nethercote), Тед Мильчарек (Ted Mielczarek), Грегори Шорц (Gregory Szorc) и Алекс Кричтон (Alex Crichton) способствовали интеграции Rust в билд Firefox и в его инструментальную систему, а также обеспечили его поддержку на всех платформах.
Rust сам по себе — продукт потрясающего, живого сообщества. Ничего из этой работы не стало бы возможным без невероятной помощи в разрешении проблем, разработке архитектуры, кода и много другого, что сделали подвижники Rust со всего мира. Являясь и сам таким, хочу позвать вас самих попробовать Rust. Сейчас самое время, чтобы начать и принять участие в проекте Mozilla с использованием Rust.
Видеть код Rust в стабильной версии браузера Firefox — словно завершение длинного путешествия. Но это только первый шаг для Mozilla. Следите за новостями!
Об авторе: Дэйв Херман (Dave Herman) — главный научный сотрудник и директор по стратегии Mozilla Research