Из Википедии, бесплатной энциклопедии
  (Перенаправлено с Gecko (движок верстки) )
Перейти к навигации Перейти к поиску

Gecko - это браузер, разработанный Mozilla . Он используется в браузере Firefox , почтовом клиенте Thunderbird и многих других проектах.

Gecko разработан для поддержки открытых Интернет-стандартов и используется различными приложениями для отображения веб-страниц и, в некоторых случаях, самого пользовательского интерфейса приложения (путем рендеринга XUL ). Gecko предлагает богатый программный API, который делает его подходящим для широкого спектра ролей в интернет-приложениях, таких как веб-браузеры , представление контента и клиент / сервер . [3]

Gecko написан на C ++ и JavaScript , [4] [5] и, с 2016 года, дополнительно на Rust . [6] [7] Это бесплатное программное обеспечение с открытым исходным кодом в соответствии с условиями общественной лицензии Mozilla версии 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, и волонтерами.

В октябре 2016 года Mozilla анонсировала Quantum , текущий проект, охватывающий несколько усилий по разработке программного обеспечения, направленных на «создание веб-движка следующего поколения для пользователей Firefox ». Он включает в себя множество улучшений Gecko, взятых из экспериментального проекта Servo . [12] [13] Firefox 57, также известный как «Firefox Quantum», первая поставка которого состоялась в ноябре 2017 года, является начальной версией с активными основными компонентами из проектов Quantum / Servo. К ним относятся повышенная производительность компонентов рендеринга CSS и GPU . Дополнительные компоненты будут постепенно объединяться из Servo в Gecko в будущих версиях. [12]

В сентябре 2018 года Mozilla анонсировала GeckoView, основу нового поколения мобильных продуктов Mozilla, основанную на программной библиотеке, которая делает Gecko многоразовым для Android, включая усилия по разработке нового программного обеспечения, направленные на «отделение самого движка от его пользовательского интерфейса и упрощение его использования». встраивать в другие приложения ». Firefox Focus 7.0, выпущенный в том же месяце [14], является первой версией, представленной GeckoView, с повышенной производительностью при средней загрузке страницы. [15] [16] Firefox Reality также был построен с помощью GeckoView. [15] В июне 2019 года Mozilla объявила о предварительном просмотре Firefox как о текущем проекте, направленном на создание веб-браузера Android с помощью GeckoView. [17]Firefox для Android 79, также известный как «Firefox Daylight», первая поставка которого состоится в августе 2020 года, является первым стабильным выпуском с основными компонентами, работающими на движке GeckoView. [18]

Поддержка стандартов [ править ]

С самого начала Gecko был разработан для поддержки открытых Интернет-стандартов. Некоторые из стандартов, поддерживаемых Gecko, включают:

  • CSS Level 2.1 (частичная поддержка CSS 3) [19]
  • DOM Level 1 и 2 (частичная поддержка DOM 3)
  • HTML 4 (частичная поддержка HTML5 - см. Сравнение механизмов компоновки (HTML5) )
  • JavaScript 1.8.5 (полная поддержка ECMAScript 5.1), [20] реализован в SpiderMonkey
  • MathML
  • RDF
  • XForms (через официальное расширение)
  • XHTML 1.0
  • XML 1.0
  • XSLT и XPath , реализованные в TransforMiiX

Gecko также частично поддерживает SVG 1.1. [21] Модули шрифта SVG, цветового профиля, анимации, представления и курсора еще предстоит реализовать, а модули фильтра и текста реализованы лишь частично. Модуль расширяемости также реализован, но в настоящее время отключен.

Для поддержки веб-страниц, разработанных для устаревших версий Netscape и Internet Explorer, Gecko поддерживает переключение DOCTYPE . Документы с современным DOCTYPE отображаются в режиме соответствия стандартам, который строго соответствует стандартам W3C . Документы, у которых нет DOCTYPE или более старый DOCTYPE, отображаются в режиме причуд , который имитирует некоторые нестандартные особенности Netscape Communicator 4.x; однако некоторые функции 4.x (например, слои ) не поддерживаются.

Gecko также имеет ограниченную поддержку некоторых нестандартных функций Internet Explorer, таких как элемент marquee и 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, включают Nightingale , Instantbird и программное обеспечение Google для организации изображений Picasa (для Linux). [25]

Gecko также используется Sugar для компьютера OLPC XO-1 . [26] 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 .

Собственная зависимость [ править ]

В Windows и других платформах Gecko зависит от проприетарных компиляторов. [27] Таким образом, FOSS- дистрибутивы Linux не могут включать пакет Gecko, используемый на уровне совместимости Windows Wine . [28]

После Gecko 2.0 номер версии был увеличен до 5.0, чтобы соответствовать Firefox 5, и с тех пор он синхронизировался с основным номером версии как для Firefox, так и для Thunderbird [29], чтобы отразить тот факт, что он больше не является отдельным компонент. [30]

Раздувание [ править ]

В эпоху Netscape сочетание плохих технических и управленческих решений привело к раздутию программного обеспечения Gecko . [11] [31] [32] Таким образом , в 2001 году компания Apple решила раскошелиться KHTML , а не Gecko, чтобы создать WebKit двигатель для его Safari браузер. [31] [32] Однако к 2008 году Mozilla решила некоторые проблемы с раздуванием, что привело к значительному повышению производительности Gecko. [33]

Quantum [ править ]

Quantum - это проект Mozilla, включающий несколько усилий по разработке программного обеспечения, направленных на «создание веб-движка следующего поколения для пользователей Firefox ». Он включает в себя многочисленные улучшения Gecko, во многом заимствованные из экспериментального проекта Servo . Quantum также включает усовершенствования в пользовательском интерфейсе и взаимодействиях. [12] [34]

Firefox 57, выпущенный в ноябре 2017 года, является начальной версией с включенным компонентом Servo. Mozilla называет этот и несколько запланированных будущих выпусков «Firefox Quantum». [35] [36]

Фон [ править ]

В 2013 году Mozilla начала экспериментальный проект Servo , который представляет собой движок, разработанный с нуля с целью улучшения параллелизма и параллелизма, а также снижения уязвимостей безопасности памяти . Servo написан на языке программирования Rust , также созданном Mozilla, который предназначен для генерации скомпилированного кода с большей безопасностью памяти, параллелизмом и параллелизмом, чем скомпилированный код C ++. [5]

По состоянию на апрель 2016 года Servo потребовалось как минимум несколько лет разработки, чтобы стать полнофункциональным браузером, [37] отсюда и было принято решение запустить проект Quantum, чтобы перенести стабильные части Servo в Firefox.

Компоненты [ править ]

Проект Quantum состоит из нескольких подпроектов. [12]

  • CSS : система параллельных таблиц стилей Servo, интегрированная в Gecko . Тесты показывают, что производительность линейно зависит от количества ядер процессора . [38] Это было выпущено в Firefox 57. [36]
  • Рендеринг : архитектура рендеринга Servo , называемая WebRender, интегрированная в Gecko. WebRender заменяет модель рисования в немедленном режиме на модель с сохраненным режимом, которая легче ускоряется графическим процессором за счет использования преимущества CSS / DOM сходства с графом сцены . Рендеринг в худшем сценарии при тестировании превышает 60 кадров в секунду. [39] Mozilla приступила к включению нового средства визуализации для выбранных комбинаций оборудования и ОС в Firefox 67. [40]
  • Compositor : существующий композитор Gecko перешел в собственный процесс, изолируя вкладки браузера от сбоев, связанных с графическим драйвером. Поскольку сбои композитора не приведут к остановке процесса содержимого браузера, процесс набора может быть перезапущен прозрачно без потери пользовательских данных. Это было выпущено в Firefox 53. [41]
  • DOM : Неплотно вдохновлено Созвездие архитектура сервопривода [42] и Opera «s Presto двигатель, [43] Квантовый DOM использует совместно запланированные потоки внутри DOM , чтобы увеличить отклик без увеличения числа процессов и, таким образом, использование памяти. Ядро этого включено в Firefox 57. [44]
  • Поток : зонтик для видимых пользователем улучшений производительности, осуществляемых командой, которая работает с компонентами Gecko. Ориентирован на реальные улучшения производительности пользователей основных веб-приложений , в первую очередь G Suite и Facebook . [45] Эта работа завершена и отправлена ​​для Firefox 57. [46]
  • Photon : обновление пользовательского интерфейса всего приложения с упором на повышение производительности пользовательского интерфейса. Считается дочерним проектом Quantum Flow. [47] Это было выпущено в Firefox 57. [35]
  • Сеть : улучшите производительность Necko , сетевого уровня Gecko, за счет переноса большей сетевой активности из основного потока, контекстно-зависимой приоритизации сетевых потоков и ускорения уровня кеширования с сетью. [48] Эта функция была выпущена в Firefox 59. [49]

Лазурный [ править ]

Проект Mozilla Azure - это низкоуровневый API абстракции графики без сохранения состояния, используемый в Firefox . [50] Проект преследует несколько целей, включая более точную совместимость с Direct2D, оптимизированное взаимодействие состояний и улучшенный контроль над характеристиками производительности и ошибками. Azure предоставит аппаратное ускорение 2D-графики поверх серверной части 3D-графики. Firefox начал использовать Azure вместо Cairo в 2012 году. [51] [52] Он написан на C ++ и используется Servo . [53] Имя Azure - это ода раннему основателю Netscape Джеймсу Х. Кларку и его более ранней работе в SGI. Джим Кларк изобрелGeometry Engine в Стэнфордском университете в 1979 году, который был первым графическим процессором. Silicon Graphics также были первооткрывателями OpenGL . [54]

Ссылки [ править ]

  1. ^ «Лицензионные соглашения с конечным пользователем Mozilla Foundation» . Mozilla .
  2. ^ «Политика лицензирования Mozilla» . mozilla.org . Проверено 26 марта 2013 .
  3. ^ «Встраивание Mozilla» . Mozilla.org. 2012-10-25 . Проверено 31 октября 2012 .
  4. ^ a b «Простая сборка Firefox для Android» . Gecko реализован с использованием C ++ и JavaScript.
  5. ^ а б Бергстром, Ларс; и другие. (Май 2016). «Разработка движка серво веб-браузера с использованием Rust» (PDF) . Материалы Международной конференции по программной инженерии .
  6. ^ "Группы Google" . groups.google.com .
  7. ^ Yegulalp, Сердар (3 февраля 2017). «Mozilla связывает судьбу Firefox с языком Rust» . InfoWorld .
  8. ^ "Обновление MPL 2" . Проверено 18 августа 2012 .
  9. ^ "Часто задаваемые вопросы о гекконах" . Веб-документы MDN .
  10. ^ "nglayout project: кризис идентичности" . Mozilla.org. Архивировано из оригинала на 2011-06-29 . Проверено 31 октября 2012 .
  11. ^ а б Хорхе О. Кастро (2004-06-15). «Ars Technica встретится со Скоттом Коллинзом из Mozilla.org» . Ars Technica . Проверено 16 февраля 2017 .
  12. ^ a b c d "Квант" . Mozilla Wiki . Проверено 20 апреля 2017 .
  13. ^ Cimpanu, Каталин. «Mozilla анонсирует Quantum, новый движок браузера для Firefox» . софтпедия . Проверено 7 ноября 2016 .
  14. ^ «Firefox Focus 7.0 переходит в бета-версию, переходит на GeckoView (Gecko Engine)» .
  15. ^ a b «Firefox Focus с GeckoView» . Mozilla Hacks . 13 сентября 2018 . Проверено 4 сентября 2019 года .
  16. ^ «Что нового в Firefox Focus для Android (версия 7) | Справка Firefox Focus» . support.mozilla.org . Проверено 4 сентября 2019 года .
  17. ^ «GeckoView в 2019 году» . Mozilla Hacks . 27 июня 2019 . Проверено 4 сентября 2019 года .
  18. Веста Заре (25 августа 2020 г.). «Быстро, индивидуально и конфиденциально на всех платформах: представляем новый интерфейс Firefox для Android» . Блог Mozilla . Проверено 22 сентября 2020 года .
  19. ^ "Таблица поддержки Mozilla CSS" . Developer.mozilla.org. 2012-08-04. Архивировано из оригинала на 2014-04-05 . Проверено 31 октября 2012 .
  20. ^ «Поддержка ECMAScript 5 в Mozilla» . Developer.mozilla.org. 2013-11-14 . Проверено 2 декабря 2013 .
  21. ^ "Статус Mozilla SVG" . Mozilla.org. 2012-08-25 . Проверено 31 октября 2012 .
  22. ^ "Mozilla добавляет поддержку Undetectable document.all, часть нового дистрибутива Novell Linux?" . Developer.mozilla.org. 2004-07-23 . Проверено 7 февраля 2018 .
  23. ^ "IE использует Gecko под вином" . Винная вики . Проверено 14 сентября 2009 .
  24. ^ sdubois (24 июня 2010 г.). «Геккон» . Фонд свободного программного обеспечения . Дата обращения 23 мая 2019 .
  25. ^ «Picasa 3.0 для Linux» . Архивировано из оригинала на 2009-01-07 . Проверено 28 декабря 2008 .
  26. ^ Мартенс, Китай (2007-01-03). «Один ноутбук на ребенка готовит интерфейс« Сахар »» . Служба новостей IDG. Архивировано из оригинала на 2008-01-18 . Проверено 28 декабря 2007 .
  27. ^ «Создание Firefox для Windows» . Веб-документы MDN .
  28. ^ http://wiki.jswindle.com/index.php/Fedora#Working_Wine. Архивировано 11 июня 2012 г., в Wayback Machine.
  29. ^ «Версии Gecko и версии приложений» . MDN . Проверено 18 ноября 2013 .
  30. ^ «Немногое в новом Thunderbird 5, но дорожная карта выглядит многообещающей» . Ars Technica . Проверено 7 февраля 2018 .
  31. ^ a b Пол Феста (14 января 2003 г.). «Яблочный пренебрежительный отзыв о Mozilla» . Сети CNET . Архивировано из оригинала на 2012-10-25 . Проверено 16 февраля 2017 .
  32. ^ a b Дэвид Барон (9 января 2003 г.). «Четверг, 09.01.2003» . Интернет-блог Дэвида Барона . самоиздан. Архивировано из оригинала на 2009-07-28 . Проверено 16 февраля 2017 .
  33. Райан Пол (9 сентября 2008 г.). «Почему Mozilla привержена Gecko по мере роста популярности WebKit» . Проверено 16 февраля 2017 .
  34. ^ Cimpanu, Каталин. «Mozilla анонсирует Quantum, новый движок браузера для Firefox» . софтпедия . Проверено 17 февраля 2017 .
  35. ^ a b «Firefox 57.0, все новые функции, обновления и исправления» . Mozilla . Проверено 30 октября 2018 .
  36. ^ a b «Представляем новый Firefox: Firefox Quantum - блог Mozilla» . Блог Mozilla . Проверено 30 октября 2018 .
  37. ^ "Сервопривод остающийся работа" . GitHub . Проверено 17 февраля 2017 .
  38. ^ "Журнал изменений" . Журнал изменений . Проверено 28 марта 2017 .
  39. ^ «Встреча по Rust в районе залива, февраль 2016» . Air Mozilla . Проверено 28 марта 2017 .
  40. ^ "Где Webrender" . Mozilla Wiki . Проверено 14 июля 2020 .
  41. ^ «Firefox быстрее и стабильнее с первыми большими байтами Project Quantum, проще с компактными темами и изменением разрешений» . Блог Mozilla . Проверено 27 апреля 2017 .
  42. ^ "Серво архитектура" . YouTube . Проверено 28 марта 2017 .
  43. ^ «Квантовый проект Mozilla» . Блог Билла Макклоски . 2016-10-27 . Проверено 28 марта 2017 .
  44. ^ «Вступая в квантовую эру» . Mozilla Hacks . 2017-11-13 . Проверено 14 июля 2020 .
  45. ^ «Квантовый поток» . Mozilla Wiki . Проверено 28 марта 2017 .
  46. ^ "Информационный бюллетень Quantum Flow Engineering # 25" . ehsanakhgari.org . 2017-09-17 . Проверено 14 июля 2020 .
  47. ^ dolske (18.05.2017). "Информационный бюллетень фотонной инженерии №1" . Блог Дольске . Проверено 4 июля 2017 .
  48. ^ "TPE Necko / Проекты - MozillaWiki" . wiki.mozilla.org . Проверено 4 июля 2017 .
  49. ^ «Примечания к выпуску Firefox 59» . www.mozilla.org . Проверено 16 января 2019 .
  50. ^ «Платформа / GFX / Moz2D - MozillaWiki» .
  51. ^ Парфени, Лукиан. «Firefox теперь использует API графики Azure для Canvas на всех платформах» .
  52. ^ "Azure, заменяющий Cairo в Mozilla Firefox - Phoronix" .
  53. Уиллис, Натан (17 июня 2015 г.). «Параллельная отрисовка страниц с помощью Mozilla Servo» . LWN.net . Проверено 27 июня 2015 года .
  54. ^ "Представляем проект Azure - JOEDREW!" . Архивировано из оригинала на 2016-09-08 . Проверено 22 сентября 2019 .

Внешние ссылки [ править ]

  • Gecko - Сеть разработчиков Mozilla
  • Вики по разработке Gecko (wiki.mozilla.org)
  • Предложение стратегии продукта Mozilla (ПРОЕКТ)
  • Поддержка стандартов веб-браузера
  • JRex ( Java API для Gecko)