Specjaliści z Mozilla zaprezentowali projekt WASI (WebAssembly System Interface), który zakłada rozwój API do tworzenia standardowych aplikacji uruchamianych poza przeglądarką. W tym przypadku mowa jest przede wszystkim o wieloplatformowości i wysokim poziomie bezpieczeństwa takich aplikacji.

Jak podkreślono, są one uruchamiane w specjalnej "piaskownicy" i mają dostęp do plików, systemu plików, gniazd sieciowych, timerów i tym podobnych. Program może wykonywać tylko dozwolone działania.
Biorąc pod uwagę, że pseudokod WebAssembly jest niezależną od platformy wersją języka assembler, wykorzystanie JIT pozwoli osiągnąć wysoką wydajność kodu, na poziomie aplikacji natywnych. W tej chwili przedstawiono implementację podstawowych API POSIX (pliki, gniazda itp.), ale nie ma jeszcze wsparcia dla blokad i asynchronicznego wejścia/wyjścia. W przyszłości spodziewane są moduły do kryptografii, obsługi grafiki 3D, czujników i multimediów.

Należy również zauważyć, że projekt Fastly przedstawił kompilator Lucet dla aplikacji WebAssembly. Pozwala on bezpiecznie wykonywać zewnętrzne programy w WebAssembly wewnątrz innych aplikacji, na przykład nadaje się do wtyczek. Sam kompilator jest napisany w języku Rust i obsługuje kod w C, Rust oraz TypeScript.
Oczywiście pozostaje jeszcze wiele pytań dotyczących bezpieczeństwa tego podejścia. Wykonywanie kodu w "piaskownicy" dziwnie łączy się z dostępem do funkcji głównego systemu, więc ten aspekt wymaga dalszego wyjaśnienia. Ponadto nie wiadomo, które dokładnie programy powinny działać w tym trybie i jak będzie trzeba śledzić ich zachowanie.
Źródło: 3dnews.ru
