Gecko (software) - Gecko (software)

Gecko
Mozillagecko-logo.svg
Udvikler (er) Mozilla Foundation , Mozilla Corporation , Adobe Systems og andre bidragydere
Stabil udgivelse
78.0 / juni 2020 ; 16 måneder siden ( Juni 2020 )
Depot
Skrevet i C ++ , JavaScript , Rust
Type Browsermotor
Licens MPL 2.0
Internet side udvikler .mozilla .org /da-US /docs /Glossary /Gecko

Gecko er en browsermotor udviklet af Mozilla . Det bruges i Firefox -browseren, Thunderbird -e -mail -klienten og mange andre projekter.

Gecko er designet til at understøtte åbne internetstandarder og bruges af forskellige applikationer til at vise websider og i nogle tilfælde en applikations brugergrænseflade selv (ved gengivelse af XUL ). Gecko tilbyder en rig programmerings- API, der gør den velegnet til en lang række roller i internetaktiverede applikationer, såsom webbrowsere , indholdspræsentation og klient/server .

Gecko er skrevet i C ++ og JavaScript , og siden 2016 desuden i Rust . Det er gratis og open source-software, der er underlagt betingelserne i Mozilla Public License version 2. Mozilla understøtter officielt brugen på Android , Linux , macOS og Windows .

Historie

Udviklingen af ​​layoutmotoren nu kendt som Gecko begyndte på Netscape i 1997 efter virksomhedens køb af DigitalStyle . Den eksisterende Netscape -gengivelsesmotor, der oprindeligt blev skrevet til Netscape Navigator 1.0 og opgraderet gennem årene, var langsom, overholdt ikke godt W3C -standarder, havde begrænset understøttelse af dynamisk HTML og manglede funktioner såsom inkrementel reflow (når layoutmotoren omarrangerer elementer på skærmen, når nye data downloades og tilføjes til siden). Den nye layoutmotor blev udviklet parallelt med den gamle, med den hensigt at integrere den i Netscape Communicator, når den var moden og stabil. Mindst en større revision af Netscape forventedes at blive frigivet med den gamle layoutmotor før skiftet.

Efter lanceringen af ​​Mozilla-projektet i begyndelsen af ​​1998 blev den nye layoutmotorkode frigivet under en open source-licens. Oprindeligt afsløret som Raptor , skulle navnet ændres til NGLayout (næste generations layout) på grund af varemærkeproblemer . Netscape omdøbte senere NGLayout til Gecko . Mens Mozilla Organization (forløberen for Mozilla Foundation ) i første omgang fortsatte med at bruge NGLayout -navnet (Gecko var et Netscape -varemærke), til sidst vandt Gecko -brandingen.

I oktober 1998 meddelte Netscape, at den næste browser ville bruge Gecko (som dengang stadig hed NGLayout) frem for den gamle layoutmotor, hvilket kræver, at store dele af applikationen skal omskrives. Selvom denne beslutning var populær blandt advokater for webstandarder, var den stort set upopulær blandt Netscape -udviklere, der var utilfredse med de seks måneder, der blev givet til omskrivningen. Det betød også, at det meste af det arbejde, der blev udført for Netscape Communicator 5.0 (inklusive udvikling af Mariner -forbedringerne til den gamle layoutmotor) måtte opgives. Netscape 6, den første Netscape -udgivelse, der inkorporerede Gecko, blev udgivet i november 2000 (navnet Netscape 5 blev aldrig brugt).

Da Gecko -udviklingen fortsatte, begyndte andre applikationer og embedders at gøre brug af det. America Online , på dette tidspunkt Netscapes moderselskab, til sidst vedtog det til brug i CompuServe 7.0 og AOL til Mac OS X (disse produkter havde tidligere integreret Internet Explorer). Men med undtagelse af et par betas blev Gecko aldrig brugt i hoved Microsoft Windows AOL -klienten.

Den 15. juli 2003 afskedigede AOL de resterende Gecko -udviklere, og Mozilla Foundation (dannet samme dag) blev hovedforvalter for Gecko -udviklingen. I dag er Gecko udviklet af medarbejdere i Mozilla Corporation , ansatte i virksomheder, der bidrager til Mozilla -projektet, og frivillige.

I oktober 2016 annoncerede Mozilla Quantum , et igangværende projekt, der omfatter flere softwareudviklingsindsatser for at "bygge den næste generations webmotor til Firefox- brugere". Det indeholder mange forbedringer af Gecko, taget fra det eksperimentelle Servo -projekt. Firefox 57, også kendt som "Firefox Quantum", første forsendelse i november 2017, er den første version med hovedkomponenter fra Quantum/Servo -projekterne aktiveret. Disse inkluderer øget ydeevne i CSS- og GPU -gengivelseskomponenter. Yderligere komponenter vil blive fusioneret fra Servo til Gecko trinvist i fremtidige versioner.

I september 2018 annoncerede Mozilla GeckoView, grundlaget for Mozillas næste generation af mobile produkter baseret på et softwarebibliotek, der gør Gecko genanvendelig til Android, og omfatter nyere softwareudviklingsindsatser for at "afkoble selve motoren fra sin brugergrænseflade og gøre det let at integreres i andre applikationer ". Firefox Focus 7.0, der blev sendt i samme måned, er den første version, der blev introduceret GeckoView, med øget ydeevne i median sideindlæsning. Firefox Reality blev også bygget med GeckoView. I juni 2019 annoncerede Mozilla Firefox Preview som et igangværende projekt, der fokuserer på at opbygge en Android -webbrowser med GeckoView. Firefox til Android 79, også kendt som "Firefox Daylight", første forsendelse i august 2020, er den første stabile udgave af den med hovedkomponenter drevet af GeckoView -motor.

Standarder understøtter

Gecko var fra starten designet til at understøtte åbne internetstandarder. Nogle af de standarder Gecko understøtter inkluderer:

Gecko understøtter også delvist SVG 1.1. SVG -skrifttypen, farveprofilen, animationen, visningen og markørmodulerne mangler endnu at blive implementeret, og filter- og tekstmodulerne er kun delvist implementeret. Udvidelsesmodulet er også implementeret, men er i øjeblikket deaktiveret.

For at understøtte websider designet til ældre versioner af Netscape og Internet Explorer understøtter Gecko DOCTYPE -skift. Dokumenter med en moderne DOCTYPE gengives i standarder for overholdelse af standarder, som følger W3C -standarderne nøje. Dokumenter, der ikke har nogen DOCTYPE eller en ældre DOCTYPE, gengives i quirks-tilstand , hvilket efterligner nogle af de ikke-standardiserede uligheder i Netscape Communicator 4.x; nogle af 4.x -funktionerne (f.eks. lag ) understøttes dog ikke.

Gecko har også begrænset support til nogle ikke-standardiserede Internet Explorer-funktioner, f.eks. Teltelementet og document.allejendommen (selvom sider, der eksplicit tester for, document.allfår at vide, at det ikke understøttes).

Anvendelse

Gecko bruges primært i webbrowsere , den tidligste er Netscape 6 og Mozilla Suite (senere omdøbt til SeaMonkey ). Det bruges også i andre Mozilla -webbrowserderivater som Firefox og Firefox til mobilenheder og implementeringen af Internet Explorer -klonen, der er en del af Wine . Mozilla bruger det også i deres Thunderbird-e-mail-klient .

Andre webbrowsere, der bruger Gecko, inkluderer GNU IceCat , Waterfox , K-Meleon , Lunascape , Portable Firefox , Conkeror , Classilla , TenFourFox .

Gecko bruges også af Sugar til OLPC XO-1 computeren. Gecko bruges som en komplet implementering af XUL ( XML User Interface Language). Gecko definerer i øjeblikket XUL -specifikationen.

Tidligere brugere

Produkter, der tidligere brugte Gecko, omfatter Pale Moon (bruger nu Goanna ), Epiphany (nu kendt som GNOME Web og ved hjælp af WebKitGTK ) og GNOME DevHelp (nu ved hjælp af WebKitGTK .)

Udgåede produkter, der brugte Gecko, inkluderer Swiftfox , Flock , Galeon , Camino , Minimo , Beonex Communicator , Kazehakase , Songbird , Sunbird (kalender) , MicroB , Nightingale , Instantbird og Picasa til Linux.

Proprietær afhængighed

På Windows og andre platforme afhænger Gecko af proprietære kompilatorer. Således FOSS distributioner af Linux kan ikke indeholde Gecko pakke, der bruges i Windows-kompatibilitet lag af Vin .

Efter Gecko 2.0 blev versionsnummeret stødt til 5.0 for at matche Firefox 5, og fra da af er det blevet synkroniseret med det store versionsnummer for både Firefox og Thunderbird, for at afspejle det faktum, at det ikke længere er en separat komponent.

Bloat

I Netscape -æraen resulterede en kombination af dårlige tekniske og ledelsesmæssige beslutninger i Gecko -softwareopblussen . Således valgte Apple i 2001 at gaffel KHTML , ikke Gecko, for at oprette WebKit -motoren til sin Safari -browser. Imidlertid havde Mozilla i 2008 løst nogle af de oppustede problemer, hvilket resulterede i store ydelsesforbedringer for Gecko.

Quantum

Quantum er et Mozilla- projekt, der omfatter flere softwareudviklingsindsatser for at "bygge den næste generations webmotor til Firefox- brugere". Det indeholder mange forbedringer af Gecko, stort set inkorporeret fra det eksperimentelle Servo -projekt. Quantum inkluderer også forbedringer af brugergrænsefladen og interaktioner.

Firefox 57, udgivet i november 2017, er den første version med en Servo -komponent aktiveret. Mozilla dubber dette og flere planlagte fremtidige udgivelser "Firefox Quantum".

Baggrund

I 2012 begyndte Mozilla det eksperimentelle Servo -projekt , som er en motor designet fra bunden med målene om at forbedre samtidighed og parallelisme og samtidig reducere sårbarheder ved hukommelsessikkerhed . Servo er skrevet i programmeringssproget Rust , også skabt af Mozilla, som er designet til at generere kompileret kode med bedre hukommelsessikkerhed, samtidighed og parallelitet end kompileret C ++ - kode.

Fra april 2016 havde Servo brug for mindst flere års udvikling for at blive en fuldt udstyret browsermotor, derfor beslutningen om at starte Quantum-projektet for at bringe stabile dele af Servo til Firefox.

Komponenter

Quantum-projektet består af flere delprojekter.

  • CSS : Servos parallelle stilark -system integreret i Gecko. Benchmarks tyder på, at ydeevnen skaleres lineært med antallet af CPU -kerner. Dette blev udgivet i Firefox 57.
  • Render : Servos gengivelsesarkitektur , kaldet WebRender, integreret i Gecko. WebRender erstatter den øjeblikkelige tilstandstegningsmodel med en model med beholdt tilstand , der lettere accelereres af GPU'en ved at udnytte CSS/DOMs lighed med en scenediagram . Værst tænkelig scenarie gengivelse i test overstiger 60 billeder i sekundet. Mozilla begyndte at aktivere den nye renderer til udvalgte hardware/OS -kombinationer i Firefox 67.
  • Komponist : Geckos eksisterende komponist flyttede til sin egen proces og isolerede browserfaner fra grafikdriverrelaterede nedbrud. Da komponistnedbrud ikke vil nedbringe browserindholdsprocessen, kan komponistprocessen genstartes gennemsigtigt uden at miste brugerdata. Dette blev udgivet i Firefox 53.
  • DOM : Løst inspireret af Servo s Constellation arkitektur og Opera 's Presto motor, bruger Quantum DOM kooperativt planlagte tråde i DOM til at øge lydhørhed uden at øge antallet af processer og dermed brug af hukommelse. Kernen i dette afsendt i Firefox 57.
  • Flow : En paraply til forbedrede synlige præstationsforbedringer drevet af et team, der arbejder på tværs af Gecko -komponenter. Fokuseret på forbedringer af virkelige brugerpræstationer på større webapps , primært G Suite (nu kaldet Google Workspace ) og Facebook . Dette arbejde blev afsluttet og sendt til Firefox 57.
  • Photon : En UI -opdatering af hele applikationen med stort fokus på at forbedre UI -ydeevnen. Behandlet som et søsterprojekt til Quantum Flow. Dette blev udgivet i Firefox 57.
  • Netværk : Forbedre ydelsen af Necko , Geckos netværkslag, ved at flytte mere netværksaktivitet fra hovedtråden, kontekstafhængig prioritering af netværksstrømme og køre cachelaget med netværket. Denne funktion blev frigivet i Firefox 59.

Azure

Den Mozilla Azure projekt er statsløs low-level grafik abstraktion API bruges i Firefox . Projektet har flere mål, herunder mere præcis Direct2D -kompatibilitet, optimeret tilstandsinteroperabilitet og forbedret kontrol over ydeevneegenskaber og fejl. Azure vil levere 2D hardware acceleration oven på 3D -grafik backends. Firefox begyndte at bruge Azure i stedet for Kairo i 2012. Det er skrevet i C ++ og bruges af Servo . Azure -navnet er en ode til den tidlige Netscape -grundlægger James H. Clark og hans tidligere arbejde på Silicon Graphics, hvor arbejdsstationer ofte blev opkaldt efter farver.

Referencer

eksterne links