Dostępna jest wersja robocza standardu WebAssembly 2.0

Konsorcjum W3C opublikowało wersję roboczą nowej specyfikacji, która standaryzuje kod pośredni WebAssembly 2.0 oraz powiązane API, umożliwiające tworzenie aplikacji o wysokiej wydajności, przenoszących się między przeglądarkami i platformami sprzętowymi. WebAssembly dostarcza niezależny od przeglądarki uniwersalny kod pośredni o niskim poziomie, do wykonywania aplikacji skompilowanych z różnych języków programowania. Dzięki zastosowaniu JIT dla WebAssembly można osiągnąć wydajność zbliżoną do kodu natywnego.

Technologia WebAssembly może być stosowana do realizacji w przeglądarce zadań wymagających wysokiej wydajności, takich jak kodowanie wideo, przetwarzanie dźwięku, manipulacje grafiką i 3D, rozwój gier, operacje kryptograficzne oraz obliczenia matematyczne poprzez organizację wykonywania w przeglądarce kodu napisanego w językach kompilowanych, takich jak C/C++.

Wśród głównych zadań WebAssembly wyróżnia się zapewnienie przenośności, przewidywalności zachowania oraz tożsamości wykonania kodu na różnych platformach. W ostatnim czasie WebAssembly jest również promowane jako uniwersalna platforma do bezpiecznego wykonywania kodu w różnych infrastrukturach, systemach operacyjnych i urządzeniach, nie ograniczając się do przeglądarek.

W3C opublikowało trzy wstępne specyfikacje WebAssembly 2.0:

  • WebAssembly Core — opisuje niskopoziomową maszynę wirtualną do wykonywania kodu pośredniego WebAssembly. Związane z WebAssembly zasoby dostarczane są w formacie „.wasm”, podobnym do plików „.class” w Javie, zawierającym dane statyczne i segmenty kodu do pracy z tymi danymi.
  • Interfejs JavaScript WebAssembly — dostarcza API do integracji z JavaScript. Umożliwia pobieranie wartości i przekazywanie parametrów do funkcji WebAssembly. Wykonanie WebAssembly odpowiada modelowi bezpieczeństwa JavaScript, a wszelkie interakcje z systemem podstawowym odbywają się analogicznie do wykonywania kodu JavaScript.
  • WebAssembly Web API — definiuje programinterfejs oparty na mechanizmie Promise do żądania i wykonywania zasobów „.wasm”. Format zasobów WebAssembly jest zoptymalizowany pod kątem szybkiego rozpoczęcia wykonania, bez czekania na pełne załadowanie pliku, co pozwala zwiększyć responsywność aplikacji webowych.

Główne zmiany w WebAssembly 2.0 w porównaniu do pierwszej wersji standardu:

  • Wsparcie dla typu wektorowego v128 oraz powiązanych z nim instrukcji wektorowych, które pozwalają na jednoczesne wykonywanie operacji na wielu wartościach numerycznych (SIMD, pojedyncza instrukcja wiele danych).
  • Możliwość importu i eksportu zmiennych globalnych (mutable), które pozwalają na stosowanie globalnego powiązania dla takich wartości, jak wskaźniki stosu w C++.
  • Nowe instrukcje konwersji typu float na int, które zamiast generować wyjątek przy przepełnieniu wyniku, zwracają minimalną lub maksymalną możliwą wartość (co jest niezbędne dla SIMD).
  • Instrukcje do rozszerzania znaku liczb całkowitych (zwiększanie rozdzielczości liczby przy zachowaniu znaku i wartości).
  • Wsparcie dla zwracania wielu wartości w blokach i funkcjach (oprócz przekazywania wielu parametrów do funkcji).
  • Implementacja funkcji JavaScript BigInt64Array i BigUint64Array do konwersji między typem BigInt w JavaScript a reprezentacją 64-bitowych liczb całkowitych w WebAssembly.
  • Wsparcie dla typów referencyjnych (funcref i externref) oraz związanych z nimi instrukcji (select, ref.null, ref.func i ref.is_null).
  • Instrukcje memory.copy, memory.fill, memory.init i data.drop do kopiowania danych między obszarami pamięci oraz czyszczenia regionów pamięci.
  • Instrukcje do bezpośredniego dostępu i modyfikacji tabel (table.set, table.get, table.size, table.grow). Możliwość tworzenia, importowania i eksportowania wielu tabel w jednym module. Funkcje kopiowania/wypełniania tabel w trybie wsadowym (table.copy, table.init i elem.drop).

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster