Programovanie

Čo je nové v engine JavaScript V8 spoločnosti Google verzie 7

Teraz je k dispozícii beta verzia V8 verzie 7.4, ktorá má potenciál rozšíriť stopu motora na platformy ako Apple iOS. V8 je Google otvorený zdrojový kód JavaScript a modul WebAssembly pre prehliadač Chrome. Je základom v prehliadači Chrome aj v prostredí runtime Node.js JavaScript.

Kde stiahnuť Google V8

Produkčnú verziu aplikácie Google V8 si môžete stiahnuť z repozitára Chromium V8.

Budúca verzia: Čo je nové vo V8 verzie 7.4

S produkčnou verziou, ktorá má vyjsť v apríli 2019, má Google V8 beta 7.4 nasledujúce nové funkcie:

  • V8 bez JIT, v ktorom je podporované vykonávanie JavaScriptu bez pridelenia spustiteľnej pamäte za behu. To by mohlo umožniť rozšírenie V8 na platformy ako Apple iOS, inteligentné televízory a herné konzoly. Predvolená konfigurácia verzie V8 sa spoliehala na schopnosť alokovať a upravovať spustiteľnú pamäť za behu programu. Existujú ale situácie, kedy môže byť žiaduce spustiť motor bez pridelenia spustiteľnej pamäte, napríklad platformy, ktoré pre neprivilegované aplikácie vrátane iOS zakázali prístup na zápis do nespustiteľnej pamäte. Zakázanie zápisov do spustiteľnej pamäte tiež znižuje útočnú plochu aplikácie na zneužitie. V režime bez JIT sa V8 prepne do režimu iba pre tlmočníka pre jazyk JavaScript; WebAssembly momentálne nepodporuje tento režim. Režim bez JIT však prichádza s výkonnostným trestom.
  • Vlákna WebAssembly / Atomics sú teraz povolené v operačných systémoch iných ako Android. Tento krok odomkne použitie viacerých jadier prostredníctvom WebAssembly a umožní tak nové, na výpočty náročné použitie na webe.
  • Na zlepšenie výkonu verzia 7.4 v niektorých prípadoch preskočí prispôsobenie argumentov a zníži réžiu hovoru o 60 percent.
  • Vylepšil sa výkon volania do natívnych prístupových zariadení, ktoré sú prístupovými objektmi DOM.
  • Výkon prípravku sa zlepšil odstránením deduplikácie zahŕňajúcej názvy vlastností. Ďalej bol opravený problém s výkonom, ktorý zahŕňal vlastné dekódovanie UTF-8 používané zdrojovým prúdom.
  • Aby sa znížila réžia pamäte, bola implementovaná podpora pre vyprázdňovanie kompilovaného bytecode z funkcií počas zberu odpadu, ak sa nedávno nespustili.
  • Na podporu polí súkromnej triedy môžu vývojári označiť pole ako súkromné ​​tak, že ho predponou # predpona.

Kam stiahnuť verziu V8 7.4 beta

Verziu V8 beta si môžete stiahnuť z úložiska Chromium Git spoločnosti Google.

Aktuálna verzia: Čo je nové vo V8 verzie 7.3

Medzi nové funkcie verzie V8 7.3 patria:

  • The --async-stack-traces vlajka je predvolene zapnutá.
  • Stopy asynchrónneho zásobníka s nulovými nákladmi uľahčujú diagnostiku problémov vo výrobe pomocou asynchrónneho kódu; the stoh vlastnosť zvyčajne odosielaná do protokolových súborov a služieb teraz poskytuje viac informácií o problémoch.
  • Rýchlejší čakať, s --harmónia-čakať-optimalizácia vlajka je predvolene zapnutá. Toto je predpoklad pre --async-stack-traces.
  • Rýchlejšie spustenie pre WebAssembly prostredníctvom optimalizácií. Pre väčšinu pracovných zaťažení je kompilácia vylepšená o 15 percent na 25 percent.
  • Funkcie JavaScriptu ako napr fromEntries (), API na vykonávanie inverznej činnosti k Object.entriesaReťazec. Prototyp. Matchall, API, ktoré uľahčuje aplikáciu globálnych alebo lepivých regulárnych výrazov na reťazec a iteráciu cez všetky zhody.

Aktuálna verzia: Čo je nové v Google V8 verzie 7.2

Verzia 7.2 z V8 z januára 2019 vylepšuje syntaktickú analýzu JavaScriptu, binárny formát WebAssembly a pamäť.

Aby sa zlepšila rýchlosť analýzy, verzia V8 verzie 7.2 obsahuje to, čo Google nazýva najrýchlejším analyzátorom JavaScriptu v stroji, čo má za následok rýchlejšie načítanie stránok a rýchlejšie reagujúce stránky. Od verzie V8 verzie 7.0 sa rýchlosť analýzy desktopu zlepšila asi o 30 percent, tvrdí Google.

V prípade pamäte sú teraz integrované vstavané moduly, ktoré šetria pamäť zdieľaním generovaného kódu na viacerých izolátoch, v architektúre IA32 predvolene podporované a povolené.

Pre WebAssembly má V8 7.2 vylepšenia generovania kódu, vrátane umožnenia delenia uzlov v plánovači optimalizácie kompilátora a rotácie slučiek v koncovom rozhraní. Vylepšilo sa tiež ukladanie do medzipamäte obálky a boli zavedené vlastné obálky, ktoré znižujú réžiu pri volaní importovaných matematických funkcií JavaScriptu.

Dizajnové zmeny prideľovača registrov zlepšujú výkonnosť kódových vzorov, ktoré sa objavia v neskoršom vydaní. Obslužné rutiny pascí vo verzii 7.2 tiež zlepšujú priepustnosť kódu WebAssembly. Sú implementované v systémoch Windows, MacOS a Linux. V prehliadači Chromium sú povolené v systémoch Linux, pričom pri potvrdení stability ich budú nasledovať systémy MacOs a Windows. Plány tiež požadujú, aby boli dostupné pre Android.

Medzi ďalšie nové funkcie verzie V8 7.2 patria:

  • Výkon prvkov šírenia sa zlepšil, keď sa vyskytli na začiatku literálu poľa.
  • Rýchlejší async/čakať implementácia je predvolene povolená. Zmena môže byť zlúčená do oficiálnej špecifikácie ECMAScript.
  • Stopy asynchronného zásobníka s nulovým pobrežím obohacujú stoh vlastnosť s rámcami asynchrónneho volania. Táto funkcia je k dispozícii za --async-stack-traces príznak príkazového riadku.
  • Podpora polí verejnej triedy, ktorá kvôli zjednodušeniu rozširuje syntax jazyka JavaScript.
  • The ListFormat návrh na lokalizáciu formátovania zoznamov.
  • sprísniť teraz vydáva únikové sekvencie pre náhradné osamelosti, vďaka čomu je výstup platný Unicode.

Predchádzajúca verzia: Čo je nové v Google V8 verzie 7.1

Verzia 7.1 verzie V8 z novembra 2018 obsahuje vylepšenia pamäte a výkonu spolu s vylepšeniami pre JavaScript a binárny formát WebAssembly. V prípade pamäte sú teraz bajtové kódy tlmočníka vložené do binárneho kódu, čím sa na izolát ušetrí priemerne asi 200 kB. Aby sa zlepšil výkon, je úniková analýza v kompilátore TurboFan vylepšená tak, aby spracovala kontexty miestnych funkcií pre funkcie vyššieho rádu, keď premenné z okolitého kontextu uniknú do lokálneho uzavretia. S únikovou analýzou sa skalárna náhrada vykonáva pre objekty miestne k optimalizačnej jednotke.

Ďalšie nové funkcie verzie V8 verzie 7.1:

  • Pre skript jazyka JavaScript RelativeTimeformat Rozhranie API, ktoré je súčasťou inovácie, umožňuje lokalizované formátovanie relatívnych časov, napríklad „včera“, bez toho, aby sa obetoval výkon. Verzia 7.1 tiež podporuje GlobalThis návrh, ktorý poskytuje univerzálny mechanizmus na prístup k globálnemu objektu aj v prísnych funkciách alebo moduloch bez ohľadu na platformu.
  • Pre formát bytecode kódu WebAssembly postMessage je podporovaná pre moduly. Toto správanie je určené pre pracovníkov na webe a nerozširuje sa na scenáre krížového procesu.

Predchádzajúca verzia: Čo je nové v Google V8 verzie 7.0

Október 2018, verzia V8, verzia 7.0, zobrazuje ukážky vlákien WebAssembly, ktoré poskytujú primitív pre paralelné výpočty. Ak chcete používať vlákna v prehliadači Chrome, ktorý používa verziu V8, vývojári to môžu povoliť prostredníctvom chrome: // flags / # enable-webassembly-threads alebo sa zaregistrujte na skúšobnú verziu Origin a experimentujte s novými webovými funkciami. WebAssembly, alias Wasm, umožňuje kompiláciu kódu napísaného v rôznych jazykoch, ktorý sa dá spustiť na webe.

Medzi ďalšie nové funkcie verzie V8 7.0 patria:

  • Pre skript jazyka JavaScript popis vlastnosť je pridaná do prototyp, ktorá poskytuje ergonomickejší spôsob prístupu k popisu. Tiež Pole.prototyp.sort vo verzii 7.0 sa stáva stabilnou.
  • Rozšírenie zabudovaných vstavaných jednotiek, ktoré šetria pamäť zdieľaním generovaného kódu na viacerých izolátoch. V8 verzia 6.9 umožňovala zabudovanie do architektúry X64, zatiaľ čo verzia 7.0 ich rozširuje na zvyšné platformy okrem IA-32.

Predchádzajúca verzia: Čo je nové v Google V8 verzie 6.9

Verzia 6.9, verzia 8.9, september 2018, sa zameriava na vylepšenia pamäte a výkonu pre JavaScriptový engine spoločnosti Google.

Z dôvodu úspory pamäte ponúka verzia 6.9 zabudované vstavané prvky pre počítače s procesorom x64. Jedná sa o funkcie zdieľané všetkými izolátmi a vložené do samotného binárneho súboru namiesto toho, aby sa skopírovali na haldu JavaScriptu, takže v pamäti existujú iba raz bez ohľadu na počet spustených izolátov. Dizajnéri modelu V8 zaznamenali priemerne 9-percentné zníženie veľkosti haldy na 10 000 najlepších weboch na počítačoch x64. Podpora ďalších platforiem bude nasledovať v ďalších vydaniach.

Pre vyššiu výkonnosť verzia V8 verzie 6.9 skracuje doby pozastavenia zberu odpadu Mark-Compact vylepšením WeakMap spracovanie. Súčasné a prírastkové značenie je teraz možné spracovať WeakMaps. Predtým sa táto práca robila v poslednej atómovej pauze zberu odpadu Mark-Compact. Zber odpadu teraz tiež viac pracuje paralelne s kratšími časmi pozastavenia.

Pre výkon DataView metódy boli znovu implementované v krútiacom momente V8, čo šetrí nákladné volanie do C ++ v porovnaní s predchádzajúcou implementáciou za behu. Tiež hovory na DataView metódy sú teraz vložené pri kompilácii JavaScriptu do kompilátora optimalizujúceho TurboFan. Toto poskytuje lepší špičkový výkon pre hot code.

V8 verzia 6.9 tiež obsahuje Liftoff, základný kompilátor pre formát prenosného kódu WebAssembly. Je predvolene povolený a má za cieľ znížiť časy spustenia aplikácií založených na WebAssembly generovaním kódu čo najrýchlejšie. Kvalita samotného kódu je pre Liftoff druhoradou prioritou, pričom kód bude nakoniec znovu kompilovaný kompilátorom V8 TurboFan.

Program Liftoff bol vyvinutý s cieľom vyriešiť problém, pri ktorom zadný koniec procesu kompilácie pre TurboFan spotreboval veľa času a pamäte, čo znížilo výkon kódu WebAssembly. Liftoff sa vyhýba časovej a pamäťovej réžii sprostredkovaného znázornenia a generuje strojový kód jediným prechodom cez bajtový kód funkcie WebAssembly. Liftoff a Turbofan poskytujú V8 dve úrovne kompilácie, pričom Liftoff je základným kompilátorom pre rýchle spustenie a TurboFan poskytuje optimalizáciu výkonu.

Google tiež plánuje ďalšie zlepšenie času pri spustení, zníženie spotreby pamäte a prinesenie výhod programu Liftoff ďalším používateľom. Tieto plány zahŕňajú porty procesorov ARM na použitie v mobilných zariadeniach. Liftoff v súčasnosti funguje iba na 32- a 64-bitových platformách Intel. Medzi ďalšie zvažované vylepšenia patria:

  • Implementácia dynamického zvyšovania úrovne pre mobilné zariadenia s cieľom prispôsobiť sa menšiemu objemu pamäte na týchto zariadeniach. Experimenty pokračujú kombináciou lenivej kompilácie s programom Liftoff a dynamickým zvyšovaním úrovne horúcich funkcií v TurboFan.
  • Zlepšenie výkonu generovania kódu Liftoff a tiež zlepšenie generovaného kódu.

Predchádzajúca verzia: Čo je nové vo V8 verzie 6.8

Google V8 verzia 6.8, uvedená na trh v júli 2018, sa zameriava na výkon a využitie pamäte.

Výkon bol vylepšený vylepšeniami, ktoré ničia pole. Optimalizačný kompilátor negeneroval ideálny kód na deštrukciu poľa, takže vývojári verzie V8 zablokovali únikovú analýzu, aby eliminovali dočasné pridelenie, vďaka čomu bolo deštrukčné pole s dočasným poľom rovnako rýchle ako postupnosť priradení.

Nová implementácia Object.assign zvyšuje výkon implementáciou rýchlej cesty pre JavaScript.

Výkon pre TypedArrays sa zvýšil v prípadoch, keď sa triedenie vykonáva pomocou porovnávacej funkcie.

Medzi ďalšie nové funkcie verzie V8 verzie 6.8 patria:

  • Na zlepšenie rýchlosti vykonávania pomocou prenosného formátu kódu WebAssembly môžu vývojári na platformách Linux x64 používať kontrolu hraníc založenú na pasciach, optimalizáciu správy pamäte.
  • Spotreba pamäte SFI (SharedFunctionInfo) bola znížená kompresiou a odstránením nepotrebných polí.
  • Z dôvodu zlepšenia pamäťových schopností bola tiež narušená závislosť na SFI, v ktorej boli zbytočne udržiavané SFI, čo viedlo k riziku úniku pamäte.

Predchádzajúca verzia: Čo je nové vo V8 verzie 6.7

V8 JavaScriptengine od spoločnosti Google získava vylepšenia jazykových funkcií a zabezpečenia pomocou vetvy verzie 6.7, ktorá je teraz v produkčnom vydaní.

Motor V8 6.7 má BigInt podpora povolená v predvolenom nastavení. Očakávané v budúcej verzii ECMAScript,BigInts slúžia ako numerický primitív v JavaScripte, ktorý predstavuje celé čísla s ľubovoľnou presnosťou. S BigInt, je možné vykonať celočíselnú aritmetiku bez pretečenia. BigInt by mohlo slúžiť ako základ prípadu BigDecimal implementácia, užitočná na reprezentáciu súm peňazí s desatinnou presnosťou.

Vo verzii V8 6.7 je tiež predstavených viac zmiernení zraniteľností bočného kanála, ktorých cieľom je zabrániť úniku informácií do nedôveryhodného kódu pre JavaScript a WebAssembly.

Predchádzajúca verzia: Čo je nové vo V8 verzie 6.6

Verzia 6.6 enginu JavaScript V8 spoločnosti Google sa zameriava na funkcie jazyka JavaScript a možnosti ukladania kódu do medzipamäte.

Pre JavaScript, Function.prototype.toString () vráti presné časti textu zdrojového kódu vrátane medzier a komentárov. Implementuje sa aj verzia V6 6.6 String.prototype.trimStart () a String.prototype.trimEnd (). Táto schopnosť bola k dispozícii prostredníctvom neštandardných riešení trimLeft () a trimRight () metódy, ktoré zostávajú ako aliasy nových metód umožňujúcich spätnú kompatibilitu.

V reťazcových literáloch možno navyše použiť symboly na oddeľovanie riadkov a odsekov, čím sa zhoduje s JSON. Predtým sa s nimi zaobchádzalo ako s ukončovačmi riadkov v reťazcových literáloch a ich použitie malo za následok výnimku SyntaxError.

The Polia.prototyp.hodnoty metóda poskytuje poliam rovnaké iteračné rozhranie ako ECMAScript 2015 Mapa a Nastaviť zbierky. Môžu byť vzájomne ovplyvňované kľúče,hodnotyalebo záznamy volaním metódy s rovnakým názvom. Táto zmena môže byť nekompatibilná s existujúcim kódom JavaScript; vývojári, ktorí nájdu na webe zvláštne alebo nefunkčné správanie, sa môžu pokúsiť túto funkciu deaktivovať pomocou aplikácie chrome: // flags / # enable-array-prototype-values.

$config[zx-auto] not found$config[zx-overlay] not found