Разработчики Mozilla представили проект Quantum, в рамках которого для Firefox началась разработка браузерного движка нового поколения, сочетающего проверенные временем наработки движка Gecko с новыми возможностями по обеспечению многопоточной обработки данных, предоставляемые языком Rust. В частности, в рамках проекта в Gecko будут перенесены некоторые компоненты из движка Servo, связанные с распараллеливанием вычислений и выносом различных операций на плечи GPU.

Quantum является оптимальным решением в условиях, когда с одной стороны имеется стабильный, но завязанный на однопоточные схемы обработки контента, движок Gecko, а с другой многопоточный и быстрый, но имеющий проблемы с совместимостью и ограниченный по функциональности, движок Servo. Постепенная интеграция возможностей Servo и компонентов на языке Rust в движок Gecko, которые будут переноситься по мере готовности, позволит существенно поднять производительность и надёжность Firefox. Первые значительные улучшения планируется перенести уже в 2017 году.

Для связывания C++ кода Gecko с кодом Servo на языке Rust будет задействована прослойка rust-bindgen. Из намеченных для интеграции компонентов отмечаются:

  • Quantum CSS - применяемая в Servo система распараллеливания обработки стилей CSS, которая со временем полностью заменит текущий CSS-движок в Gecko;
  • WebRender - система отрисовки, оптимизированная для выноса операций на GPU;
  • Quantum Compositor - вынос кода композитинга и интерфейса для взаимодействия с GPU в отдельный процесс, что позволит защитить браузер от проблем, возникающих из-за графических драйверов;
  • Quantum DOM - распараллеливание операций с DOM (Document Object Model). JavaScript-код для разных вкладок и iframe будет выполняться параллельно в отдельных нитях, что позволит увеличить отзывчивость браузера при использовании большого числа открытых вкладок. Для переключения между нитями будет задействован встроенный планировщик совместной многозадачности, переключающий контекст в "безопасные" моменты, например, при вызове функций и в вершине каждой итерации циклов, что позволит минимизировать использование блокировок. Дополнительно планируется реализовать эвристические методы для остановки выполнения кода во второстепенных фоновых вкладках, а также предоставить интерфейс для блокирования бесконечного зацикливания и снижения приоритета ресурсоёмких скриптов;
  • Quantum Flow - проект по развитию дополнительных оптимизаций, таких как увеличения производительности интерфейса пользователя.


Источник: http://www.opennet.ru/opennews/art.shtml?num=45385