Введение
Gecko (стилизованный как ɢecko) — это движок разметки HTML, разработанный Mozilla. Он используется в браузере Firefox, почтовом клиенте Thunderbird и многих других проектах. Gecko разработан для поддержки открытых интернет-стандартов и используется различными приложениями для отображения веб-страниц и, в некоторых случаях, самого пользовательского интерфейса приложения (путем рендеринга XUL). Gecko предлагает богатый API программирования, что делает его подходящим для широкого спектра задач в интернет-приложениях, таких как веб-браузеры, представление контента и клиент-серверные приложения. Gecko написан на C++ и JavaScript, а с 2016 года — также на Rust. Это свободное программное обеспечение с открытым исходным кодом, распространяемое по лицензии Mozilla Public License версии 2. Mozilla официально поддерживает его использование на Android.
Gecko (stylized as ɢecko) is a browser engine developed by Mozilla. It is used in the Firefox browser, the Thunderbird email client, and many other projects. Gecko is designed to support open Internet standards, and is used by different applications to display web pages and, in some cases, an application's user interface itself (by rendering XUL). Gecko offers a rich programming API that makes it suitable for a wide variety of roles in Internet enabled applications, such as web browsers, content presentation, and client/server. Gecko is written in C++ and JavaScript, and, since 2016, additionally in Rust. It is free and open source software subject to the terms of the Mozilla Public License version 2. Mozilla officially supports its use on Android,
История
Разработка движка макета, теперь известного как Gecko, началась в Netscape в 1997 году после приобретения компанией DigitalStyle. Существующий движок рендеринга Netscape, изначально написанный для Netscape Navigator 1.0 и обновлявшийся на протяжении многих лет, был медленным, плохо соответствовал стандартам W3C, имел ограниченную поддержку динамического HTML и не обладал такими функциями, как инкрементальный пересчет макета (когда движок макета перестраивает элементы на экране по мере загрузки новых данных и добавления их на страницу). Новый движок макета разрабатывался параллельно со старым, с намерением интегрировать его в Netscape Communicator, когда он станет зрелым и стабильным. Ожидалось, что как минимум еще одна крупная версия Netscape будет выпущена со старым движком макета перед переходом. После запуска проекта Mozilla в начале 1998 года код нового движка макета был выпущен под лицензией с открытым исходным кодом. Первоначально представленный как Raptor, название пришлось изменить на NGLayout (макет следующего поколения) из-за проблем с товарными знаками. Позже Netscape переименовала NGLayout в Gecko. Хотя Mozilla Organization (предшественник Mozilla Foundation) изначально продолжала использовать название NGLayout (Gecko был товарным знаком Netscape), в конечном итоге бренд Gecko стал доминирующим. В октябре 1998 года Netscape объявила, что ее следующий браузер будет использовать Gecko (который в то время все еще назывался NGLayout) вместо старого движка макета, что потребовало переписывания значительной части приложения. Это решение было популярно среди сторонников веб-стандартов, но вызвало недовольство разработчиков Netscape, которым было предоставлено всего шесть месяцев на переписывание. Firefox 57, также известный как "Firefox Quantum", впервые выпущенный в ноябре 2017 года, является первой версией, в которой задействованы основные компоненты из проектов Quantum/Servo. К ним относится повышенная производительность компонентов рендеринга CSS и GPU. В будущих версиях дополнительные компоненты будут постепенно перенесены из Servo в Gecko. Эта версия впервые представила GeckoView, с повышенной производительностью при средней скорости загрузки страниц. Firefox Reality также был создан на базе GeckoView. Firefox для Android 79, также известный как "Firefox Daylight", впервые выпущенный в августе 2020 года, является первым стабильным релизом, в котором основные компоненты работают на движке GeckoView.
Нестандартная поддержка IE
Для поддержки веб-страниц, разработанных для устаревших версий Netscape и Internet Explorer, Gecko поддерживает переключение DOCTYPE. Документы с современным DOCTYPE отображаются в режиме соответствия стандартам, строго следуя стандартам W3C. Документы, не имеющие DOCTYPE или использующие устаревший DOCTYPE, отображаются в режиме совместимости, эмулирующем некоторые нестандартные особенности Netscape Communicator 4.x; однако некоторые функции версии 4.x (например, слои) не поддерживаются. Gecko также обеспечивает ограниченную поддержку некоторых нестандартных функций Internet Explorer, таких как элемент marquee и свойство document.all (хотя страницы, явно проверяющие наличие document.all, будут получать сообщение о том, что оно не поддерживается).
Использование
Gecko в основном используется в веб-браузерах, самыми ранними из которых были Netscape 6 и Mozilla Suite (впоследствии переименованный в SeaMonkey). Он также применяется в других браузерах на основе Mozilla, таких как Firefox и Firefox для мобильных устройств, а также в реализации клона Internet Explorer, входящей в состав Wine. Mozilla также использует его в своем почтовом клиенте Thunderbird. Среди других веб-браузеров, использующих Gecko, можно выделить GNU IceCat, Waterfox, K Meleon, Lunascape, Portable Firefox, Conkeror, Classilla и TenFourFox. Gecko также используется Sugar для компьютера OLPC XO 1. Gecko представляет собой полную реализацию XUL (XML User Interface Language) и в настоящее время определяет спецификацию XUL.
Прошлые пользователи
Продукты, которые ранее использовали Gecko, включают Pale Moon (теперь использующий Goanna), Epiphany (теперь известный как GNOME Web и использующий WebKitGTK) и GNOME DevHelp (теперь использующий WebKitGTK). Прекратившие своё существование продукты, которые использовали Gecko, включают Swiftfox, Flock, Galeon, Camino, Minimo, Beonex Communicator, Kazehakase, Songbird, Sunbird (календарь), MicroB, Nightingale, Instantbird и Picasa для Linux.
Собственная зависимость
На Windows и других платформах Gecko зависит от проприетарных компиляторов. Поэтому, FOSS-дистрибутивы Linux не могут включать пакет Gecko, используемый в слое совместимости с Windows Wine. После Gecko 2.0 номер версии был повышен до 5.0, чтобы соответствовать Firefox 5, и с тех пор поддерживается в синхронизации с основной версией Firefox и Thunderbird, что отражает тот факт, что он больше не является отдельной частью.
Надувная
В эпоху Netscape сочетание неудачных технических и управленческих решений привело к разрастанию программного обеспечения Gecko. Поэтому в 2001 году Apple предпочла форкнуть KHTML, а не использовать Gecko, для создания движка WebKit для своего браузера Safari.
Квантовый
Quantum — проект Mozilla, объединяющий несколько направлений разработки программного обеспечения для создания нового поколения веб-движка для пользователей Firefox. Он включает в себя множество улучшений Gecko, во многом перенесенных из экспериментального проекта Servo. Quantum также содержит доработки пользовательского интерфейса и взаимодействия с ним.
Предыстория
В 2012 году Mozilla начала экспериментальный проект Servo – движок, разработанный с нуля для повышения конкурентности и параллелизма, а также снижения уязвимостей, связанных с безопасностью памяти. Servo написан на языке программирования Rust, также разработанном Mozilla, который призван генерировать компилируемый код с улучшенной безопасностью памяти, конкурентностью и параллелизмом по сравнению с компилируемым кодом на C++. Именно поэтому было принято решение начать проект Quantum, чтобы интегрировать стабильные компоненты Servo в Firefox. В августе 2020 года Mozilla распустила всю команду разработчиков Servo.
Компоненты
Проект "Квант" состоит из нескольких подпроектов. Эта версия была выпущена в Firefox 57. Mozilla начала внедрение нового рендерера для определенных комбинаций оборудования и операционных систем в Firefox 67. Композитор: существующий композитор Gecko был перенесен в отдельный процесс, что изолирует вкладки браузера от сбоев, связанных с графическими драйверами. Поскольку сбои композитора не приводят к аварийному завершению процесса контента браузера, процесс композитора может быть прозрачно перезапущен без потери данных пользователя. Эта версия была выпущена в Firefox 53. DOM: Вдохновленный архитектурой Constellation из Servo и движком Presto от Opera, Quantum DOM использует кооперативно планируемые потоки внутри DOM для повышения отзывчивости без увеличения количества процессов и, следовательно, потребления памяти. Основная часть этой разработки была включена в Firefox 57. Flow: Комплекс мер по улучшению производительности, заметных пользователю, разрабатываемых командой, работающей над различными компонентами Gecko. Ориентирован на реальное повышение производительности в популярных веб-приложениях, таких как G Suite (теперь Google Workspace) и Facebook. Эта работа была завершена и выпущена в Firefox 57. Photon: Обновление пользовательского интерфейса всего приложения с акцентом на повышение производительности интерфейса. Рассматривается как сопутствующий проект Quantum Flow. Эта версия была выпущена в Firefox 57. Эта функция была выпущена в Firefox 59.
Синяя
Проект Mozilla Azure — это API для абстракции графики низкого уровня без сохранения состояния, используемый в Firefox. Проект преследует несколько целей, включая более точную совместимость с Direct2D, оптимизацию взаимодействия с состоянием и улучшенный контроль над характеристиками производительности и ошибками. Azure обеспечит 2D-аппаратное ускорение поверх 3D-графических бэкендов. Firefox начал использовать Azure вместо Cairo в 2012 году. Он написан на C++ и используется Servo. Название Azure — это дань уважения раннему основателю Netscape Джеймсу Х. Кларку и его ранним работам в Silicon Graphics, где рабочие станции часто называли в честь цветов.