WebAssembly 2.0 Standard forhåndsvisning tilgjengelig

W3C har publisert et utkast til en ny spesifikasjon som standardiserer WebAssembly 2.0-mellomvare og tilhørende API, som gjør det mulig å lage høyytelsesapplikasjoner som er bærbare på tvers av nettlesere og maskinvareplattformer. WebAssembly gir nettleseruavhengig, universell, lavt nivå mellomkode for å kjøre applikasjoner kompilert fra forskjellige programmeringsspråk. Ved å bruke JIT for WebAssembly kan du oppnå ytelsesnivåer nær native kode.

WebAssembly-teknologi kan brukes til å utføre oppgaver med høy ytelse i nettleseren, for eksempel videokoding, lydbehandling, grafikk og 3D-manipulering, spillutvikling, kryptografiske operasjoner og matematiske beregninger ved å tillate kode skrevet på kompilerte språk som C/C++ .

Blant hovedmålene til WebAssembly er å sikre portabilitet, forutsigbar oppførsel og identisk kodekjøring på forskjellige plattformer. Nylig har WebAssembly også blitt promotert som en universell plattform for sikker utførelse av kode på tvers av enhver infrastruktur, operativsystem og enhet, ikke begrenset til nettlesere.

W3C har publisert tre utkast til spesifikasjoner for WebAssembly 2.0:

  • WebAssembly Core - Beskriver en virtuell maskin på lavt nivå for å kjøre WebAssembly mellomkode. Ressurser knyttet til WebAssembly leveres i et ".wasm"-format, likt ".class"-filer i Java, som inneholder statiske data og kodesegmenter for å arbeide med disse dataene.
  • WebAssembly JavaScript-grensesnitt - Gir et API for integrasjon med JavaScript. Lar deg få verdier og sende parametere til WebAssembly-funksjoner. Utførelse av WebAssembly følger JavaScript-sikkerhetsmodellen og all interaksjon med hovedsystemet utføres på samme måte som utføring av JavaScript-kode.
  • WebAssembly Web API - Definerer et programmeringsgrensesnitt basert på Promise-mekanismen for å forespørre og utføre ".wasm"-ressurser. WebAssembly-ressursformatet er optimalisert for å starte kjøringen uten å vente på at filen skal lastes helt inn, noe som forbedrer responsen til webapplikasjoner.

De viktigste endringene i WebAssembly 2.0 sammenlignet med den første versjonen av standarden:

  • Støtte for vektortypen v128 og relaterte vektorinstruksjoner som lar deg utføre handlinger på flere numeriske verdier parallelt (SIMD, single instruction multiple data).
  • Evne til å importere og eksportere foranderlige globale variabler, slik at global binding kan brukes på verdier som stabelpekere i C++.
  • Nye float til int konverteringsinstruksjoner som, i stedet for å gi et unntak når resultatet renner over, returnerer minimum eller maksimum mulig verdi (nødvendig for SIMD).
  • Instruksjoner for tegnutvidelse av heltall (øke bitdybden til et tall mens fortegn og verdi opprettholdes).
  • Støtte for blokker og funksjoner som returnerer flere verdier (i tillegg til å sende flere parametere til funksjoner).
  • Implementering av JavaScript-funksjonene BigInt64Array og BigUint64Array for å konvertere mellom BigInt JavaScript-typen og WebAssembly-representasjonen av 64-biters heltall.
  • Støtte for referansetyper (funcref og externref) og tilhørende instruksjoner (select, ref.null, ref.func og ref.is_null).
  • Memory.copy, memory.fill, memory.init og data.drop-instruksjoner for kopiering av data mellom minneregioner og sletting av minneregioner.
  • Instruksjoner for direkte tilgang til og modifisering av tabeller (table.set, table.get, table.size, table.grow). Evne til å lage, importere og eksportere flere tabeller i en modul. Funksjoner for kopiering/fylling av tabeller i batch-modus (table.copy, table.init og elem.drop).

Kilde: opennet.ru

Legg til en kommentar