Wasmer 2.0 jest dostępny, narzędzie do tworzenia aplikacji opartych na WebAssembly

Odbędzie się drugie istotne wydanie projektu Wasmer, rozwijającego runtime do uruchamiania modułów WebAssembly, który można wykorzystać do tworzenia uniwersalnych aplikacji zdolnych do działania w różnych systemach operacyjnych, a także do izolowanego wykonywania nieufnego kodu. Kod projektu jest napisany w języku Rust i rozprowadzany na licencji MIT.

Przenośność zapewniana jest poprzez kompilację kodu aplikacji do niskopoziomowego kodu pośredniego WebAssembly, który może działać w dowolnych systemach operacyjnych lub być wbudowywany w programy napisane w innych językach programowania. Programy są lekkimi kontenerami, w których wykonywany jest pseudokod WebAssembly. Te kontenery nie są związane z systemem operacyjnym i mogą zawierać kod napisany w dowolnym języku programowania. Do kompilacji do WebAssembly można wykorzystać narzędzia Emscripten. Aby przetłumaczyć WebAssembly na kod maszynowy bieżącej platformy, wspierane jest podłączanie różnych backendów kompilacji (Singlepass, Cranelift, LLVM) i silników (wykorzystanie JIT lub generowanie kodu maszynowego).

Управление доступом и взаимодействие с системой обеспечивается при помощи API WASI (WebAssembly System Interface), предоставляющем программные интерфейсы для работы с файлами, сокетами и другими функциями, предоставляемыми операционной системой. Приложения изолированы от основной системы в sandbox-окружении и имеют доступ только к заявленной функциональности (механизм безопасности на основе управления возможностями — для действий с каждым из ресурсов (файлы, каталоги, сокеты, системные вызовы и т.п.) приложению должны быть даны соответствующие полномочия).

Aby uruchomić kontener WebAssembly, wystarczy zainstalować w systemie runtime Wasmer, który jest dostarczany bez zewnętrznych zależności ("curl https://get.wasmer.io -sSfL | sh"), a następnie uruchomić odpowiedni plik ("wasmer test.wasm"). Programy są dystrybuowane w postaci zwykłych modułów WebAssembly, którymi można zarządzać za pomocą menedżera pakietów WAPM. Wasmer jest również dostępny w formie biblioteki, którą można wykorzystać do wbudowywania kodu WebAssembly w programy w językach Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir i Java.

Platforma pozwala osiągnąć wydajność wykonywania aplikacji bliską wykonaniu natywnych kompilacji. Za pomocą Native Object Engine dla modułu WebAssembly można wygenerować kod maszynowy („wasmer compile --native” do generowania wstępnie skompilowanych plików obiektowych .so, .dylib i .dll), do uruchomienia którego wymagany jest minimalny runtime, ale zachowane są wszystkie możliwości izolacji sandbox. Istnieje możliwość dostarczenia wstępnie skompilowanych programów z wbudowanym Wasmerem. Do tworzenia nakładek i rozszerzeń oferowane są interfejsy API Rust i Wasm-C-API.

Znacząca zmiana numeru wersji Wasmer związana jest z wprowadzeniem zmian naruszających zgodność w wewnętrznym API, które, jak zapewniają deweloperzy, nie wpłyną w żaden sposób na 99% użytkowników platformy. Do zmian naruszających zgodność zalicza się także przekształcenie formatu serializowanych modułów Wasm (moduły serializowane w Wasmer 1.0 nie będą mogły być używane w Wasmer 2.0). Inne zmiany:

  • Wsparcie dla instrukcji SIMD (Single Instruction, Multiple Data), które pozwalają na równoległe przetwarzanie operacji na danych. Z obszarów, w których zastosowanie SIMD może znacznie zwiększyć wydajność, wymienia się uczenie maszynowe, kodowanie i dekodowanie wideo, przetwarzanie obrazów, symulację procesów fizycznych i manipulacje grafiką.
  • Wsparcie dla typów odwołaniowych, umożliwiających modułom Wasm dostęp do informacji w innych modułach lub w podstawowym środowisku.
  • Przeprowadzono znaczne optymalizacje wydajności. Prędkość działania runtime LLVM z liczbami zmiennoprzecinkowymi wzrosła o około 50%. Znacznie przyspieszono wywoływanie funkcji dzięki zmniejszeniu sytuacji wymagających dostępu do rdzenia. Wydajność generatora kodu Cranelift wzrosła o 40%. Skrócono czas deserializacji danych.
    Wasmer 2.0 jest dostępny, narzędzie do tworzenia aplikacji opartych na WebAssembly
    Wasmer 2.0 jest dostępny, narzędzie do tworzenia aplikacji opartych na WebAssembly
  • Для более точного отражения сути изменены названия движков: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

Ź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