Gecko (software) - Gecko (software)

Gecko
Mozillagecko-logo.svg
Desenvolvedor (s) Mozilla Foundation , Mozilla Corporation , Adobe Systems e outros contribuidores
Versão estável
78,0 / junho de 2020 ; 16 meses atrás ( Junho de 2020 )
Repositório
Escrito em C ++ , JavaScript , Rust
Modelo Motor do navegador
Licença MPL 2.0
Local na rede Internet desenvolvedor .mozilla .org / en-US / docs / Glossário / Gecko

Gecko é um motor de navegador desenvolvido pela Mozilla . Ele é usado no navegador Firefox , no cliente de e- mail Thunderbird e em muitos outros projetos.

O Gecko é projetado para suportar padrões abertos de Internet e é usado por diferentes aplicativos para exibir páginas da web e, em alguns casos, a própria interface de usuário de um aplicativo (renderizando XUL ). O Gecko oferece uma API de programação rica que o torna adequado para uma ampla variedade de funções em aplicativos habilitados para Internet, como navegadores da web , apresentação de conteúdo e cliente / servidor .

Gecko é escrito em C ++ e JavaScript e, desde 2016, adicionalmente em Rust . É um software gratuito e de código aberto sujeito aos termos da Mozilla Public License versão 2. Mozilla oficialmente suporta seu uso no Android , Linux , macOS e Windows .

História

O desenvolvimento do mecanismo de layout agora conhecido como Gecko começou na Netscape em 1997, após a compra da DigitalStyle pela empresa . O mecanismo de renderização Netscape existente, originalmente escrito para o Netscape Navigator 1.0 e atualizado ao longo dos anos, era lento, não cumpria bem com os padrões W3C, tinha suporte limitado para HTML dinâmico e carecia de recursos como refluxo incremental (quando o mecanismo de layout reorganiza os elementos em tela à medida que novos dados são baixados e adicionados à página). O novo mecanismo de layout foi desenvolvido em paralelo com o antigo, com a intenção de integrá-lo ao Netscape Communicator quando estivesse maduro e estável. Esperava-se que pelo menos mais uma grande revisão do Netscape fosse lançada com o mecanismo de layout antigo antes da mudança.

Após o lançamento do projeto Mozilla no início de 1998, o novo código do mecanismo de layout foi lançado sob uma licença de código aberto. Revelado originalmente como Raptor , o nome teve que ser alterado para NGLayout (layout de próxima geração) devido a problemas de marca registrada . A Netscape posteriormente rebatizou NGLayout como Gecko . Enquanto a Mozilla Organization (a precursora da Mozilla Foundation ) inicialmente continuou a usar o nome NGLayout (Gecko era uma marca registrada da Netscape), eventualmente a marca Gecko venceu.

Em outubro de 1998, a Netscape anunciou que seu próximo navegador usaria o Gecko (que ainda era chamado de NGLayout na época) em vez do mecanismo de layout antigo, exigindo que grandes partes do aplicativo fossem reescritas. Embora essa decisão tenha sido popular entre os defensores dos padrões da web, foi amplamente impopular entre os desenvolvedores do Netscape, que não ficaram satisfeitos com os seis meses dados para a reescrita. Isso também significou que a maior parte do trabalho feito para o Netscape Communicator 5.0 (incluindo o desenvolvimento das melhorias do Mariner no mecanismo de layout antigo) teve que ser abandonado. O Netscape 6, o primeiro lançamento do Netscape a incorporar o Gecko, foi lançado em novembro de 2000 (o nome Netscape 5 nunca foi usado).

Conforme o desenvolvimento do Gecko continuou, outros aplicativos e incorporadores começaram a fazer uso dele. A America Online , a essa altura a empresa-mãe da Netscape, acabou adotando-o para uso no CompuServe 7.0 e AOL para Mac OS X (esses produtos já tinham o Internet Explorer integrado). No entanto, com exceção de alguns betas , o Gecko nunca foi usado no cliente AOL principal do Microsoft Windows .

Em 15 de julho de 2003, a AOL dispensou os desenvolvedores Gecko restantes e a Mozilla Foundation (formada no mesmo dia) tornou-se a principal responsável pelo desenvolvimento do Gecko. Hoje, o Gecko é desenvolvido por funcionários da Mozilla Corporation , funcionários de empresas que contribuem para o projeto Mozilla e voluntários.

Em outubro de 2016, a Mozilla anunciou o Quantum , um projeto em andamento que engloba vários esforços de desenvolvimento de software para "construir o mecanismo da web de próxima geração para os usuários do Firefox ". Inclui inúmeras melhorias para o Gecko, retiradas do projeto experimental Servo . O Firefox 57, também conhecido como "Firefox Quantum", lançado pela primeira vez em novembro de 2017, é a versão inicial com os principais componentes dos projetos Quantum / Servo habilitados. Isso inclui maior desempenho nos componentes de renderização CSS e GPU . Componentes adicionais serão mesclados de Servo para Gecko de forma incremental em versões futuras.

Em setembro de 2018, a Mozilla anunciou o GeckoView, a base da próxima geração de produtos móveis da Mozilla com base em uma biblioteca de software que torna o Gecko reutilizável para Android, abrangendo esforços de desenvolvimento de software mais recentes para "separar o próprio mecanismo de sua interface de usuário e torná-lo fácil de incorporar em outros aplicativos ". O Firefox Focus 7.0, lançado no mesmo mês, é a versão inicial introduzida no GeckoView, com maior desempenho no carregamento médio da página. O Firefox Reality também foi construído com GeckoView. Em junho de 2019, a Mozilla anunciou o Firefox Preview como um projeto em andamento que se concentra na construção de um navegador Android com GeckoView. O Firefox para Android 79, também conhecido como "Firefox Daylight", lançado pela primeira vez em agosto de 2020, é a primeira versão estável do mesmo com componentes principais movidos pelo motor GeckoView.

Suporte a padrões

Desde o início, o Gecko foi projetado para suportar os padrões abertos da Internet. Alguns dos padrões que o Gecko suporta incluem:

O Gecko também suporta parcialmente SVG 1.1. A fonte SVG, perfil de cor, animação, visualização e módulos de cursor ainda não foram implementados e os módulos de filtro e texto foram implementados apenas parcialmente. O módulo de extensibilidade também está implementado, mas atualmente está desativado.

Para oferecer suporte a páginas da web projetadas para versões legadas do Netscape e Internet Explorer, o Gecko oferece suporte à troca de DOCTYPE . Documentos com um DOCTYPE moderno são processados ​​no modo de conformidade com os padrões, que segue estritamente os padrões W3C . Os documentos que não têm DOCTYPE ou um DOCTYPE mais antigo são renderizados no modo quirks , que emula algumas das esquisitices não padrão do Netscape Communicator 4.x; no entanto, alguns dos recursos 4.x (como camadas ) não são suportados.

O Gecko também tem suporte limitado para alguns recursos não padrão do Internet Explorer, como o elemento marquee e a document.allpropriedade (embora as páginas testando explicitamente document.allserão informadas de que não é compatível).

Uso

O Gecko é usado principalmente em navegadores da web , sendo o primeiro o Netscape 6 e o Mozilla Suite (posteriormente renomeado como SeaMonkey ). Ele também é usado em outros derivados do navegador Mozilla, como Firefox e Firefox para dispositivos móveis e na implementação do Internet Explorer -clone que faz parte do Wine . A Mozilla também o usa em seu cliente de e-mail Thunderbird .

Outros navegadores web utilizando Gecko incluem GNU IceCat , Waterfox , K-Meleon , Lunascape , Firefox Portable , conkeror , Classilla , TenFourFox .

O Gecko também é usado pelo Sugar para o computador OLPC XO-1 . O Gecko é usado como uma implementação completa do XUL ( XML User Interface Language). O Gecko atualmente define a especificação XUL.

Utilizadores anteriores

Os produtos que antes usavam o Gecko incluem Pale Moon (agora usando Goanna ), Epiphany (agora conhecido como GNOME Web e usando WebKitGTK ) e GNOME DevHelp (agora usando WebKitGTK ).

Os produtos descontinuados que usavam o Gecko incluem Swiftfox , Flock , Galeon , Camino , Minimo , Beonex Communicator , Kazehakase , Songbird , Sunbird (calendário) , MicroB , Nightingale , Instantbird e Picasa para Linux.

Dependência proprietária

No Windows e em outras plataformas, o Gecko depende de compiladores proprietários. Portanto, as distribuições FOSS do Linux não podem incluir o pacote Gecko usado na camada de compatibilidade do Windows Wine .

Depois do Gecko 2.0, o número da versão foi aumentado para 5.0 para coincidir com o Firefox 5 e, a partir de então, foi mantido em sincronia com o número da versão principal do Firefox e do Thunderbird, para refletir o fato de que não é mais um componente separado.

Inchar

Na era do Netscape, uma combinação de más decisões técnicas e de gerenciamento resultou no inchaço do software Gecko . Assim, em 2001, a Apple escolheu um fork do KHTML , e não do Gecko, para criar o motor WebKit para seu navegador Safari . No entanto, em 2008, a Mozilla havia resolvido alguns dos problemas de inchaço, resultando em grandes melhorias de desempenho para o Gecko.

Quantum

Quantum é um projeto da Mozilla que engloba vários esforços de desenvolvimento de software para "construir o mecanismo da web de próxima geração para os usuários do Firefox ". Inclui inúmeras melhorias no Gecko, em grande parte incorporadas ao projeto experimental Servo . O Quantum também inclui refinamentos na interface do usuário e nas interações.

O Firefox 57, lançado em novembro de 2017, é a versão inicial com um componente Servo habilitado. A Mozilla chama este e vários lançamentos futuros planejados de "Firefox Quantum".

Fundo

Em 2012, a Mozilla iniciou o projeto experimental Servo , que é um motor projetado do zero com o objetivo de melhorar a simultaneidade e o paralelismo, ao mesmo tempo em que reduz as vulnerabilidades de segurança da memória . Servo é escrito na linguagem de programação Rust , também criada pela Mozilla, que é projetada para gerar código compilado com melhor segurança de memória, simultaneidade e paralelismo do que o código C ++ compilado.

Em abril de 2016, o Servo precisava de pelo menos vários anos de desenvolvimento para se tornar um mecanismo de navegador completo, daí a decisão de iniciar o projeto Quantum para trazer porções estáveis ​​do Servo para o Firefox.

Componentes

O projeto Quantum é composto por vários subprojetos.

  • CSS : sistema de folha de estilo paralelo do Servo integrado ao Gecko. Os benchmarks sugerem que o desempenho é dimensionado linearmente com o número de núcleos da CPU . Ele foi lançado no Firefox 57.
  • Render : Arquitetura de renderização do Servo , chamada WebRender, integrada ao Gecko. O WebRender substitui o modelo de desenho de modo imediato por um modelo de modo retido que é mais facilmente acelerado pela GPU aproveitando a semelhança de CSS / DOM com um gráfico de cena . A renderização do pior cenário no teste excede 60 quadros por segundo. A Mozilla começou a habilitar o novo renderizador para combinações selecionadas de hardware / sistema operacional no Firefox 67.
  • Compositor : o compositor existente do Gecko mudou para seu próprio processo, isolando as guias do navegador de travamentos relacionados ao driver gráfico. Uma vez que os travamentos do compositor não interromperão o processo de conteúdo do navegador, o processo do compositor pode ser reiniciado de forma transparente sem perder os dados do usuário. Ele foi lançado no Firefox 53.
  • DOM : Vagamente inspirado na arquitetura Constellation do Servo e no mecanismo Presto do Opera , o Quantum DOM usa threads agendados cooperativamente dentro do DOM para aumentar a capacidade de resposta sem aumentar o número de processos e, portanto, o uso de memória. O núcleo disso vem no Firefox 57.
  • Fluxo : Um guarda-chuva para melhorias de desempenho visíveis ao usuário conduzidas por uma equipe que trabalha em todos os componentes do Gecko. Focado em melhorias reais de desempenho do usuário nos principais aplicativos da web , principalmente G Suite (agora chamado de Google Workspace ) e Facebook . Este trabalho foi concluído e enviado para o Firefox 57.
  • Photon : uma atualização da IU de todo o aplicativo, com um forte foco na melhoria do desempenho da IU. Tratado como um projeto irmão do Quantum Flow. Ele foi lançado no Firefox 57.
  • Rede : melhore o desempenho do Necko , a camada de rede do Gecko, movendo mais atividade de rede para fora do thread principal, priorização dependente do contexto de fluxos de rede e corrida da camada de cache com a rede. Este recurso foi lançado no Firefox 59.

Azure

O projeto Mozilla Azure é uma API de abstração de gráficos de baixo nível sem estado usada no Firefox . O projeto tem vários objetivos, incluindo compatibilidade Direct2D mais precisa, interoperabilidade otimizada de estado e controle aprimorado sobre características de desempenho e bugs. O Azure fornecerá aceleração de hardware 2D além de back-ends gráficos 3D. O Firefox começou a usar o Azure em vez do Cairo em 2012. Ele é escrito em C ++ e usado pelo Servo . O nome Azure é uma ode ao fundador da Netscape, James H. Clark, e seu trabalho anterior na Silicon Graphics, onde as estações de trabalho costumavam receber nomes de cores.

Referências

links externos