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