Programmēšana

Kas jauns Google V8 JavaScript dzinēja 7. versijā

Tagad ir pieejama beta V8 versija 7.4, kas var paplašināt dzinēja nospiedumu uz tādām platformām kā Apple iOS. V8 ir Google atvērtā koda JavaScript un WebAssembly dzinējs pārlūkam Chrome. Tas ir gan Chrome pārlūka, gan Node.js JavaScript izpildlaika elements.

Kur lejupielādēt Google V8

Google V8 produkcijas versiju varat lejupielādēt no Chromium V8 repo.

Nākamā versija: kas jauns V8 versijā 7.4

Sākot ar produkcijas versiju 2019. gada aprīlī, Google V8 beta 7.4 versijā ir šādas jaunas funkcijas:

  • JIT-less V8, kurā tiek atbalstīta JavaScript izpilde, izpildes laikā nepiešķirot izpildāmo atmiņu. Tas varētu ļaut V8 paplašināt tādās platformās kā Apple iOS, viedie televizori un spēļu konsoles. V8 noklusējuma konfigurācija ir balstīta uz spēju izpildes laikā piešķirt un modificēt izpildāmo atmiņu. Bet ir situācijas, kad var būt vēlams darbināt motoru, nepiešķirot izpildāmo atmiņu, piemēram, platformas, kas ir aizliegušas rakstīšanas piekļuvi neizpildāmai atmiņai priviliģētām lietojumprogrammām, tostarp iOS. Arī neatļaušana ierakstīt izpildāmā atmiņā samazina lietojumprogrammas uzbrukuma virsmu. Izmantojot režīmu bez JIT, V8 pārslēdzas tikai uz tulku režīmu JavaScript; WebAssembly pašlaik neatbalsta šo režīmu. Tomēr bez JIT režīma tiek piemērots izpildes sods.
  • WebAss Assembly pavedieni / Atomics tagad ir iespējoti OS, kas nav Android operētājsistēmas. Šis solis ļauj vairākiem kodoliem izmantot WebAssembly, ļaujot tīmeklī izmantot jaunus, ar skaitļošanu saistītus lietojumus.
  • Lai uzlabotu veiktspēju, 7.4 versija dažos gadījumos izlaiž argumentu pielāgošanu, samazinot zvana pieskaitāmās izmaksas par 60 procentiem.
  • Veiktspēja ir uzlabota, lai izsauktu vietējos piekļūtājus, kas ir DOM piekļuves sniedzēji.
  • Iepriekšēja veiktspēja tika uzlabota, noņemot deduplikāciju, kas saistīta ar īpašumu nosaukumiem. Turklāt tika novērsta veiktspējas problēma, kas saistīta ar pielāgotu UTF-8 dekodēšanu, ko izmanto avota straume.
  • Lai samazinātu atmiņas pieskaitāmo vērtību, ir ieviests atbalsts kompilēto baitkodu izskalošanai no funkcijām atkritumu savākšanas laikā, ja tās nesen nav izpildītas.
  • Lai atbalstītu privātklases laukus, izstrādātāji var atzīmēt lauku kā privātu, iepriekš to sagatavojot ar # priedēklis.

Kur lejupielādēt V8 7.4 beta versiju

V8 beta versiju varat lejupielādēt no Google Chromium Git repo.

Pašreizējā versija: kas jauns V8 versijā 7.3

Jaunas funkcijas V8 7.3 ietver:

  • The --async-stack-traces karogs ir ieslēgts pēc noklusējuma.
  • Nulles asinhronās kaudzes pēdas ļauj vieglāk diagnosticēt ražošanas problēmas ar asinhrono kodu; kaudze īpašums, kas parasti tiek nosūtīts žurnālfailiem un pakalpojumiem, tagad sniedz lielāku ieskatu par problēmām.
  • Ātrāk gaidi, Ar --harmony-wait-optimization karogs ir ieslēgts pēc noklusējuma. Tas ir priekšnoteikums --async-stack-traces.
  • Ātrāka WebAssemble startēšana, izmantojot optimizācijas. Lielākajai daļai slodžu apkopošana tiek uzlabota par 15 procentiem līdz 25 procentiem.
  • Tādas JavaScript funkcijas kā fromEntries (), API, lai veiktu apgriezto Object.entries, unString.prototips.Matchall, API, lai atvieglotu globālo vai lipīgo regulāro izteiksmju lietošanu virknei un visu iterāciju.

Pašreizējā versija: kas jauns Google V8 versijā 7.2

2019. gada janvāra V8 versija 7.2 uzlabo JavaScript parsēšanu, WebAssembly bināro formātu un atmiņu.

Lai uzlabotu parsēšanas ātrumu, V8 versijā 7.2 ir iekļauts tas, ko Google dēvē par dzinēja visu laiku ātrāko JavaScript parsētāju, kā rezultātā lapas tiek ātrāk ielādētas un lapas ir atsaucīgākas. Kopš V8 versijas 7.0 darbvirsmas parsēšanas ātrums ir uzlabojies par aptuveni 30 procentiem, norāda Google.

Atmiņā iegultās iebūvētās ierīces, kas ietaupa atmiņu, koplietojot ģenerēto kodu vairākos izolātos, pēc noklusējuma IA32 arhitektūrā tiek atbalstītas un iespējotas.

WebAssembly versijā V8 7.2 ir koda ģenerēšanas uzlabojumi, tostarp mezglu sadalīšanas iespējošana kompilatora optimizētāja plānotājā un cilpu pagriešana aizmugurē. Ir uzlabota arī iesaiņojuma kešatmiņa un ieviesti pielāgoti iesaiņotāji, lai samazinātu pieskaitāmās izmaksas, izsaucot importētās JavaScript matemātikas funkcijas.

Reģistra sadalītāja noformējuma izmaiņas uzlabo veiktspēju koda modeļiem, kas parādīsies vēlāk. Arī slazdu apstrādātāji 7.2 versijā uzlabo WebAssembly koda caurlaidspēju. Tie tiek ieviesti operētājsistēmās Windows, MacOS un Linux. Pārlūkprogrammā Chromium tie ir iespējoti operētājsistēmā Linux, un MacOS un Windows seko, kad tiek apstiprināta stabilitāte. Plāni arī prasa, lai tie būtu pieejami Android.

Citas jaunās V8 7.2 funkcijas ietver:

  • Izkliedēto elementu veiktspēja ir uzlabojusies, ja tie notiek masīva burtnīcas priekšā.
  • Ātrāk asinhronais/gaidi ieviešana ir iespējota pēc noklusējuma. Izmaiņas var apvienot oficiālajā ECMAScript specifikācijā.
  • Nulles krasta asinhrono kaudzes pēdas bagātina kaudze rekvizīts ar asinhroniem zvanu rāmjiem. Šī iespēja ir pieejama aiz --async-stack-traces komandrindas karogs.
  • Atbalsts publiskās klases laukiem, kas paplašina JavaScript sintaksi vienkāršošanai.
  • The ListFormat priekšlikumu sarakstu formatēšanas lokalizēšanai.
  • stingrināt tagad izvada aizbēgšanas secības vientuļiem aizstājējiem, padarot izvadi derīgu Unicode.

Iepriekšējā versija: kas jauns Google V8 versijā 7.1

2018. gada novembra V8 versijā 7.1 ir uzlaboti atmiņa un veiktspēja, kā arī uzlabojumi gan JavaScript, gan WebAssembly binārā formātā. Atmiņai tulka baitkodi tagad ir iestrādāti binārā formātā, vidēji ietaupot aptuveni 200 KB vienā izolātā. Lai uzlabotu veiktspēju, TurboFan kompilatorā ir uzlabota aizbēgšanas analīze, lai apstrādātu vietējo funkciju kontekstus augstākas pakāpes funkcijām, kad mainīgie no apkārtējā konteksta nonāk vietējā slēgumā. Izmantojot evakuācijas analīzi, skalāri tiek aizstāti objekti, kas lokalizēti optimizācijas vienībai.

Citas jaunās funkcijas V8 versijā 7.1:

  • JavaScript RelativeTimeformat Jauninājumā piedāvātā API ļauj lokalizēt relatīvo laiku, piemēram, “vakars”, formatēšanu, nezaudējot veiktspēju. Arī 7.1 versija atbalsta GlobalThis priekšlikumu, nodrošinot universālu mehānismu, lai piekļūtu globālajam objektam pat stingrās funkcijās vai moduļos, neatkarīgi no platformas.
  • WebAssembly baitkoda formātam postMessage tiek atbalstīts moduļiem. Šī darbība attiecas uz tīmekļa darbiniekiem un netiek attiecināta uz starpprocesu scenārijiem.

Iepriekšējā versija: kas jauns Google V8 versijā 7.0

2018. gada oktobra V8 versijas 7.0 priekšskatījumi ir WebAssembly pavedieni, kas nodrošina primitīvu paralēlu aprēķinu. Lai izmantotu pavedienus pārlūkā Chrome, kurā tiek izmantots V8, izstrādātāji to var iespējot, izmantojot chrome: // flags / # enable-webassembly-threads vai reģistrējieties izcelsmes izmēģinājumam, lai eksperimentētu ar jaunām tīmekļa funkcijām. WebAssembly, pazīstams arī kā Wasm, ļauj apkopot dažādās valodās rakstītu kodu, lai tos palaistu tīmeklī.

Citas jaunās V8 7.0 funkcijas ietver:

  • JavaScript, apraksts īpašums tiek pievienots prototips, nodrošinot ergonomiskāku pieeju aprakstam. Arī Masīvs.prototips.kārtot kļūst stabila versijā 7.0.
  • Iegulto iebūvēto paplašināšana, kas ietaupa atmiņu, koplietojot ģenerēto kodu vairākos izolātos. V8 6.9 versija iespējoja iebūvētos objektus X64 arhitektūrā, savukārt 7.0 versija tos paplašina uz pārējām platformām, izņemot IA-32.

Iepriekšējā versija: kas jauns Google V8 6.9 versijā

2018. gada septembra V8 versija 6.9 koncentrējas uz atmiņas un veiktspējas uzlabojumiem Google JavaScript motoram.

Lai ietaupītu atmiņu, 6.9 versija piedāvā iegultus iebūvētus datorus, kuru pamatā ir x64. Tās ir visu izolātu koplietotās funkcijas, kas tiek iestrādātas pašā binārā failā, nevis tiek kopētas JavaScript kaudzē, tādējādi atmiņā ir tikai vienu reizi, neatkarīgi no tā, cik daudz izolātu darbojas. V8 dizaineri ir redzējuši kaudzes lieluma samazināšanos vidēji par 9 procentiem 10 000 populārākajās vietnēs x64 datoros. Atbalsts citām platformām sekos vēlākos izlaidumos.

Veiktspējas uzlabošanai V8 6.9 versija samazina Mark-Compact atkritumu savākšanas pauzes laiku Vāja karte apstrāde. Vienlaicīgu un pakāpenisku marķēšanu tagad var apstrādāt WeakMaps. Iepriekš šis darbs tika veikts Mark-Compact atkritumu savākšanas pēdējā atoma pauzē. Arī atkritumu savākšana paralēli zemākiem pauzes laikiem tagad strādā vairāk.

Par sniegumu DataView metodes ir atkārtoti ieviestas V8 griezes momentā, ietaupot dārgu zvanu uz C ++, salīdzinot ar iepriekšējo izpildlaika ieviešanu. Arī zvani uz DataView Tagad, apkopojot JavaScript TurboFan optimizēšanas kompilatorā, tiek iezīmētas metodes. Tas nodrošina labāku karstā koda maksimālo veiktspēju.

V8 6.9 versijā ir iekļauts arī Liftoff, WebAssembly portatīvā koda formāta kompilators. Tas ir iespējots pēc noklusējuma un paredzēts, lai samazinātu WebAssembly balstītu lietotņu startēšanas laiku, pēc iespējas ātrāk ģenerējot kodu. Pats koda kvalitāte ir Liftoff sekundārā prioritāte, un kodu galu galā atkārtoti kompilēs V8 TurboFan kompilators.

Liftoff tika izstrādāts, lai risinātu problēmu, kurā TurboFan sastādīšanas procesa aizmugure patērēja daudz laika un atmiņas, samazinot WebAssembly koda veiktspēju. Liftoff ļauj izvairīties no starpposma attēlojuma laika un atmiņas, ģenerējot mašīnas kodu vienā piegājienā pa WebAssembly funkcijas baitkodu. Liftoff un Turbofan piešķir V8 divus kompilācijas līmeņus, ar Liftoff bāzes kompilatoru ātrai startēšanai un TurboFan, kas nodrošina veiktspējas optimizāciju.

Google arī plāno vēl vairāk uzlabot startēšanas laiku, samazināt atmiņas patēriņu un celt Liftoff priekšrocības vairāk lietotāju. Šie plāni ietver ARM procesoru pieslēgvietas izmantošanai mobilajās ierīcēs. Pašreiz Liftoff darbojas tikai uz Intel 32 un 64 bitu platformām. Citi izskatāmie uzlabojumi ir:

  • Dinamiskas pakāpes ieviešana mobilajām ierīcēm, lai šajās ierīcēs varētu uzņemt mazāk atmiņas. Eksperimenti turpinās, izmantojot slinko kompilāciju ar Liftoff un dinamisku karsto funkciju sakārtošanu TurboFan.
  • Uzlabot Liftoff koda ģenerēšanas veiktspēju un arī ģenerētā koda uzlabošanu.

Iepriekšējā versija: kas jauns V8 versijā 6.8

Google V8 6.8 versija, kas tika izlaista 2018. gada jūlijā, koncentrējas uz veiktspēju un atmiņas izmantošanu.

Veiktspēju ir uzlabojuši masīvu iznīcināšanas uzlabojumi. Optimizētājs kompilators nebija ģenerējis ideālu kodu masīvu iznīcināšanai, tāpēc V8 veidotāji bloķēja evakuācijas analīzi, lai novērstu pagaidu piešķiršanu, kas masīvu iznīcināšanu ar pagaidu masīvu padarīja tikpat ātru kā piešķiršanas secība.

Jauna Object.assign ieviešana uzlabo veiktspēju, ieviešot ātru JavaScript ceļu.

TypingArrays veiktspēja ir palielināta gadījumos, kad šķirošana tiek veikta, izmantojot salīdzināšanas funkciju.

Citas jaunās funkcijas V8 6.8 versijā ietver:

  • Lai uzlabotu izpildes ātrumu, izmantojot WebAssembly portatīvā koda formātu, izstrādātāji var izmantot uz slazdu balstītu robežu pārbaudi, atmiņas pārvaldības optimizāciju Linux x64 platformās.
  • SFI atmiņas patēriņš (SharedFunctionInfo) ir samazināts, saspiežot un noņemot nevajadzīgos laukus.
  • Arī atmiņas iespēju uzlabošanai ir pārtraukta atkarība no SFI, kurā SFI nevajadzīgi tika turēti dzīvībā, un tas izraisīja atmiņas noplūdes risku.

Iepriekšējā versija: kas jauns V8 versijā 6.7

Google V8 JavaScriptengine iegūst valodas funkciju un drošības uzlabojumus ar versiju 6.7, kas tagad ir ražošanas laidienā.

V8 6.7 motoram ir BigInt atbalsts ir iespējots pēc noklusējuma. Paredzams nākamajā ECMAScript versijā,BigInts kalpo kā skaitliskais primitīvs JavaScript, lai patvaļīgi precīzi attēlotu veselus skaitļus. Ar BigInt, ir iespējams veikt veselu skaitļu aritmētiku, nepārpildot. BigInt varētu kalpot par pamatu kādam gadījumam BigDecimal ieviešana, noderīga, lai precīzi norādītu naudas summas.

V8 6.7 ir arī vairāk ierobežojumu attiecībā uz sānu kanālu ievainojamību, kas paredzēti, lai novērstu informācijas noplūdi uz neuzticamu JavaScript un WebAssemble kodu.

Iepriekšējā versija: kas jauns V8 versijā 6.6

Google V8 JavaScript motora 6.6 versija ir vērsta uz JavaScript valodas funkcijām un kešatmiņas iespējām.

JavaScript, Function.prototype.toString () atgriež precīzas avota koda teksta daļas, ieskaitot atstarpi un komentārus. Tiek ieviesta arī V8 versija 6.6 String.prototype.trimStart () un String.prototype.trimEnd (). Šī iespēja bija pieejama, izmantojot nestandarta trimLeft () un trimRight () metodes, kas paliek kā jauno metožu aizstājvārdi, lai nodrošinātu atgriezenisku savietojamību.

Stīgu literālos var izmantot arī rindu un rindkopu atdalītāju simbolus, tādējādi saskaņojot JSON. Iepriekš tie tika uzskatīti par līnijas terminatoriem virknes literāros, un to izmantošana radīja SyntaxError izņēmumu.

The Masīvs.prototips.vērtības metode masīviem piešķir tādu pašu iterācijas saskarni kā ECMAScript 2015 Karte un Iestatiet kolekcijas. Ar tiem var mijiedarboties taustiņus,vērtībasvai ieraksti izsaucot tā paša nosaukuma metodi. Šīs izmaiņas varētu būt nesaderīgas ar esošo JavaScript kodu; izstrādātāji, kuriem vietne atklāj nepāra vai salauztu uzvedību, var mēģināt atspējot šo funkciju, izmantojot chrome: // flags / # enable-array-prototipa vērtības.

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