Ohjelmointi

Mitä uutta Googlen V8 JavaScript -moottorin versiossa 7 on

Beta V8 -versio 7.4 on nyt saatavana, ja se voi laajentaa moottorin jalanjälkeä alustoille, kuten Apple iOS. V8 on Googlen avoimen lähdekoodin JavaScript- ja WebAssembly-moottori Chrome-selaimelle. Se on katkottua sekä Chrome-selaimesta että Node.js-JavaScript-ajonaikaisesta.

Mistä ladata Google V8

Voit ladata Google V8: n tuotantoversion Chromium V8 -reposta.

Tuleva versio: Mitä uutta V8-versiossa 7.4

Huhtikuussa 2019 julkaistavan tuotantoversion myötä Google V8 beta 7.4: ssä on seuraavat uudet ominaisuudet:

  • JIT-vähemmän V8, jossa JavaScript-suoritusta tuetaan jakamatta suoritettavaa muistia ajon aikana. Tämä voi sallia V8: n laajentamisen alustoille, kuten Apple iOS, älytelevisiot ja pelikonsolit. V8: n oletuskokoonpano on tukeutunut kykyyn allokoida ja muokata suoritettavaa muistia ajon aikana. Mutta on tilanteita, joissa voi olla toivottavaa käyttää moottoria jakamatta suoritettavaa muistia, kuten alustoja, jotka ovat kieltäneet kirjoittamattoman pääsyn suorittamattomaan muistiin ei-etuoikeutetuille sovelluksille, mukaan lukien iOS. Kirjoitusten kieltäminen suoritettavaan muistiin vähentää myös sovelluksen hyökkäyspintaa hyödyntämistä varten. JIT-vähemmän-tilassa V8 siirtyy vain tulkkeja käyttävään tilaan JavaScriptille; WebAssembly ei tällä hetkellä tue tätä tilaa. JIT-vähemmän -tilaan sisältyy kuitenkin rangaistus.
  • WebAssembly-säikeet / Atomics ovat nyt käytössä muissa kuin Android-käyttöjärjestelmissä. Tämä siirto vapauttaa useiden ytimien käytön WebAssemblyn kautta, mikä mahdollistaa uuden, laskennan vaativan käytön verkossa.
  • Suorituskyvyn parantamiseksi versio 7.4 ohittaa argumenttien mukauttamisen joissakin tapauksissa, mikä vähentää puhelun yleiskustannuksia 60 prosenttia.
  • Suorituskykyä on parannettu alkuperäisten käyttöoikeuksien, DOM-käyttöoikeuksien, kutsumisessa.
  • Valmistelijan suorituskykyä parannettiin poistamalla ominaisuusnimiin liittyvä deduplikaatio. Lisäksi korjattiin suorituskykyongelma, johon liittyi lähdevirran käyttämä mukautettu UTF-8-dekoodaus.
  • Muistikulujen vähentämiseksi on toteutettu tuki käännettyjen tavukoodien huuhtelemiseksi roskakorin aikana tapahtuvista toiminnoista, jos niitä ei ole suoritettu äskettäin.
  • Yksityisen luokan kenttien tukemiseksi kehittäjät voivat merkitä kentän yksityiseksi valmistelemalla sitä kentällä # etuliite.

Mistä ladata V8 7.4 beta

Voit ladata V8-betan Googlen Chromium Git -jälleenmyyjältä.

Nykyinen versio: Mitä uutta V8-versiossa 7.3 on

V8 7.3: n uusia ominaisuuksia ovat:

  • --async-pino-jäljet lippu on käytössä oletuksena.
  • Nollakustannusten aiheuttamat asynkronipinojäljet ​​helpottavat tuotannon ongelmien diagnosointia asynkronisella koodilla; pino yleensä lokitiedostoihin ja palveluihin lähetetty omaisuus antaa nyt enemmän tietoa ongelmista.
  • Nopeampi odottaa, kanssa --harmonia-odota-optimointi lippu on oletusarvoisesti käytössä. Tämä on edellytys --async-pino-jäljet.
  • Nopeampi käynnistys WebAssemblylle optimointien avulla. Suurimmalla osalla kuormituksia kokoomateos paranee 15 prosentista 25 prosenttiin.
  • JavaScript-ominaisuuksia, kuten fromEntries (), API, jolla suoritetaan käänteinen Object.entriesjaMerkkijono.prototyyppi.Matchall, sovellusliittymä, joka helpottaa yleisten tai tahmeiden säännöllisten lausekkeiden soveltamista merkkijonoon ja iterointia kaikkien vastaavuuksien läpi.

Nykyinen versio: Mitä uutta Google V8 -versiossa 7.2 on

Tammikuun 2019 V8-versio 7.2 parantaa JavaScriptiä jäsentämistä, WebAssembly-binaarimuotoa ja muistia.

Parsemisnopeuden parantamiseksi V8-versio 7.2 sisältää sen, mitä Google kutsuu moottorin kaikkien aikojen nopeimmaksi JavaScriptiä jäsentäjäksi, mikä nopeuttaa sivujen lataamista ja reagoi paremmin sivuihin. V8-version 7.0 jälkeen työpöydän jäsentämisnopeus on parantunut noin 30 prosenttia, Google sanoo.

Muistia varten IA32-arkkitehtuurissa tuetaan ja otetaan oletusarvoisesti käyttöön upotettuja sisäisiä sisäosia, jotka säästävät muistia jakamalla luotua koodia useille isolaateille.

WebAssembly: lle V8 7.2 sisältää koodinluontiparannuksia, mukaan lukien solmunjaon käyttöönotto optimoivan kääntäjän aikataulussa ja silmukan kierto takapäässä. Myös kääreiden välimuistia on parannettu ja mukautettuja kääreitä on otettu käyttöön vähentämään yleiskustannuksia, kun kutsutaan tuotuja JavaScript-matemaattisia toimintoja.

Rekisterimerkinnän suunnitteluun tehdyt muutokset parantavat myöhemmässä julkaisussa ilmestyvien koodimallien suorituskykyä. Myös version 7.2 ansaenkäsittelijät parantavat WebAssembly-koodin läpäisykykyä. Ne on toteutettu Windows, MacOS ja Linux. Chromiumissa ne ovat käytössä Linuxissa, MacO: t ja Windows voivat seurata vakauden vahvistuttua. Suunnitelmien mukaan myös niiden on oltava saatavilla Androidissa.

Muita V8 7.2: n uusia ominaisuuksia ovat:

  • Levityselementtien suorituskykyä on parannettu, kun ne esiintyvät taulukon kirjaimen edessä.
  • Nopeampi asynkronoitu/odottaa toteutus on oletusarvoisesti käytössä. Muutos voidaan yhdistää viralliseen ECMAScript-spesifikaatioon.
  • Nollarannikon asynkronipinojäljet ​​rikastuttavat pino ominaisuus asynkronisilla puhelukehyksillä. Tämä ominaisuus on käytettävissä --async-pinon jäljet komentorivin lippu.
  • Tuki julkisen luokan kentille, joka laajentaa JavaScript-syntaksia yksinkertaistamiseksi.
  • ListFormat ehdotus luetteloiden muotoilun lokalisoimiseksi.
  • merkitä antaa nyt pakosekvenssit yksinäisille korvikkeille, jolloin lähtö on kelvollinen Unicode.

Edellinen versio: Mitä uutta Google V8 -versiossa 7.1 on

Marraskuun 2018 V8: n versio 7.1 sisältää parannuksia muistiin ja suorituskykyyn sekä parannuksia sekä JavaScriptille että WebAssembly-binaarimuodolle. Muistia varten tulkin tavukoodit upotetaan nyt binaariin, mikä säästää keskimäärin noin 200 kt eristettä kohden. Suorituskyvyn parantamiseksi TurboFan-kääntäjän pakoanalyysiä parannetaan käsittelemään paikallisia toimintaympäristöjä korkeamman tason funktioille, kun muuttujat ympäröivästä kontekstista pakenevat paikalliseen sulkeutumiseen. Pakoanalyysin avulla skalaarikorvaus suoritetaan optimointiyksikölle paikallisille kohteille.

Muita uusia ominaisuuksia V8-versiossa 7.1:

  • JavaScriptiä varten RelativeTimeformat Päivityksen sisältämä sovellusliittymä sallii suhteellisten aikojen lokalisoidun muotoilun, kuten "eilinen", suorituskyvystä tinkimättä. Myös versio 7.1 tukee GlobalThis ehdotus, joka tarjoaa yleisen mekanismin maailmanlaajuisen objektin käyttöön jopa tiukoissa toiminnoissa tai moduuleissa alustasta riippumatta.
  • WebAssembly-tavukoodimuodossa postMessage on tuettu moduuleille. Tämä käyttäytyminen kuuluu verkkotyöntekijöille eikä sitä laajenneta prosessien välisiin skenaarioihin.

Edellinen versio: Mitä uutta Google V8 -versiossa 7.0 on

Lokakuun 2018 V8-version 7.0 esikatselee WebAssembly-säikeet, jotka tarjoavat primitiivisyyden rinnakkaiseen laskentaan. Kehittäjät voivat ottaa sen käyttöön V8: ää käyttävien Chrome-selainten ketjujen käyttämiseksi chrome: // flags / # enable-webassembly-threads tai rekisteröidy alkuperätutkimukseen kokeilemaan uusia verkko-ominaisuuksia. WebAssembly, alias Wasm, mahdollistaa eri kielillä kirjoitetun koodin kokoamisen verkossa suoritettavaksi.

Muita V8 7.0: n uusia ominaisuuksia ovat:

  • JavaScriptiä varten kuvaus omaisuus lisätään prototyyppi, joka tarjoaa ergonomisemman tavan käyttää kuvausta. Myös, Array.prototype.sort tulee vakaaksi versiossa 7.0.
  • Upotettujen sisäänrakennettujen laajennusten laajennus, jotka säästävät muistia jakamalla luotua koodia useille isolaateille. V8-version 6.9 avulla sisäänrakennetut X64-arkkitehtuurit ovat käytössä, kun taas versio 7.0 laajentaa ne muille alustoille paitsi IA-32.

Edellinen versio: Mitä uutta on Google V8 -versiossa 6.9

Syyskuun 2018 V8-versio 6.9 keskittyy muistiin ja suorituskyvyn parannuksiin Googlen JavaScript-moottorille.

Muistin säästämiseksi versio 6.9 tarjoaa upotettuja sisäänrakennuksia x64-pohjaisiin tietokoneisiin. Nämä ovat kaikkien isolaattien jakamia toimintoja, jotka upotetaan itse binääritiedostoon sen sijaan, että ne kopioitaisiin JavaScript-kasaan, joten ne ovat muistissa vain kerran riippumatta siitä, kuinka monta isolaattia on käynnissä. V8: n suunnittelijat ovat nähneet keskimäärin 9 prosenttia kasan kokoa 10 000 suosituimmalla verkkosivustolla x64-tietokoneilla. Tuki muille alustoille seuraa myöhemmissä julkaisuissa.

Suorituskyvyn kannalta V8-versio 6.9 vähentää Mark-Compact -jätteiden keräilytaukoja parantamalla Heikko kartta käsittely. Samanaikainen ja inkrementaalinen merkintä voidaan nyt käsitellä Heikot kartat. Aikaisemmin tämä työ tehtiin Mark-Compact -jätteen keräyksen viimeisessä atomitaukossa. Jätteiden keruu tekee nyt myös enemmän työtä rinnakkain pienempien taukojen kanssa.

Suorituskyvyn vuoksi DataView menetelmiä on uudistettu V8-vääntömomentissa, mikä säästää kalliita puheluita C ++: lle verrattuna edelliseen ajonaikaisiin toteutuksiin. Myös puhelut DataView menetelmät ovat nyt linjassa, kun käännetään JavaScriptiä TurboFan-optimointikääntäjään. Tämä tarjoaa paremman huipputehon kuumakoodille.

V8-versio 6.9 sisältää myös Liftoffin, WebAssembly-kannettavan koodimuodon perustason kääntäjän. Se on oletusarvoisesti käytössä ja sen tarkoituksena on lyhentää WebAssembly-pohjaisten sovellusten käynnistymisaikoja luomalla koodi mahdollisimman nopeasti. Koodin laatu on Liftoffin toissijainen prioriteetti, jonka koodin kääntää lopulta V8: n TurboFan-kääntäjä.

Liftoff kehitettiin vastaamaan ongelmaan, jossa TurboFanin kokoamisprosessin takaosa kuluttaa paljon aikaa ja muistia, mikä vähentää WebAssembly-koodin suorituskykyä. Liftoff välttää väliesityksen aikaa ja muistia aiheuttavan konekoodin yhdellä kertaa WebAssembly-toiminnon tavukoodin yli. Liftoff ja Turbofan antavat V8: lle kaksi kääntötasoa, Liftoffin peruskoostaja nopeaan käynnistykseen ja TurboFan tarjoavat optimoinnin suorituskykyyn.

Google aikoo myös parantaa käynnistysaikaa, vähentää muistin kulutusta ja tuoda Liftoffin edut usealle käyttäjälle. Nämä suunnitelmat sisältävät portteja ARM-prosessoreille käytettäväksi mobiililaitteissa. Liftoff toimii tällä hetkellä vain Intelin 32- ja 64-bittisillä alustoilla. Muita harkittavia parannuksia ovat:

  • Dynaamisen tason lisääminen mobiililaitteille pienempien muistimäärien mukauttamiseksi näihin laitteisiin Kokeissa etenevät laiska kääntäminen Liftoffin kanssa ja dynaaminen kuumatoimintojen tasoitus TurboFanissa.
  • Parannetaan Liftoff-koodin luomisen suorituskykyä ja parannetaan myös luotua koodia.

Edellinen versio: Mitä uutta V8-versiossa 6.8 on

Heinäkuussa 2018 julkaistu Google V8 -versio 6.8 keskittyy suorituskykyyn ja muistin käyttöön.

Suorituskykyä on lisätty joukon tuhoamisparannuksilla. Optimoiva kääntäjä ei ollut luonut ihanteellista koodia taulukon tuhoamiseen, joten V8: n rakentajat estivät pakoanalyysin väliaikaisen allokoinnin eliminoimiseksi, mikä teki matriisin hajotuksesta väliaikaisella matriisilla yhtä nopeasti kuin määritysjärjestys.

Object.assignin uusi toteutus parantaa suorituskykyä toteuttamalla nopean polun JavaScriptille.

TypedArrays-suorituskykyä on lisätty tapauksissa, joissa lajittelu tapahtuu vertailutoiminnon avulla.

Muita V8-version 6.8 uusia ominaisuuksia ovat:

  • Parantaakseen suoritusnopeutta kannettavalla WebAssembly-koodimuodolla kehittäjät voivat käyttää ansaan perustuvaa rajojen tarkistusta, muistinhallinnan optimointia Linux x64 -alustoilla.
  • SFI: n muistinkulutus (SharedFunctionInfo) on vähennetty puristamalla ja poistamalla tarpeettomia kenttiä.
  • Myös muistikapasiteetin parantamiseksi on murtunut riippuvuus SFI: stä, jossa SFI: t pidettiin tarpeettomasti hengissä, mikä oli johtanut muistivuotojen riskiin.

Edellinen versio: Mitä uutta V8-versiossa 6.7 on

Googlen V8 JavaScriptengine on saamassa parannuksia kieliominaisuuksiin ja tietoturvaan version 6.7 haaralla, joka on nyt tuotantojulkaisussa.

V8 6.7 -moottorilla on IsoInt tuki on oletusarvoisesti käytössä. Odotettavissa tulevassa ECMAScript-versiossa,BigInts palvella JavaScriptin numeerisena primitiivinä edustamaan kokonaislukuja mielivaltaisella tarkkuudella. Kanssa IsoInt, on mahdollista suorittaa kokonaislukuaritmeettinen ilman ylivuotoa. IsoInt voisi toimia mahdollisen perustana BigDecimal toteutus, hyödyllinen rahasummien esittämiseen desimaalin tarkkuudella.

V8 6.7: ssä on myös enemmän lievennyksiä sivukanavan haavoittuvuuksille, joiden tarkoituksena on estää tietovuodot epäluotettavaan koodiin JavaScriptiä ja WebAssemblya varten.

Edellinen versio: Mitä uutta V8-versiossa 6.6 on

Googlen V8-JavaScript-moottorin versio 6.6 keskittyy JavaScript-kieliominaisuuksiin ja koodin välimuistiin.

JavaScriptiä varten Function.prototype.toString () palauttaa tarkat viipaleet lähdekooditekstistä, mukaan lukien välilyönnit ja kommentit. V8-versio 6.6 myös toteuttaa String.prototype.trimStart () ja String.prototype.trimEnd (). Tämä ominaisuus oli ollut saatavana standardista poikkeavalla tavalla trimLeft () ja trimRight () menetelmät, jotka pysyvät uusien menetelmien aliaksina taaksepäin yhteensopivuuden mahdollistamiseksi.

Lisäksi rivin literaaleissa voidaan käyttää viiva- ja kappaleenerotinsymboleja, jotka sopivat yhteen JSON: n kanssa. Aikaisemmin näitä oli käsitelty rivinvaihtajina merkkijono-literaaleissa, ja niiden käyttö johti SyntaxError-poikkeukseen.

Array.prototype.values menetelmä antaa matriiseille saman iteraatiorajapinnan kuin ECMAScript 2015 Kartta ja Aseta kokoelmat. Nämä voivat olla vuorovaikutuksessa näppäimiä,arvottai merkinnät kutsumalla samannimistä menetelmää. Tämä muutos voi olla yhteensopimaton olemassa olevan JavaScript-koodin kanssa; kehittäjät, jotka löytävät outoa tai rikkoutunutta käyttäytymistä verkkosivustolta, voivat yrittää poistaa tämän ominaisuuden käytöstä chrome: // flags / # enable-array-prototype-values.

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