Google van de webbrowser . Tegelijkertijd stabiele release van een open source project , dat de basis vormt voor Chrome. De browser Chrome gebruik van Google-logo's, de mogelijkheid om de Flash-module op aanvraag te uploaden, een systeem voor het verzenden van meldingen in het geval van een crash, modules voor het afspelen van beveiligde videocontent, een systeem voor automatische updates en overdracht bij zoeken . De volgende versie van Chrome 75 is gepland voor 4 juni.
:
- Bij het onUnload-evenement, dat wordt geactiveerd bij het sluiten van de pagina, nu pop-ups te blokkeren (het aanroepen van window.open() wordt geblokkeerd), wat gebruikers beschermt tegen het geforceerd openen van reclamepagina's na het sluiten van verdachte websites;
- In de JavaScript-engine is er een nieuwe modus (vlag «—jitless»), die de mogelijkheid biedt om JavaScript uit te voeren zonder JIT (alleen de interpreter wordt gebruikt) en zonder uitvoerbare geheugentoewijzing tijdens het uitvoeren van code. Het uitschakelen van JIT kan nuttig zijn voor het verbeteren van de beveiliging bij het werken met potentieel gevaarlijke webapplicaties en voor het mogelijk maken van builds op platforms die het gebruik van JIT verbieden (bijvoorbeeld op iOS, sommige Smart TV's en spelconsoles). Bij het uitschakelen van JIT daalt de prestaties van JavaScript met 40% in de Speedometer 2.0-test en met 80% in de Web Tooling Benchmark-test, maar bij de simulatie van YouTube-werkzaamheden is alleen een prestatievermindering van 6% opgemerkt. Het geheugengebruik vermindert daarbij met slechts 1,7%;
- In V8 zijn ook tal van nieuwe optimalisaties aangebracht. Zo is het uitvoeren van functie-aanroepen waarbij het aantal daadwerkelijk doorgegeven parameters niet overeenkomt met het aantal argumenten dat bij het definiëren van de functie is opgegeven, met 60% versneld. De toegang tot DOM-eigenschappen via de get-functie is versneld, wat een positieve impact heeft gehad op de prestaties van het Angular-framework. De snelheid van JavaScript-parsing is verbeterd: de optimalisatie van de UTF-8-decoder heeft de prestaties van de parser in streamingmodus (parsing terwijl het laden plaatsvindt) met 8% verhoogd, en het verwijderen van onnodige deduplicatie bewerkingen bracht nog eens 10.5% winst;
- Er is gewerkt aan het verlagen van het geheugengebruik van de JavaScript-engine.
Er is code toegevoegd om de bytecode-cache te wissen, die ongeveer 15% van de totale heap-grootte in beslag neemt. Aan de garbage collector is een fase toegevoegd om zelden gecompileerde bytecode voor gebruikte functies of functies die alleen bij initialisatie worden aangeroepen uit de cache te verdrijven. De beslissing om op te schonen wordt genomen op basis van nieuwe tellers die de laatste tijd van toegang tot de bytecode in overweging nemen. De genoemde wijziging heeft het geheugenverbruik met 5–15% verminderd zonder negatieve invloed op de prestaties.
- Voor WebAssembly ondersteuning voor threads en atomaire operaties (API WebAssembly Threads en WebAssembly Atomics);
- Voor de afzonderlijke levering van scripts is ondersteuning voor de "#!"-header toegevoegd, die de interpreter voor uitvoering definieert. Bijvoorbeeld, vergelijkbaar met andere scripttalen, kan een JavaScript-bestand er ongeveer zo uitzien:
#!/usr/bin/env node
console.log(42); - In CSS is een nieuwe mediaquery "" toegevoegd, waarmee de website de status van systeeminstellingen kan bepalen die verband houden met het uitschakelen van geanimeerde effecten. Met de voorgestelde query kan de website-eigenaar weten dat de gebruiker geanimeerde effecten heeft uitgeschakeld en ook verschillende animatiemogelijkheden op de website uitschakelen, bijvoorbeeld de trillingseffecten van knoppen die worden gebruikt om de aandacht te trekken;
- Naast de in Chrome 72 beschikbare mogelijkheid om openbare velden te definiëren, het markeren van velden als privé, waardoor toegang tot hun waarden alleen binnen de klasse toegankelijk is. Om een veld als privé te markeren, moet het hashtag-symbool „#“ voor de naam van het veld worden geplaatst. Net als bij openbare velden vereisen privé-eigenschappen geen expliciet gebruik van de constructor.
- De HTTP-header Feature-Policy, die het mogelijk maakt om het gedrag van API's en het inschakelen van bepaalde mogelijkheden te beheren (bijvoorbeeld het inschakelen van de synchrone modus voor XMLHttpRequest of het uitschakelen van de Geolocation API), is aangevuld met voor het controleren van de activiteit van bepaalde mogelijkheden. Voor ontwikkelaars zijn er twee nieuwe methoden voorgesteld: document.featurePolicy en frame.featurePolicy, die drie functies aanbieden:
allowedFeatures() om een lijst van de voor het huidige domein toegestane functies te verkrijgen, allowsFeature() voor selectieve controle op het inschakelen van specifieke mogelijkheden en getAllowlistForFeature() voor het weergeven van een lijst van domeinen waarvoor de opgegeven functie op de huidige pagina is toegestaan; - Ondersteuning voor een experimentele (‘chrome://flags#enable-text-fragment-anchor’) modus is toegevoegd, , waarmee links naar afzonderlijke woorden of zinnen kunnen worden gemaakt, zonder expliciete aanwijzing in het document met behulp van de tag «a name» of de eigenschap «id». Voor het doorgeven van de link wordt een speciale parameter «#targetText=» voorgesteld, waarin je de tekst voor de overgang kunt opgeven. Het is toegestaan om een masker op te geven, inclusief zinnen die het begin en het einde van het fragment aangeven met behulp van een komma als scheidingsteken (bijvoorbeeld «example.com#targetText=startwords, endwords»);
- De AudioContext constructor heeft een optie toegevoegd, , waarmee de gewenste samplingfrequentie voor audiobewerkingen via de Web Audio API kan worden ingesteld;
- Ondersteuning voor de klasse , die methoden biedt voor het ontleden en verwerken van taal-, regio- en opmaakparameters die door de locale zijn ingesteld, evenals voor het lezen en schrijven van Unicode-uitbreidingslabels, en het opslaan van gebruikersinstellingen voor locales in een geserialiseerd formaat;
- Mechanisme (SXG) is uitgebreid met middelen voor contentdistributoren om fouten te rapporteren bij het laden van ondertekende content, zoals problemen met certificaatverificatie. Fouten worden behandeld via API-extensies . Ter herinnering, SXG maakt het mogelijk voor de eigenaar van één website om met behulp van een digitale handtekening het plaatsen van bepaalde pagina's op een andere website te autoriseren, waarna de browser de gebruiker de URL van de oorspronkelijke website toont, ongeacht of de pagina vanaf een andere host is geladen;
- De TextEncoder klasse heeft een methode toegevoegd, , waarmee een gecodeerde string direct in een vooraf toegewezen buffer kan worden geschreven. De encodeInto() methode is een hoogpresterende alternatieve methode voor encode(), die bufferallocatie vereist bij elke oproep.
- In de Service worker buffering van client.postMessage() tot het document gereed is. Berichten verzonden via client.postMessage() worden vastgehouden tot het moment dat het DOMContentLoaded-evenement wordt gegenereerd, de onmessage-instellingen zijn geconfigureerd of startMessages() wordt aangeroepen;
- Volgens de richtlijnen van de CSS Transitions-specificatie de evenementen transitionrun, transitioncancel, transitionstart en transitionend, die worden gegenereerd wanneer een CSS-overgang in de wachtrij wordt geplaatst, wordt geannuleerd, begint of eindigt.
- Bij het opgeven van een onjuiste MIME-type of tekenencodering via overrideMimeType() voor een XMLHttpRequest, wordt nu teruggevallen op UTF-8 in plaats van Latin-1;
- De eigenschap "allow-downloads-without-user-activation" is als verouderd aangemerkt en zal in een van de toekomstige versies worden verwijderd. Deze eigenschap maakte het mogelijk om automatische bestandsdownloads te initiëren bij het verwerken van iframes. In de toekomst zal het starten van bestandsdownloads zonder expliciete gebruikersactie worden verboden, omdat dit vaak werd misbruikt voor ongewenste downloads en het injecteren van delen van malware op de computer van de gebruiker. Voor het starten van een download is een klik van de gebruiker op dezelfde pagina verplicht. Oorspronkelijk was het de bedoeling om deze eigenschap in Chrome 74 te verwijderen, maar de verwijdering is uitgesteld tot Chrome 76.
- Voor het Windows-platform is een optionele donkere thema-interface aangeboden (in de vorige release was een donkere interface voorbereid voor macOS). Aangezien de donkere interface bijna identiek is aan het incognito-modusontwerp, is er in plaats van het gebruikersprofielpictogram een speciale indicator toegevoegd voor de privémodus;
- Voor zakelijke gebruikers is de mogelijkheid toegevoegd om de browserinstellingen van gebruikers te beheren via de Google Admin-console;
Naast de nieuwe functies en bugfixes zijn in de nieuwe versie . Veel kwetsbaarheden zijn ontdekt via geautomatiseerde tests met tools zoals , , , en . Er zijn geen kritieke problemen gevonden die in staat zijn om alle niveaus van browserbeveiliging te omzeilen en code buiten de sandbox-omgeving uit te voeren. In het kader van het beloningsprogramma voor het melden van kwetsbaarheden heeft Google voor deze release 19 beloningen uitbetaald ter waarde van 26.837 dollar (vier beloningen van $3000, vier van $2000, één van $1337, vier van $1000, drie van $500). De bedragen van 4 beloningen zijn nog niet vastgesteld.
Bron: opennet.ru

