Gecko (программное обеспечение) - Gecko (software)

Геккон
Mozillagecko-logo.svg
Разработчики)Фонд Mozilla, Mozilla Corporation, Adobe Systems, и другие участники
Стабильный выпуск
78.0 / июнь 2020; 6 месяцев назад (Июнь 2020 г.)
Репозиторий Отредактируйте это в Викиданных
Написано вC ++, JavaScript, Ржавчина
ТипДвижок браузера
ЛицензияMPL 2.0[1][2]
Интернет сайтразработчик.mozilla.org/ en-US/ docs/ Геккон

Геккон это движок браузера разработан Mozilla. Он используется в Fire Fox браузер, Thunderbird почтовый клиент, и многие другие проекты.

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

Геккон написан на C ++ и JavaScript,[4][5] а с 2016 г. дополнительно в Ржавчина.[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 в Геккон. В то время как Организация Mozilla (предшественник Фонд Mozilla ) первоначально продолжал использовать имя NGLayout (Gecko был товарным знаком Netscape),[10] в конце концов бренд Gecko победил.

В октябре 1998 года Netscape объявила, что в ее следующем браузере будет использоваться Gecko (который в то время все еще назывался NGLayout), а не старый механизм компоновки, что потребовало переписывания больших частей приложения. Хотя это решение было популярно среди сторонников веб-стандартов, оно было в значительной степени непопулярно среди разработчиков Netscape, которые были недовольны шестью месяцами, отведенными на переписывание.[11] Это также означало, что большая часть работы была сделана для Коммуникатор Netscape 5.0 (включая разработку на Моряк доработки старого двигателя компоновки) пришлось отказаться. Netscape 6, первый выпуск Netscape, включающий Gecko, был выпущен в ноябре 2000 года (название Netscape 5 никогда не использовалось).

По мере продолжения разработки Gecko его начали использовать другие приложения и программы для встраивания. Америка Онлайн, к этому времени материнская компания Netscape в конечном итоге приняла его для использования в CompuServe 7.0 и AOL для Mac OS X (в эти продукты ранее был встроен Internet Explorer). Однако, за исключением нескольких бета, Gecko никогда не использовался в основном Майкрософт Виндоус Клиент AOL.

15 июля 2003 г. AOL уволила оставшихся разработчиков Gecko, и Mozilla Foundation (сформированная в тот же день) стала главным руководителем разработки Gecko. Сегодня Gecko разрабатывают сотрудники Mozilla Corporation, сотрудники компаний, участвующих в проекте Mozilla, и волонтеры.

В октябре 2016 года Mozilla объявила Квантовая, текущий проект, охватывающий несколько разработка программного обеспечения усилия по "созданию веб-движка следующего поколения для Fire Fox пользователей ". Он включает в себя многочисленные улучшения Gecko, взятые из экспериментальной Сервопривод проект.[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 Preview как текущий проект, направленный на создание веб-браузера Android с помощью GeckoView.[17] Firefox для Android 79, также известный как «Firefox Daylight», первая поставка которого состоится в августе 2020 года, является первым стабильным выпуском с основными компонентами, работающими на движке GeckoView.[18]

Поддержка стандартов

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

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

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

Gecko также имеет ограниченную поддержку некоторых нестандартных функций Internet Explorer, таких как элемент выделения и document.all свойство (хотя страницы явно тестируют на document.all будет сказано, что он не поддерживается).[22]

Применение

Геккон в основном используется в веб-браузеры, самый ранний Netscape 6 и Mozilla Suite (позже переименован SeaMonkey ). Он также используется в других производных веб-браузера Mozilla, таких как Fire Fox и Firefox для мобильных устройств и реализация Internet Explorer -клон, входящий в состав Вино.[23] Mozilla также использует его в своих Почтовый клиент Thunderbird.

Другие веб-браузеры, использующие Gecko, включают GNU IceCat,[24] Waterfox, К-Мелеон, Лунаскейп, Портативный Firefox, Конкерор, Classilla, TenFourFox.

Другие продукты, использующие Gecko, включают Соловей, Instantbird и программное обеспечение Google для организации изображений Picasa (для Linux).[25]

Геккон также используется Сахар для OLPC XO-1 компьютер.[26] Gecko используется как полная реализация XUL (XML Язык пользовательского интерфейса). В настоящее время Gecko определяет спецификацию XUL.

Прошлые пользователи

Продукты, которые раньше использовали Gecko, включают: Бледная луна (теперь использую Goanna ), Богоявление (ныне известное как GNOME Web и используя WebKitGTK ), и GNOME DevHelp (теперь использую WebKitGTK.)

Снятые с производства продукты, в которых использовался Gecko, включают Swiftfox, Стадо, Галеон, Камино, Minimo, Коммуникатор Beonex, Казехакасе, Певчая птица, Sunbird (календарь), и MicroB.

Собственная зависимость

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

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

Раздувание

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

Квантовая

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

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

Задний план

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

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

Составная часть

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

  • CSS: Сервопривод параллель таблица стилей система интегрирована в Геккон. Тесты показывают, что производительность линейно зависит от количества ЦПУ ядра.[38] Это было выпущено в Firefox 57.[36]
  • Визуализировать: Сервопривод рендеринг архитектура, называемая WebRender, интегрирована в Gecko. WebRender заменяет немедленный режим рисование модели с сохраненный режим модель, которая легче ускоряется GPU воспользовавшись преимуществом сходства CSS / DOM с граф сцены. Рендеринг в худшем сценарии при тестировании превышает 60 кадров в секунду.[39] Mozilla приступила к включению нового средства визуализации для выбранных комбинаций оборудования и ОС в Firefox 67.[40]
  • Композитор: Геккон существует наборщик перемещен в собственный процесс, изолируя вкладки браузера от сбоев, связанных с графическим драйвером. Поскольку сбои композитора не приведут к остановке процесса содержимого браузера, процесс набора может быть перезапущен прозрачно без потери пользовательских данных. Это было выпущено в Firefox 53.[41]
  • ДОМ: По мотивам архитектуры Constellation Серво[42] и Опера с Престо двигатель[43] Quantum DOM использует совместно запланированные потоки в рамках ДОМ для увеличения скорости отклика без увеличения количества процессов и, соответственно, использования памяти. Ядро этого включено в Firefox 57.[44]
  • поток: Зонтик для видимых пользователем улучшений производительности, осуществляемых командой, которая работает с компонентами Gecko. Ориентация на реальные улучшения производительности пользователей на основных веб-приложения, в первую очередь G Suite и Facebook.[45] Эта работа завершена и отправлена ​​для Firefox 57.[46]
  • Фотон: А UI обновление всего приложения с уделением особого внимания повышению производительности пользовательского интерфейса. Считается дочерним проектом Quantum Flow.[47] Это было выпущено в Firefox 57.[35]
  • Сеть: Улучшить производительность Нецко, Сетевой уровень Gecko, перемещая большую часть сетевой активности из основного потока, контекстно-зависимую приоритизацию сетевых потоков и ускоряя уровень кеширования с сетью.[48] Эта функция была выпущена в Firefox 59.[49]

Лазурь

В Mozilla Azure Project - это API низкоуровневой графической абстракции без сохранения состояния, используемый в Fire Fox.[50] Проект преследует несколько целей, включая более точную совместимость с Direct2D, оптимизированное взаимодействие состояний и улучшенный контроль над характеристиками производительности и ошибками. Azure предоставит аппаратное ускорение 2D поверх серверной части 3D-графики. Firefox начал использовать Azure вместо Каир в 2012.[51][52] Это написано в C ++ и используется Сервопривод.[53] Имя Azure - это ода раннему основателю Netscape. Джеймс Х. Кларк и его предыдущая работа в SGI. Джим Кларк изобрел Двигатель геометрии в Стэндфордский Университет в 1979 году это был первый GPU. Силиконовая Графика были также первыми изобретателями OpenGL.[54]

использованная литература

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

внешние ссылки