WebAssembly 2.0 Standard Preview tilgængelig

W3C har udgivet et udkast til en ny specifikation, der standardiserer WebAssembly 2.0-middleware og dens tilhørende API, hvilket muliggør skabelsen af ​​højtydende applikationer, der er bærbare på tværs af browsere og hardwareplatforme. WebAssembly leverer browser-uafhængig, universel, lav-niveau mellemkode til at køre applikationer kompileret fra forskellige programmeringssprog. Ved at bruge JIT til WebAssembly kan du opnå ydeevneniveauer tæt på native kode.

WebAssembly-teknologi kan bruges til at udføre højtydende opgaver i browseren, såsom videokodning, lydbehandling, grafik og 3D-manipulation, spiludvikling, kryptografiske operationer og matematiske beregninger ved at tillade kode skrevet på kompilerede sprog såsom C/C++ .

Blandt hovedmålene med WebAssembly er at sikre portabilitet, forudsigelig adfærd og identisk kodeudførelse på forskellige platforme. For nylig er WebAssembly også blevet promoveret som en universel platform til sikker eksekvering af kode på tværs af enhver infrastruktur, operativsystem og enhed, ikke begrænset til browsere.

W3C har offentliggjort tre udkast til specifikationer for WebAssembly 2.0:

  • WebAssembly Core - Beskriver en virtuel maskine på lavt niveau til at køre WebAssembly mellemkode. Ressourcer forbundet med WebAssembly leveres i et ".wasm"-format, der ligner ".class"-filer i Java, der indeholder statiske data og kodesegmenter til at arbejde med disse data.
  • WebAssembly JavaScript Interface - Giver en API til integration med JavaScript. Giver dig mulighed for at få værdier og sende parametre til WebAssembly-funktioner. Udførelse af WebAssembly følger JavaScript-sikkerhedsmodellen og al interaktion med hovedsystemet udføres på samme måde som udførelse af JavaScript-kode.
  • WebAssembly Web API - Definerer en programmeringsgrænseflade baseret på Promise-mekanismen til at anmode om og udføre ".wasm"-ressourcer. WebAssembly-ressourceformatet er optimeret til at påbegynde eksekvering uden at vente på, at filen er fuldt indlæst, hvilket forbedrer webapplikationernes reaktionsevne.

De vigtigste ændringer i WebAssembly 2.0 sammenlignet med den første version af standarden:

  • Understøttelse af v128-vektortypen og relaterede vektorinstruktioner, der giver dig mulighed for at udføre handlinger på flere numeriske værdier parallelt (SIMD, single-instruction multiple data).
  • Evne til at importere og eksportere foranderlige globale variabler, hvilket tillader global binding for værdier såsom stak-pointere i C++.
  • Nye float til int-konverteringsinstruktioner, der i stedet for at kaste en undtagelse, når resultatet løber over, returnerer den mindste eller maksimale mulige værdi (nødvendig for SIMD).
  • Instruktioner til tegnudvidelse af heltal (øgning af bitdybden af ​​et tal, mens fortegn og værdi bevares).
  • Understøttelse af blokke og funktioner, der returnerer flere værdier (udover at overføre flere parametre til funktioner).
  • Implementering af BigInt64Array og BigUint64Array JavaScript-funktionerne til at konvertere mellem BigInt JavaScript-typen og WebAssembly-repræsentationen af ​​64-bit heltal.
  • Understøttelse af referencetyper (funcref og externref) og deres tilhørende instruktioner (select, ref.null, ref.func og ref.is_null).
  • Memory.copy, memory.fill, memory.init og data.drop instruktioner til kopiering af data mellem hukommelsesområder og sletning af hukommelsesområder.
  • Instruktioner til direkte adgang til og ændring af tabeller (table.set, table.get, table.size, table.grow). Mulighed for at oprette, importere og eksportere flere tabeller i ét modul. Funktioner til kopiering/udfyldning af tabeller i batch-tilstand (table.copy, table.init og elem.drop).

Kilde: opennet.ru

Tilføj en kommentar