Gecko — браузерный движок , разработанный Mozilla . Он используется в браузере Firefox , почтовом клиенте Thunderbird и многих других проектах.
Gecko разработан для поддержки открытых стандартов Интернета и используется различными приложениями для отображения веб-страниц и, в некоторых случаях, самого пользовательского интерфейса приложения (путем рендеринга XUL ). Gecko предлагает богатый программный API , который делает его подходящим для широкого спектра ролей в интернет-приложениях, таких как веб-браузеры , представление контента и клиент/сервер . [4]
Gecko написан на C++ и JavaScript , [5] [6] и, с 2016 года, дополнительно на Rust . [7] [8] Это бесплатное программное обеспечение с открытым исходным кодом , на которое распространяются условия Общественной лицензии Mozilla версии 2. [9] Mozilla официально поддерживает его использование на Android , [5] Linux , macOS и Windows . [10]
Разработка механизма компоновки, теперь известного как Gecko, началась в Netscape в 1997 году, после покупки компанией DigitalStyle . Существующий механизм рендеринга Netscape, первоначально написанный для Netscape Navigator 1.0 и модернизировавшийся с течением времени, был медленным, плохо соответствовал стандартам W3C, имел ограниченную поддержку динамического HTML и не имел таких функций, как инкрементная перекомпоновка (когда механизм компоновки переупорядочивает элементы на экран по мере загрузки и добавления новых данных на страницу). Новый механизм компоновки разрабатывался параллельно со старым, с намерением интегрировать его в Netscape Communicator, когда он станет зрелым и стабильным. Ожидалось, что до перехода будет выпущена как минимум еще одна крупная версия Netscape со старой системой компоновки.
После запуска проекта Mozilla в начале 1998 года код нового механизма верстки был выпущен под лицензией с открытым исходным кодом. Первоначально представленный как Raptor , название пришлось изменить на NGLayout (макет следующего поколения) из-за проблем с товарными знаками . Позже Netscape переименовала NGLayout в Gecko . Хотя организация Mozilla (предшественница Mozilla Foundation ) первоначально продолжала использовать название NGLayout (Gecko была торговой маркой Netscape), [11] в конечном итоге брендинг Gecko победил. [ нужна цитата ]
В октябре 1998 года Netscape объявила, что ее следующий браузер будет использовать Gecko (который в то время еще назывался NGLayout), а не старый механизм компоновки, что потребует переписывания больших частей приложения. Хотя это решение было популярно среди сторонников веб-стандартов, оно было в значительной степени непопулярным среди разработчиков Netscape, которые были недовольны шестью месяцами, отведенными на переписывание. [12] Это также означало, что от большей части работы, проделанной для Netscape Communicator 5.0 (включая разработку улучшений Mariner старого механизма компоновки), пришлось отказаться. Netscape 6, первая версия Netscape, включающая Gecko, была выпущена в ноябре 2000 года (название Netscape 5 никогда не использовалось). [ нужна цитата ]
По мере продолжения разработки Gecko его начали использовать другие приложения и разработчики. America Online , к тому времени материнская компания Netscape, в конечном итоге приняла его для использования в CompuServe 7.0 и AOL для Mac OS X (ранее в эти продукты был встроен Internet Explorer). Однако, за исключением нескольких бета-версий , Gecko никогда не использовался в основном клиенте Microsoft Windows AOL. [ нужна цитата ]
15 июля 2003 года AOL уволила оставшихся разработчиков Gecko, и Mozilla Foundation (сформированный в тот же день) стал главным управляющим разработкой Gecko. Сегодня Gecko разрабатывают сотрудники корпорации Mozilla , сотрудники компаний, участвующих в проекте Mozilla, и волонтеры. [ нужна цитата ]
В октябре 2016 года Mozilla анонсировала Quantum, текущий проект, включающий несколько усилий по разработке программного обеспечения , направленных на «создание веб-движка следующего поколения для пользователей Firefox ». Он включал в себя многочисленные улучшения Gecko, взятые из экспериментального проекта Servo . [13] [14] Firefox 57, также известный как «Firefox Quantum», впервые выпущенный в ноябре 2017 года, представляет собой первоначальную версию, в которой включены основные компоненты из проектов Quantum/Servo. К ним относится повышение производительности компонентов рендеринга CSS и графического процессора . Дополнительные компоненты будут постепенно объединяться из Servo в Gecko в будущих версиях. [13]
В сентябре 2018 года Mozilla анонсировала GeckoView, основу следующего поколения мобильных продуктов Mozilla, основанную на библиотеке программного обеспечения, которая делает Gecko многоразовым для Android, включая новые усилия по разработке программного обеспечения, позволяющие «отсоединить сам движок от его пользовательского интерфейса и упростить вставлять в другие приложения». Firefox Focus 7.0, выпущенный в том же месяце, [15] — это начальная версия, представленная GeckoView, с увеличенной производительностью при средней загрузке страниц. [16] [17] Firefox Reality также был создан с использованием GeckoView. [16] В июне 2019 года Mozilla объявила Firefox Preview как продолжающийся проект, направленный на создание веб-браузера Android с GeckoView. [18] Firefox для Android 79, также известный как «Firefox Daylight», первая поставка которого запланирована на август 2020 года, является первой стабильной версией, основные компоненты которой основаны на движке GeckoView. [19]
С самого начала Gecko был разработан для поддержки открытых стандартов Интернета. Некоторые из стандартов, поддерживаемых Gecko, включают:
Gecko также поддерживает SVG . [21]
Для поддержки веб-страниц , разработанных для устаревших версий Netscape и Internet Explorer, Gecko поддерживает переключение DOCTYPE . Документы с современным DOCTYPE отображаются в режиме соответствия стандартам, который строго соответствует стандартам W3C . Документы, у которых нет DOCTYPE или более старый DOCTYPE, отображаются в режиме совместимости , который имитирует некоторые нестандартные особенности Netscape Communicator 4.x; однако некоторые функции версии 4.x (например, слои ) не поддерживаются.
Gecko также имеет ограниченную поддержку некоторых нестандартных функций Internet Explorer, таких как элемент выделения и document.all
свойство (хотя на страницах, явно проверяемых, document.all
будет указано, что они не поддерживаются). [22]
Gecko в основном используется в веб-браузерах , самыми ранними из которых являются Netscape 6 и Mozilla Suite (позже переименованный в SeaMonkey ). Он также используется в других производных веб-браузера Mozilla, таких как Firefox и Firefox для мобильных устройств , а также в реализации клона Internet Explorer , входящего в состав Wine . [23] Mozilla также использует его в своем почтовом клиенте Thunderbird .
Другие веб-браузеры, использующие Gecko, включают GNU IceCat , [24] Waterfox , K-Meleon , Lunascape , Portable Firefox , Conkeror , Classilla , TenFourFox .
Gecko также используется Sugar для компьютера OLPC XO-1 . [25] Gecko используется как полная реализация XUL ( язык пользовательского интерфейса XML ). Gecko в настоящее время определяет спецификацию 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. [26]
В Windows и других платформах Gecko зависит от проприетарных компиляторов. [27] Таким образом, дистрибутивы Linux FOSS не могут включать пакет Gecko, используемый на уровне совместимости Windows Wine . [28]
После Gecko 2.0 номер версии был увеличен до 5.0, чтобы соответствовать Firefox 5, и с тех пор синхронизируется с основным номером версии как для Firefox, так и для Thunderbird, [29] чтобы отразить тот факт, что это больше не отдельная версия. компонент. [30]
В эпоху Netscape сочетание плохих технических и управленческих решений привело к раздуванию программного обеспечения Gecko . [12] [31] [32] Таким образом, в 2001 году Apple решила создать форк KHTML , а не Gecko, чтобы создать движок WebKit для своего браузера Safari . [31] [32] Однако к 2008 году Mozilla устранила некоторые проблемы раздувания, что привело к значительному повышению производительности Gecko. [33]
Quantum — это проект Mozilla , включающий в себя несколько усилий по разработке программного обеспечения , направленных на «создание веб-движка следующего поколения для пользователей Firefox ». Он включает в себя многочисленные улучшения Gecko, в основном заимствованные из экспериментального проекта Servo . Quantum также включает в себя усовершенствования пользовательского интерфейса и взаимодействия. [13] [14]
Firefox 57, выпущенный в ноябре 2017 года, является начальной версией с включенным компонентом Servo. Mozilla называет этот и несколько запланированных будущих выпусков «Firefox Quantum». [34] [35]
В 2012 году Mozilla начала экспериментальный проект Servo , который представляет собой движок, разработанный с нуля с целью улучшения параллелизма и параллелизма , а также снижения уязвимостей безопасности памяти . Servo написан на языке программирования Rust , также созданном Mozilla, который предназначен для генерации скомпилированного кода с большей безопасностью памяти, параллелизмом и параллелизмом, чем скомпилированный код C++. [6]
По состоянию на апрель 2016 года Servo потребовалось как минимум несколько лет разработки, чтобы стать полнофункциональным браузерным движком, [36] отсюда и было принято решение запустить проект Quantum по внедрению стабильных частей Servo в Firefox. Mozilla уволила всех разработчиков Servo в августе 2020 года. [37]
Проект Quantum состоит из нескольких подпроектов. [13]
Проект Mozilla Azure — это низкоуровневый API абстракции графики без сохранения состояния, используемый в Firefox . [50] Проект преследует несколько целей, включая более точную совместимость с Direct2D, оптимизированную совместимость состояний и улучшенный контроль над производительностью и ошибками. Azure обеспечит аппаратное ускорение 2D поверх серверных частей 3D-графики. Firefox начал использовать Azure вместо Cairo в 2012 году. [51] [52] Он написан на C++ и используется Servo . [53] Название Azure — это ода основателю Netscape Джеймсу Х. Кларку и его ранней работе в Silicon Graphics , где рабочие станции часто назывались в честь цветов. [54]
Gecko реализован с использованием C++ и JavaScript.