W zeszłym miesiącu udostępniliśmy tutaj na blogu o wiadomość, że Mozilla, Fastly, Intel i Red Hat połączyły siły w celu opracowania technologie, które tworzą WebAssembly (Jeśli chcesz dowiedzieć się więcej o nowościach, zajrzyj do nich ten link) a teraz kilka tygodni po tej wiadomości Konsorcjum W3C ogłosiło, że technologia WebAssembly stał się zalecanym standardem.
Dla tych, którzy nie są zaznajomieni z WebAssembly powinni to wiedzieć zapewnia to oprogramowanie pośredniczące uniwersalny niezależny od przeglądarki niskopoziomowy do uruchamiania aplikacji skompilowane z różnych języków programowania. WebAssembly jest najbardziej obiecującą i przenośną technologią dla różnych przeglądarek do tworzenia wysokowydajnych aplikacji internetowych.
Zgromadzenie sieciowe se może być używany do rozwiązywania zadań wymagających wysokiej wydajnościna przykład kodowanie wideo, przetwarzanie dźwięku, grafika 3D i manipulacja, tworzenie gier, operacje kryptograficzne, obliczenia matematyczne i tworzenie przenośnych implementacji języków programowania.
WebAssembly wygląda bardzo podobnie do Asm.js., ale różni się tym, że jest to format binarny, który nie jest powiązany z JavaScriptem. WebAssembly nie wymaga użycia modułu wyrzucania elementów bezużytecznych, ponieważ używane jest jawne zarządzanie pamięcią.
Charakterystyczna cecha modelu wykonywania aplikacji korzystających z WASUruchamiam w środowisku piaskownicy odizolowanie się od głównego systemu i wykorzystanie mechanizmu bezpieczeństwa opartego na zarządzaniu pojemnością dla działań z każdym z zasobów (pliki, katalogi, gniazda, wywołania systemowe itp.)
Włączając JIT dla WebAssembly, możesz osiągnąć poziomy wydajności zbliżone do kodu natywnego. Do głównych zadań WebAssembly należy zapewnienie przenośności, przewidywalności zachowania i tożsamości wykonywania kodu na różnych platformach.
Ostatnio WebAssembly rozwija się również jako platforma uniwersalna aby bezpiecznie uruchamiać kod na dowolnej infrastrukturze, systemie operacyjnym i urządzeniu, nie tylko w przeglądarkach.
W3C ustandaryzowało trzy specyfikacje związane z WebAssembly:
- WebRdzeń zespołu- Zdefiniowana jako maszyna wirtualna niskiego poziomu, która ściśle naśladuje funkcjonalność wielu mikroprocesorów, na których działa. Poprzez kompilację lub interpretację just-in-time, silnik WebAssembly może działać z prędkością zbliżoną do skompilowanego kodu dla platformy natywnej.
Zasób .był m jest analogiczne do pliku .klasa Java w tym sensie, że zawiera statyczne dane i segmenty kodu, które działają na tych statycznych danych. W przeciwieństwie do Java, WebAssembly jest generalnie tworzona jako cel kompilacji dla innych języków programowania, takich jak C / C ++ i Rust. - Web API WebAssembly: definiuje interfejs programistyczny oparty na mechanizmie Promise do żądania i wykonywania zasobów „.wasm”. Format zasobów WebAssembly jest zoptymalizowany pod kątem rozpoczęcia wykonywania bez czekania na pełne załadowanie pliku, co poprawia szybkość reakcji aplikacji internetowych.
- Interfejs JavaScript WebAssembly: zapewnia interfejs 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 cała interakcja z hostem przebiega podobnie jak wykonanie kodu JavaScript.
W przyszłości planowane jest przygotowanie specyfikacje funkcji WebAssembly, takich jak:
- Wielowątkowość z pamięcią współdzieloną i dostępem do pamięci atomowej.
- Operacje wektorowe oparte na SIMD, które pozwalają na zrównoleglenie wykonywania cykli.
- Typy odwołań dla bezpośrednich odwołań do obiektów w kodzie zestawu WebAssembly.
- Możliwość wywoływania funkcji bez zajmowania dodatkowego miejsca na stosie.
- Integracja z modułami ECMAScript: możliwość załadowania kodu WebAssembly z JavaScript jako moduły zgodne ze specyfikacją ECMAScript 6.
- Sposób pracy ze śmieciarką.
- Interfejsy debugowania.
- WASI (WebAssembly System Interface): API do bezpośredniej interakcji z systemem operacyjnym (API POSIX do pracy z plikami, gniazdami itp.).
Jeśli chcesz dowiedzieć się więcej na ten temat, zapoznaj się z oryginalną notatką W poniższym linku.