1590

Ответ на пост «Или не имеет смысла»3

Доступно об АйТи: Почему осталось всего два браузерных движка

Исходный мем

Исходный мем

Я застал время, когда движков было четыре: Trident (IE), Gecko (Firefox), WebKit (Chrome) и Presto (Opera).

Ныне осталось два: Quantum (Firefox) и Blink (Chrome).

На первом работают специализированные «лисицы» вроде какого-нибудь полностью освобождённого IceWeasel или защищённого Tor Browser. На втором — целая плеяда хромоидов вроде Opera, Vivaldi, Brave и (тьфу-тьфу) Амиго, а также куча софта вроде Steam и Slack, представляющие собой браузер, показывающий единственный сайт.

А причины две — крайняя сложность и проникшая в веб-стандарты защита от копирования.

Сложность

Я по крайней мере в браузере вижу такие основные части.

  1. Сетевая подсистема — обращение к сети, поддержка протоколов.

  2. Движок рендеринга — показ страниц.

  3. Типографский движок — вывод текста.

  4. Движок скриптинга — выполнение JavaScript.

  5. Фреймворк безопасности — дополнительная защита от ошибок.

Когда человек пишет мини-браузер, предназначенный для показа каких-то текстов в его проге, он пишет только одно — рендерер, причём не с веб-качеством.

«С веб-качеством» означает: настолько защитное программирование, что маловероятно, что обнаружится критичная ошибка. Кстати, Rust — новый язык программирования, набирающий силу — был сделан именно для Firefox, чтобы уменьшить вероятность таких ошибок.

Скорость тоже важна — долго Firefox тормозил на системе отслеживания ошибок Jira.

Собственный типографский движок позволяет рендерить загружаемые шрифты, снижает риск критичной ошибки при рендеринге сложных строк и раньше всех поддерживает новые версии Юникода. Так уж вышло, что ставший де-факто стандартом формат шрифтовых инструкций OpenType определённые свойства символов берёт из типографского движка — в отличие от альтернативного Graphite, который всё своё носит с собой.

В сентябре 2024 года в Юникод добавили гарай — экспериментальную (уступившую латинице и нко) африканскую письменность. Юникод устроен так, что проги давным-давно знают, что определённый диапазон кодов зарезервирован под письменности справа налево, но с умляутами беда. Firefox первым корректно поддержал гарай около Нового 2025 года, a хромоиды всё ещё (октябрь 2025) не поддерживают.

Простите за корявость

Простите за корявость

Кстати, типографский движок у всех браузеров один — Skia за авторством Гугла. Просто Рыжая добавила в него свежие базы Юникода, а авторы хромоидов — нет.

Почти все сайты заскриптованы так, что превратились в настоящие программы, и браузер должен уметь выполнять эти программы корректно и быстро. Оба движка, Blink и Quantum, не просто интерпретируют JavaScript, но и умеют компилировать его в процессорный код!

Наконец, фреймворк безопасности — сравнительно новое (десять лет в обед 😊) изобретение Гугла, впоследствии реализованное и Firefox в своём Quantum. Уязвимости случаются, и задача этого компонента — сделать, чтобы «пробитая» память не доросла до критической уязвимости. Для этого браузер раскидывает работу по процессам с минимальными правами, в результате ошибки закрываются без особого шума, браузер редко зависает целиком, никогда не «падает» и потребляет уйму памяти. 😊

Если вы писали расширения браузера, то знаете, что есть центральный скрипт и скрипт вкладки, и между ними общение только сообщениями — это тоже «вина» фреймворка безопасности.

Защита медиаконтента от копирования

У нас не важно, на Западе — очень.

Скорее всего, была пролоббирована Netflix. До этого он использовал Silverlight, и часто этот странный плагин устанавливали только для того, чтобы смотреть Netflix. Существуют три подсистемы защиты: Microsoft, Apple и Google; все хромоиды и Firefox управляются последней. Гугл даёт ключи неохотно: появившийся в 2015 году Vivaldi только в 2020-м отпраздновал включение в гугловский Widevine.

Главное препятствие для написания своей системы — убедить киношников доверять ей.

Как-то так. Когда-то самолёты строили в гаражах, сейчас нельзя. По моим прикидкам, некоторые отрасли являются таким хайтеком, что для прибыльности нужен едва ли не целый мир, и устойчивая конфигурация там — один лидер и один аутсайдер, не дающий лидеру заламывать любые условия. И Гугл намеренно содержит аутсайдера Firefox: останется один — государства на него обрушатся и/или вырастет значительно менее удобный для него аутсайдер.