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

редактировать
Бесплатная HTML-верстка
Gecko
Mozillagecko-logo.svg
Разработчик (и) Mozilla Foundation, Mozilla Corporation, Adobe Systems и другие участники
Repository Измените это на Wikidata
Написано наC ++, JavaScript, Rust
Тип Движок браузера
Лицензия MPL 2.0
Веб-сайтразработчик.mozilla.org / en-US / docs / Gecko

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

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

Gecko написан на C ++ и JavaScript, а с 2016 года дополнительно на Rust. Это бесплатное программное обеспечение с открытым исходным кодом в соответствии с условиями общественной лицензии Mozilla версии 2. Mozilla официально поддерживает его использование на Android, Linux., macOS и Windows.

Содержание
  • 1 История
  • 2 Поддержка стандартов
  • 3 Использование
    • 3.1 Прошлые пользователи
    • 3.2 Собственная зависимость
  • 4 Раздутие
  • 5 Quantum
    • 5.1 Предпосылки
    • 5.2 Компонент
  • 6 Azure
  • 7 Ссылки
  • 8 Внешние ссылки
История

Разработка механизма компоновки теперь известная как 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, которые были недовольны шестью месяцами, отведенными на переписывание. Это также означало, что от большей части работы, проделанной для 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 никогда не использовался в основном клиенте AOL Microsoft Windows.

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

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

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

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

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

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

Для поддержки веб-страниц, разработанных для устаревших версий Netscape и Internet Explorer, Gecko поддерживает DOCTYPE переключение. Документы с современным DOCTYPE отображаются в режиме соответствия стандартам, который следует за e Строгое стандарты W3C. Документы, не имеющие DOCTYPE или более старые DOCTYPE, отображаются в режиме quirks, который имитирует некоторые нестандартные особенности 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, который является частью Вино. Mozilla также использует его в своем почтовом клиенте Thunderbird.

. Другие веб-браузеры, использующие Gecko, включают GNU IceCat, Waterfox, K-Meleon, Lunascape, Portable Firefox, Conkeror, Classilla, TenFourFox.

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

Gecko также используется Sugar для OLPC XO-1 компьютер. 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 зависит от проприетарных компиляторов. Таким образом, FOSS дистрибутивы Linux не могут включать пакет Gecko, используемый на уровне совместимости с Windows Wine.

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

Раздувание

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

Quantum

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

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

Предпосылки

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

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

Компонент

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

  • CSS : Параллельная таблица стилей Servo система интегрирована в Gecko. Тесты показывают, что производительность линейно зависит от количества ядер ЦП. Это было выпущено в Firefox 57.
  • Render : Архитектура рендеринга Servo, называемая WebRender, интегрированная в Gecko. WebRender заменяет модель рисования немедленного режима на модель с сохраненным режимом, которая легче ускоряется с помощью GPU за счет использования сходства CSS / DOM с граф сцены. Рендеринг в худшем сценарии при тестировании превышает 60 кадров в секунду. Mozilla приступила к включению нового средства визуализации для выбранных комбинаций оборудования и ОС в Firefox 67.
  • Compositor : существующий compositor Gecko перемещен в свой собственный процесс, изолируя вкладки браузера от сбоев, связанных с графическим драйвером. Поскольку сбои композитора не приведут к остановке процесса содержимого браузера, процесс композитора может быть перезапущен прозрачно без потери пользовательских данных. Это было выпущено в Firefox 53.
  • DOM : В некоторой степени вдохновленный архитектурой Servo Constellation и движком Presto Opera, Quantum DOM использует совместно запланированные потоки в DOM для увеличения скорости отклика без увеличения количества процессов и, следовательно, использования памяти. Ядро этого реализовано в Firefox 57.
  • Flow : Зонт для видимых пользователем улучшений производительности, проводимых командой, которая работает с компонентами Gecko. Сосредоточен на реальных улучшениях производительности пользователей в основных веб-приложениях, в первую очередь G Suite и Facebook. Эта работа завершена и отправлена ​​для Firefox 57.
  • Photon : UI обновление всего приложения с упором на повышение производительности пользовательского интерфейса. Считается дочерним проектом Quantum Flow. Это было выпущено в Firefox 57.
  • Сеть : улучшите производительность Necko, сетевого уровня Gecko, за счет переноса большей сетевой активности из основного потока, контекстно-зависимой приоритизации сетевых потоков и гонок слой кеша с сетью. Эта функция была выпущена в Firefox 59.
Azure

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

Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-21 13:44:57
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте