Документация по LinuxLinuxDoc.Ru 🔍
🕛

\Google представила Blink, форк движка WebKit

Компания Google объявила о создании собственного форка движка WebKit и его использования в браузерах Chrome и Chromium. Новый движок, названный Blink, базируется на многопроцессной архитектуре, изначально используемой в проектах Chrome/Chromium и существенно отличающейся от основной архитектуры распараллеливания операций в WebKit.

Основной причиной создания форка является возросшая трудоёмкость параллельного поддержания разработки отдельной многопроцессной модели, изначально используемой в Chromе, но неприемлемой для универсального движка WebKit и некоторых других браузеров. Суть различий сводится к тому, что WebKit2 предоставляет специальный фреймворк для разделения по разным процессам обработки контента и формирвоания интерфейса, а механизм разделения по процессам Chrome основан на идее использования WebKit WebCore в качестве одного из многопроцессных модулей, взаимодействующих с другими модулями через отдельный диспетчер ресурсов. Последнее время наблюдается постоянное усложнение кода как WebKit, так и Chromе, что заметно тормозит разработку Chromе из-за необходимости постоянного портирования кода. Кроме того, отмечается, что с созданием форка у Google появятся новые возможности по оптимизации движка и увеличению производительности, требующих внесения кардинальных изменений в WebKit.

В представленном в 2008 году браузере Chrome компания Google использовала подсистему WebKit WebCore для реднеринга HTML и CSS, но вместо javascript-движка WebKit javascriptCore использовала собственный движок V8. Фактически компания Google изначально развивает в Chrome форк WebKit, так как использует в своём браузере отдельную ветку WebKit, непосредственно внося в неё собственные изменения и портируя сторонние изменения из WebKit, после чего возвращая свои улучшения в upstream. В WebKit2 появилось много новых возможностей и особенностей, которые не намерена использовать Google, но которые приходится учитывать при портировании. В итоге затрачиваемые на портирование ресурсы стали неприемлемо велики. Создание Blink снимает с Google обязательства по возврату изменений в WebKit.

О намерении перейти к использованию движка Blink, уже заявила компания Opera, находящаяся в процессе миграции на WebKit с собственного движка Presto. Таким образом, сформированное вокруг WebKit сообщество раскололось на два лагеря, представляющих технологии и интересы проектов Google Chrome и Apple Safari. Следует напомнить, что, в свою очередь, проект WebKit был создан в 2001 году как форк движка KHTML, развиваемого сообществом KDE.

По мнению Google, создание нового браузерного движка негативно не отразится на экосистеме и лишь оздоровит её, так как конкуренция подстегнёт к развитию инноваций, как появление нескольких конкурирующих браузеров подстегнуло развитие Web. При этом разработчики Blink отмечают в качестве прироитетного направления сотрудничество с создателями других браузерных движков в плане обеспечения совместимости, следования стандартам Web и создания новых Web-технологий. В ближайшее время развитие Blink будет сфокусировано на улучшении внутренней архитектуры и упрощении кодовой базы. Например, планируется прекратить поддержку 7 сборочных систем и удалить около 7 тысяч файлов, включающих более 4.5 млн строк кода.

Дополнительно можно отметить решение избавиться от CSS-префиксов для экспериментальных возможностей. Вместо префикса "-webkit" решено не вводить префиксы "-blink" или "-chrome", а последовать примеру Mozilla и добавлять все экспериментальные возможности без префиксов, но включать их только при изменении специальных настроек в браузере.

Из планов по дальнейшему развитию архитектуры Blink можно отметить:

Реализация обработки содержимого iframe в отдельном изолированном процессе. В WebKit указанная возможность не может быть интегрирована, так как она требует значительной реструктуризации методов обработки iframe и завязана на особенностях sandbox-изоляции и методов управления процессами в Chrome.

Ускорение и упрощение кода для обеспечения сетевого взаимодействия. Сетевая подсистема WebKit ограничена необходимостью обеспечения совместимости со старым API для платформ Mac, что не позволяет интегрировать в WebKit некоторые улучшения и вынуждает использовать в Chrome ряд обходных методов, реализация которых оставляет желать лучшего.

Перевод обработки Document Object Model (DOM) на плечи javascript-движка, что позволит существенно ускорить доступ к DOM из javascript-скриптов. Воплощение в жизнь подобной идеи требует полной переработки реализации DOM в WebKit и затруднено в свете поддержки в WebKit одновременно двух движков javascript;

Разбиение WebKit WebCore на модули и расширение средств распараллеливания обработки контента (парсинг HTML, движок для обработки стилей, парсер javascript);
Прямое использование в движке основного Platform API для управления sandbox-изоляцией;
Переход на использование высокопроизводительного менеджера распределения памяти tcmalloc;
Использование JIT-компиляции при организации доступа из javascript кода к некоторым атрибутам DOM, таким как div.id и div.firstChild;
Поддержка сохранения снапшотов в движке V8, что позволит избавиться от стадии разбора для уже загруженных ранее страниц;
Улучшение изоляции нити, отвечающей за формирование вывода (сompositor).

Также по теме:
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Linux - Новости Linux - Google представила Blink, форк движка WebKit
Мы в соцсетях ✉