WASI projekt Mozilla do używania WebAssembly poza przeglądarką

WASI projekt Mozilla do używania WebAssembly poza przeglądarką

Deweloperzy Mozilli zaprezentowali projekt WASI (WebAssembly System Interface), która pracuje nad zdefiniowaniem interfejsów oprogramowania, które można wykorzystać do organizowania interakcji aplikacji dostarczanych w formacie WebAssembly z systemem operacyjnym.

Celem projektu jest dostarczenie API, które rozszerza zakres zastosowania WebAssembly i pozwala na tworzenie programów regularne W tej technologii, która działa poza przeglądarkąSą przenośne na dowolną platformę i wykazują wysoki poziom bezpieczeństwa.

Co to jest WASI?

WASI umożliwia środowisku WebAssembly dostęp do funkcji zapewnianych przez system operacyjnytakie jak pliki, system plików, gniazda sieciowe, liczniki czasu i generatory liczb losowych.

Interfejs API WASI jest początkowo rozwijany jako niezależny od przeglądarki i niezależny z JavaScript / Web API, ale jednocześnie zapewnia odpowiedni poziom izolacji systemu main (aplikacje działają w piaskownicy) i pozwala na jednoznaczne zdefiniowanie uprawnień nadanych aplikacji w stylu CloudABI i Capsicum.

CZY BYŁEM używa modelu bezpieczeństwa opartego na zarządzaniu uprawnieniami, w ramach którego program może tylko celowo wykonywać autoryzowane czynności.

Podobnie jak w przypadku, gdy WebAssembly ogranicza dostęp na poziomie funkcji importu, WASI kontroluje dostęp do możliwości systemu.

Pliki, katalogi, gniazda i inne zasoby są powiązane ze specjalnym typem deskryptora pliku (pojemności), a aplikacja musi mieć uprawnienia do wykonywania akcji na każdym z zasobów.

Uprawnienia są zarządzane hierarchicznie, co oznacza, że ​​dostęp do katalogu jest automatycznie otwierany i dostęp do wszystkich zawartych w nim plików.

Ponieważ WebAssembly to niezależna od platformy wersja języka asemblera, użycie JIT może osiągnąć poziom wydajności zbliżony do kodu natywnego, przy zachowaniu możliwości działania na różnych platformach sprzętowych i systemach operacyjnych.

Obecnie projekt zapewnia moduł wasi-core z implementacją podstawowego API POSIX (pliki, gniazda itp.), W którym obecnie brakuje obsługi blokad i asynchronicznych operacji we / wy.

W przyszłości planowane jest stworzenie modułów z implementacją API do wykonywania operacji kryptograficznych, pracy z grafiką 3D, interakcji z czujnikami, operacji z procesami (wywołanie fork nie jest jeszcze obsługiwane) i przetwarzania danych multimedialnych.

Prototypy komponentów

Wasmtime to środowisko uruchomieniowe odpowiedzialne za uruchamianie aplikacji opartych na WebAssembly z rozszerzeniami WASI jako zwykłe samodzielne aplikacje.

Se obsługuje uruchamianie kodu bajtowego WebAssembly za pomocą specjalnego narzędzia wiersza poleceń oraz projektowanie gotowych do użycia plików wykonywalnych (program wasmtime jest wbudowany w aplikację jako biblioteka).

Aby osiągnąć odpowiedni poziom wydajności, wykorzystywany jest kompilator JIT oparty na generatorze kodu podniesienia uprawnień.

Lucet to kolejna wersja uruchomieniowa projektu Fastly (kod ma zostać opublikowany dzisiaj lub jutro).

SDK WASI- Narzędzia do kompilowania aplikacji C / C ++ w formacie webowym przy użyciu Clang 8.0.

Element docelowy z obsługą WASI dla języka Rust, który umożliwia kompilację kodu Rusta do zestawu WebAssembly.

Wasi-sysroot to implementacja standardowej biblioteki libc dla WASI, oparty na kodzie Musla, a także warstwę wykonawczą do tłumaczenia funkcji udostępnianych przez bibliotekę na wywołania systemowe różnych systemów operacyjnych w celu uzyskania możliwości uruchomienia aplikacji WASI na różnych systemach operacyjnych.

W ramach projektu rozwijana jest również biblioteka polyfill JavaScript z implementacją WASI do uruchamiania aplikacji w przeglądarce., co pozwala zastosować model kontroli dostępu „Możliwości” do kodu wykonywanego w przeglądarce.

W planach wspomina się o stworzeniu opartego na WASI systemu modułowego do integracji z izolowanymi aplikacjami plug-in z dodatkową funkcjonalnością dostarczaną w formacie WebAssembly.

Jednym z głównych zadań WebAssembly jest zapewnienie przenośności, przewidywalności zachowania i tożsamości wykonywania kodu na różnych platformach.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.