Успехи Rust: Подготовка первого выпуска Servo и использование Rust в новом хранилище Dropbox

2016-03-15

Разработчики проекта Mozilla объявили о намерении сформировать в июне первый альфа-выпуск нового браузерного движка Servo, написанного на языке Rust, а также построенного на базе данного движка web-браузера Browser.html с интерфейсом на базе технологий HTML5. В качестве основных критериев готовности Servo рассматривается обеспечение качественной обработки сайтов github, duckduckgo, hackernews и reddit, которые в целом уже работоспособны в Servo, но полностью не лишены отдельных нерешённых проблем с отрисовкой и функциональностью.

Напомним, что браузерный движок Servo развивается проектом Mozilla в сотрудничестве с компанией Samsung. Движок написан на языке Rust и отличается поддержкой многопоточного рендеринга web-страниц, а также распараллеливанием операций с DOM (Document Object Model). Текущий браузерный движок Firefox не может в полной мере задействовать потенциал современных многоядерных систем из-за изначального использования однопоточных схем обработки контента. В частности, при обработке одной страницы однопоточным остается связанный с DOM (Document Object Model) внутренний API, функции формирования содержимого окна, парсинга HTML и выполнения JavaScript. Использование Rust позволяет разбить код DOM и рендеринга на более мелкие подзадачи, которые могут выполняться параллельно и более эффективно использовать ресурсы многоядерных CPU. Кроме эффективного распараллеливания операций, используемые в Rust технологии безопасного программирования позволяют кардинально поднять уровень безопасности, решив текущие проблемы с безопасностью.

Интерфейс Browser.html примечателен отказом от использования традиционных панелей со вкладками и адресной строкой. Страница занимает всё экранное пространство. В верхней части выводится небольшая панель с базовыми управляющими элементами, адаптивно меняющая своё назначение - например, при подведении курсора предоставляется возможность ввода нового адреса, а в остальное время показывается заголовок текущей страницы. При прокрутке страницы панель исчезает из области видимости. Информация о вкладках выводится в форме блока кнопок с пиктограммами сайтов, всплывающих только при подведении курсора к верхней части экрана.

Дополнительно можно отметить появление ещё одного крупного проекта на языке Rust - компания Dropbox внедрила новое распределенное облачное хранилище Magic Pocket, в которое уже перенесена основная масса данных Dropbox, ранее хранимых в облачном сервисе Amazon S3. Главными целями миграции являются желание увеличить производительность (обращение к публичному облаку рассматривается как узкое место) и снизить издержки за счёт поддержания собственной оптимизированной для своих нужд серверной инфраструктуры. Изначально реализация хранилища была написана на языке Go, но показала низкую эффективность с точки зрения потребления памяти при больших нагрузках, после чего хранилище было переписано на Rust. Версия на Rust, которая в настоящее время уже используется на серверах Dropbox, позволила существенно сократить потребление памяти.