Standarden WebAssembly 3.0 har publicerats

W3C-konsortiet har meddelat att specifikationen som standardiserar mellanliggande kod för WebAssembly 3.0 och tillhörande API Àr klar, vilket gör det möjligt att skapa högpresterande applikationer som kan överföras mellan webblÀsare och hÄrdvaruplattformar. WebAssembly erbjuder en webblÀsaroberoende universell lÄgnivÄkod för att köra program som har kompilerats frÄn olika programmeringssprÄk.

WebAssembly-teknologin kan anvÀndas för att utföra uppgifter i webblÀsaren som krÀver hög prestanda, sÄsom videokodning, ljudbearbetning, grafisk och 3D-manipulation, spelutveckling, kryptografiska operationer och matematiska berÀkningar genom att möjliggöra körning av kod som skrivits i kompilering-sprÄk som C/C++. Genom att anvÀnda JIT för WebAssembly kan man uppnÄ prestandanivÄer som ligger nÀra den inbyggda koden.

Bland de viktigaste mÄlen för WebAssembly Àr att sÀkerstÀlla portabilitet, förutsÀgbart beteende och identitet vid körning av kod pÄ olika plattformar. WebAssembly Àr inte begrÀnsat till webblÀsare och marknadsförs ocksÄ som en universell plattform för sÀker körning av kod i alla infrastrukturer, operativsystem och enheter.

Följande specifikationer Àr tillgÀngliga:

  • WebAssembly Core — beskriver en lĂ„gnivĂ„ virtuell maskin för att köra mellanliggande kod för WebAssembly. Resurser kopplade till WebAssembly levereras i formatet ".wasm", som liknar ".class"-filer i Java och innehĂ„ller statiska data och kodsegment för att arbeta med dessa data.
  • WebAssembly JavaScript API — tillhandahĂ„ller ett API för integration med JavaScript. Gör det möjligt att hĂ€mta vĂ€rden och passa parametrar till WebAssembly-funktioner. Körning av WebAssembly följer JavaScripts sĂ€kerhetsmodell, och all interaktion med det underliggande systemet sker pĂ„ liknande sĂ€tt som körning av JavaScript-kod.
  • WebAssembly Web API — definierar ett programmeringsgrĂ€nssnitt baserat pĂ„ Promise-mekanismen för att begĂ€ra och köra resurser ".wasm". Formatet för WebAssembly-resurser Ă€r optimerat för att börja körningen utan att vĂ€nta pĂ„ att hela filen ska laddas, vilket förbĂ€ttrar responsiviteten hos webbapplikationer.
  • WASI API — definierar ett modulĂ€rt systemgrĂ€nssnitt för att köra WebAssembly utanför webblĂ€sare och ger tillgĂ„ng till resurser sĂ„som filer, nĂ€tverksanslutningar, en pseudotillfalls-generator och systemklockor.

Det noteras att den nya versionen av standarden har avsevÀrt förbÀttrad support för kompilering av hög-nivÄsprÄk till WebAssembly. Till exempel har möjligheten att kompilera projekt pÄ sprÄk som Java, OCaml, Scala, Kotlin, Scheme och Dart implementerats. HuvudÀndringarna i WebAssembly 3.0, jÀmfört med den andra versionen av standarden:

  • Stöd för 64-bit adressutrymme har implementerats. För adressering av minne kan nu typen i64 anvĂ€ndas, istĂ€llet för enbart i32, vilket utvidgar det tillgĂ€ngliga adressutrymmet för applikationer frĂ„n 4 GB till 16 EB (nĂ€r det körs i webblĂ€saren sĂ€tts en grĂ€ns pĂ„ 16 GB).
  • Möjlighet till samtidig anvĂ€ndning av flera minnesobjekt inom en WebAssembly-modul och arbete med olika adressrymder har tillhandahĂ„llits. Bland annat Ă€r det möjligt att kopiera data mellan olika instanser av minnesobjekt som finns i olika adressrymder.
  • Stöd för skrĂ€psamling har lagts till. Förutom den tidigare tillgĂ€ngliga linjĂ€ra minnet har en separat typ av lagring föreslagits, som automatiskt hanteras med hjĂ€lp av en skrĂ€psamlare. Kompilatorn kan nu anvĂ€nda separata datatyper, matriser och variabler, vars minneshantering och livscykel WebAssembly ansvarar för.
  • Stöd för typade referenser har lagts till, vilket kan beskriva den exakta strukturen av det vĂ€rde som referensen pekar pĂ„, vilket eliminerar behovet av ytterligare kontroller under körning. Underklasser, typrekursivitet och möjlighet till sĂ€ker anvĂ€ndning av funktionsreferenser som inte krĂ€ver typ- och grĂ€nskontroller under körning stöds.
  • Stöd för svansanrop (Tail call) har lagts till, dĂ€r den aktuella funktionen omedelbart avslutar sin körning efter anrop av en annan funktion, utan att anvĂ€nda plats pĂ„ stacken.
  • Stöd för undantagshantering har lagts till.
  • Stöd för "avslappnade" (relaxed) vektoriella SIMD-instruktioner har lagts till, vilket möjliggör högre prestanda genom att avstĂ„ frĂ„n strikt överensstĂ€mmelse med semantiken pĂ„ alla hĂ„rdvaruplattformar.
  • Stöd för en deterministisk körprofil har lagts till, vilket definierar plattformsoberoende beteende för instruktioner vars exekveringsresultat kan variera mellan olika plattformar (flyttalsoperationer, Ă„terlĂ€mnande av NaN, svagare vektoristruktioner). NĂ€r denna profil vĂ€ljs sĂ€kerstĂ€ller Wasm deterministiskt beteende, reproducerbarhet och portabilitet.
  • Syntax för att skapa egna annoteringar har lagts till, vilket möjliggör bilĂ€ggande av ytterligare information till WebAssembly-kod. Tidigare fanns stöd för anvĂ€ndarsektioner som kan lagra godtycklig information i det binĂ€ra formatet av WebAssembly, men det saknades i WebAssembly:s textformat. Nu kan denna information lĂ€ggas till i ett lĂ€sbart och redigerbart format.
  • Inbyggda funktioner för hantering av strĂ€ngar har lagts till i JavaScript API. Tidigare kunde JavaScript-strĂ€ngar endast överföras till WebAssembly som externa referenser, men nu kan strĂ€ngarna adresseras direkt och manipuleras inuti WebAssembly.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster