Chrome 74-versie

Google gepresenteerd release van de webbrowser Chrome 74. Tegelijkertijd is beschikbaar stabiele release van een gratis project Chromium, dat dient als basis van Chrome. Chrome-browser verschillend het gebruik van Google-logo's, de mogelijkheid om op verzoek een Flash-module te downloaden, de aanwezigheid van een systeem voor het verzenden van meldingen bij een crash, modules voor het afspelen van beveiligde video-inhoud, een systeem voor het automatisch installeren van updates en verzending tijdens het zoeken RLZ-parameters. De volgende release van Chrome 75 staat gepland voor 4 juni.

De belangrijkste veranderingen в Chrome 74:

  • Wanneer de onUnload-gebeurtenis plaatsvindt, die wordt aangeroepen wanneer de pagina wordt gesloten, nu Het is verboden pop-upvensters weergeven (de aanroep window.open() is geblokkeerd), waardoor gebruikers worden beschermd tegen het gedwongen openen van advertentiepagina's na het sluiten van dubieuze sites;
  • In de JavaScript-engine geïmplementeerd er is een nieuw regime verschenen JIT-minder (“—jitless” flag), wat het mogelijk maakt om JavaScript uit te voeren zonder gebruik te maken van JIT (alleen de tolk wordt gebruikt) en zonder uitvoerbaar geheugen toe te wijzen tijdens het uitvoeren van de code. Het uitschakelen van JIT kan nuttig zijn om de beveiliging te verbeteren bij het werken met potentieel gevaarlijke webapplicaties, en om te zorgen voor builds op platforms die het gebruik van JIT verbieden (bijvoorbeeld iOS, sommige smart-tv's en gameconsoles). Wanneer JIT is uitgeschakeld, wordt JavaScript uitgevoerd de prestaties nemen af ​​met 40% in de Speedometer 2.0-test en 80% in de Web Tooling Benchmark-test, maar bij het simuleren van werk met YouTube was er slechts een prestatievermindering van 6%, terwijl het geheugenverbruik licht daalde, met slechts 1.7%;
  • V8 biedt ook een groot deel aan nieuwe optimalisaties. De uitvoering van functieaanroepen waarbij het aantal daadwerkelijk doorgegeven parameters niet overeenkomt met het aantal argumenten dat is opgegeven bij het definiëren van de functie, is bijvoorbeeld met 60% versneld. De toegang tot DOM-eigenschappen met behulp van de get-functie is versneld, wat een positieve invloed heeft op de prestaties van het Angular-framework. Het parseren van JavaScript is versneld: optimalisatie van de UTF-8-decoder maakte het mogelijk om de parserprestaties in streamingmodus (parseren tijdens het laden) met 8% te verhogen, en het elimineren van onnodige deduplicatiebewerkingen leverde een stijging op van nog eens 10.5%;
  • Er is gewerkt aan het verminderen van het geheugengebruik van de JavaScript-engine.
    Er is code toegevoegd om de bytecode-cache te wissen, die ongeveer 15% van de totale heapgrootte in beslag neemt. Er is een fase toegevoegd aan de garbage collector om niet vaak gecompileerde bytecode uit de cache te verwijderen voor functies die worden gebruikt of functies die alleen worden aangeroepen bij initialisatie. De beslissing om op te ruimen wordt genomen op basis van nieuwe tellers die rekening houden met de laatste keer dat de bytecode werd geopend. Deze wijziging verminderde het geheugenverbruik met 5-15% zonder de prestaties negatief te beïnvloeden. Bovendien sluit de bytecode-compiler het genereren uit van duidelijk ongebruikte code, bijvoorbeeld na return of break (als er geen Jump-overgang naar is);

    Chrome 74-versie

  • Voor WebAssembly geïmplementeerd ondersteuning voor threads en atomaire bewerkingen (API WebAssembly Threads en WebAssembly Atomics);
  • Voor afzonderlijke levering van scripts is ondersteuning voor de header “#!” toegevoegd, die bepaalt welke tolk moet worden uitgevoerd. Net als bij andere scripttalen kan een JavaScript-bestand er bijvoorbeeld ongeveer zo uitzien:

    #!/usr/bin/env knooppunt
    console.log(42);

  • Er is een nieuwe mediaquery toegevoegd aan CSS "geeft de voorkeur aan verminderde beweging“, waardoor de site de status van de instellingen in het besturingssysteem kan bepalen met betrekking tot het uitschakelen van geanimeerde effecten. Met behulp van het voorgestelde verzoek, de site-eigenaar kan ontdekken dat de gebruiker geanimeerde effecten heeft uitgeschakeld en ook verschillende animatiefuncties op de site heeft uitgeschakeld, bijvoorbeeld het schudeffect verwijderen van knoppen die worden gebruikt om de aandacht te trekken;
  • Naast de mogelijkheid om openbare velden te definiëren die zijn geïntroduceerd in Chrome 72 ondersteuning geïmplementeerd Velden als privé markeren, waarna toegang tot hun waarden alleen binnen de klasse open is. Om een ​​veld als privé te markeren, voegt u een “#”-teken toe vóór de veldnaam. Net als bij openbare velden vereisen privé-eigendommen niet het expliciete gebruik van een constructor.
  • De Feature-Policy HTTP-header, waarmee u het gedrag van de API kunt controleren en bepaalde functies kunt inschakelen (u kunt bijvoorbeeld de synchrone werkingsmodus van XMLHttpRequest inschakelen of de Geolocation API uitschakelen) is toegevoegd JavaScript API om de activiteit van bepaalde opportunities te controleren. Voor ontwikkelaars zijn er twee nieuwe methoden document.featurePolicy en frame.featurePolicy, die drie functies bieden:
    allowFeatures() om een ​​lijst met functies op te halen die zijn toegestaan ​​voor het huidige domein, allowFeature() om selectief te controleren of specifieke functies zijn ingeschakeld, en getAllowlistForFeature() om een ​​lijst met domeinen terug te geven waarvoor een gespecificeerde functie is toegestaan ​​op de huidige pagina;

  • Experimentele (“chrome://flags#enable-text-fragment-anchor”) ondersteuning voor de modus toegevoegd Scroll-naar-tekst, waarmee u koppelingen naar afzonderlijke woorden of woordgroepen kunt vormen, zonder expliciet labels in het document op te geven met behulp van de tag 'a name' of de eigenschap 'id'. Om een ​​link te versturen wordt een speciale parameter “#targetText=” aangeboden, waarin je de tekst voor de transitie kunt specificeren. Het is toegestaan ​​om een ​​masker te specificeren dat zinnen bevat die het begin en het einde van het fragment aangeven, met gebruik van een komma als scheidingsteken (bijvoorbeeld “example.com#targetText=start%20words, end%20words”);
  • Er is een optie toegevoegd aan de AudioContext-constructor monsterRate, waarmee u de bemonsteringsfrequentie voor audiobewerkingen kunt instellen via de Web Audio API;
  • Klassenondersteuning toegevoegd Internationale landinstelling, dat methoden biedt voor het parseren en verwerken van taal-, regio- en stijlparameters die zijn ingesteld door de landinstelling, en voor het lezen en schrijven van Unicode-extensietags, waarbij de landinstellingen van de gebruiker worden opgeslagen in een geserialiseerd formaat;
  • mechanisme Ondertekende HTTP-uitwisselingen (SXG) uitgebreid met tools voor informeren inhouddistributeurs over fouten bij het downloaden van ondertekende inhoud, zoals problemen met certificaatverificatie. Foutafhandeling gebeurt via API-extensies Netwerkfoutregistratie. Denk aan die SXG laat de eigenaar van de ene site geeft met behulp van een digitale handtekening toestemming voor het plaatsen van bepaalde pagina's op een andere site, waarna, als deze pagina's op een tweede site worden bezocht, de browser de gebruiker de URL van de oorspronkelijke site zal tonen, ondanks het feit dat de pagina vanaf een andere host is geladen;
  • Er is een methode toegevoegd aan de klasse TextEncoder coderenIn(), waarmee u een gecodeerde tekenreeks rechtstreeks naar een vooraf toegewezen buffer kunt schrijven. De methode encodeInto() is een krachtig alternatief voor de methode encode(), waarbij elke keer dat er toegang toe wordt verkregen, een buffertoewijzingsbewerking moet worden uitgevoerd.
  • In dienst medewerker beveiligd het bufferen van de client.postMessage()-aanroep totdat het document gereed is. Berichten verzonden via client.postMessage() worden vastgehouden totdat de DOMContentLoaded-gebeurtenis wordt gegenereerd, onmessage wordt ingesteld of startMessages() wordt aangeroepen;
  • Zoals vereist door de CSS Transitions-specificatie toegevoegd transitionrun-, transitioncancel-, transitionstart- en transitionend-gebeurtenissen die worden gegenereerd wanneer een CSS-overgang in de wachtrij wordt geplaatst, wordt geannuleerd, wordt gestart of wordt uitgevoerd.
  • Bij het opgeven van een onjuiste tekencodering via overrideMimeType() of MIME-type voor een XMLHttpRequest, valt deze nu terug op UTF-8 in plaats van Latin-1;
  • De eigenschap ‘allow-downloads-without-user-activation’, waarmee het mogelijk was om automatisch bestanden te downloaden bij het verwerken van iframes, is verouderd en zal in een toekomstige release worden verwijderd. In de toekomst zal het downloaden van bestanden zonder expliciete actie van de gebruiker verboden zijn, omdat dit actief wordt gebruikt voor misbruik, het forceren van downloads en het plaatsen van delen van malware op de computer van de gebruiker. Er is een gebruiker nodig die op dezelfde pagina klikt om de download te starten. Het was oorspronkelijk de bedoeling dat de property in Chrome 74 zou worden verwijderd, maar de verwijdering gebeurde uitgesteld tot Chroom 76.
  • Voor het Windows-platform wordt een optioneel donker thema voor het interface-ontwerp aangeboden (in de vorige release was een donker thema voorbereid voor macOS). Omdat het donkere ontwerp vrijwel identiek is aan het ontwerp in de incognitomodus, is er in plaats van het gebruikersprofielpictogram een ​​speciale indicator toegevoegd om de privémodus te markeren;
  • Er is een mogelijkheid toegevoegd voor zakelijke gebruikers Chrome-browser cloudbeheer om de browserinstellingen van gebruikers te beheren via de Google-beheerdersconsole;

    Chrome 74-versie

Naast innovaties en bugfixes elimineert de nieuwe versie 39 kwetsbaarheden. Veel van de kwetsbaarheden zijn geïdentificeerd als resultaat van geautomatiseerd testen met tools AdresSanitizer, Geheugenontsmettingsmiddel, Integriteit van controlestroom, LibFuzzer и AFL. Er zijn geen kritieke problemen geïdentificeerd die het mogelijk zouden maken om alle niveaus van browserbeveiliging te omzeilen en code op het systeem uit te voeren buiten de sandbox-omgeving. Als onderdeel van het programma om contante beloningen te betalen voor het ontdekken van kwetsbaarheden voor de huidige release, heeft Google 19 beloningen uitgekeerd ter waarde van $ 26837 (vier beloningen van $ 3000, vier beloningen van $ 2000, één beloning van $ 1337, vier beloningen van $ 1000, drie beloningen van $ 500). De omvang van de 4 beloningen is nog niet bepaald.

Bron: opennet.ru

Voeg een reactie