Wasmer 3.0 este disponibil, un instrumentar pentru crearea aplicațiilor bazate pe WebAssembly.

A treia versiune semnificativă a proiectului Wasmer, care dezvoltă un runtime pentru executarea modulelor WebAssembly, a fost lansată. Acesta poate fi utilizat pentru a crea aplicații universale, capabile să ruleze pe diferite sisteme de operare, precum și pentru executarea izolate a codului nesigur. Codul proiectului este scris în Rust și este distribuit sub licența MIT.

Capacitatea de a rula o aplicație pe diferite platforme este asigurată prin compilarea codului în cod intermediar de nivel scăzut WebAssembly, care poate fi executat pe orice sistem de operare sau încorporat în programe scrise în alte limbaje de programare. Programele constau în containere ușoare, în care se execută pseudocod WebAssembly. Acestea sunt independente de sistemul de operare și pot include cod scris inițial în orice limbaj de programare. Instrumentarul Emscripten poate fi folosit pentru a compila în WebAssembly. Pentru translația WebAssembly în cod mașină pentru platforma curentă, se sprijină conectarea diverselor backend-uri de compilare (Singlepass, Cranelift, LLVM) și motoare (activarea JIT sau generarea codului mașină).

Aplicațiile sunt izolate de sistemul principal într-un mediu sandbox și au acces doar la funcționalitatea declarată (mecanism de securitate bazat pe controlul capabilităților — pentru acțiuni asupra fiecărui resursă (fișiere, directoare, socket-uri, apeluri de sistem etc.), aplicației trebuie să i se acorde permisiunile corespunzătoare). Gestionarea accesului și interacțiunea cu sistemul sunt facilitate de API-ul WASI (WebAssembly System Interface), care oferă interfețe de programare pentru lucrul cu fișiere, socket-uri și alte funcții oferite de sistemul de operare.

Platforma permite obținerea unei performanțe de execuție a aplicațiilor apropiate de cea a implementărilor native. Prin intermediul Native Object Engine pentru modulul WebAssembly, este posibilă generarea codului mașină („wasmer compile —native” pentru generarea fișierelor obiect precompilate .so, .dylib și .dll), pentru execuția căruia este necesar un runtime minim, dar se păstrează toate posibilitățile de izolare sandbox. Este posibilă livrarea programelor precompilate cu Wasmer încorporat. API-urile Rust și Wasm-C-API sunt oferite pentru crearea extensiilor și suplimentelor.

Pentru a rula un container WebAssembly, este suficient să instalați în sistem runtime-ul Wasmer, care se furnizează fără dependențe externe ("curl https://get.wasmer.io -sSfL | sh"), și să rulați fișierul necesar ("wasmer test.wasm"). Programele sunt distribuite sub formă de module WebAssembly obișnuite, iar pentru gestionarea acestora se poate folosi managerul de pachete WAPM. Wasmer este disponibil și sub formă de bibliotecă, care poate fi utilizată pentru integrarea codului WebAssembly în programele scrise în Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir și Java.

Principalele schimbări în Wasmer 3.0:

  • A fost adăugată capacitatea de a crea fișiere executabile nativ pentru orice platformă. Comanda „wasmer create-exe” a fost complet reproiectată, permițând transformarea fișierelor cu cod intermediar WebAssembly în fișiere executabile autonome pentru platformele Linux, Windows și macOS, care pot funcționa fără instalarea Wasmer.
  • A fost introdusă capacitatea de a rula pachete WAPM, găzduite în directorul wapm.io, folosind comanda „wasmer run”. De exemplu, executarea „wasmer run python/python” va duce la descărcarea pachetului python din depozitul wapm.io și la rularea acestuia.
  • A fost complet reproiectat API-ul Wasmer Rust, în care stilul de gestionare a memoriei a fost modificat, oferind posibilitatea de a salva în siguranță obiectele Wasm în structura Store. A fost propusă o nouă structură MemoryView, care permite citirea și scrierea datelor în zona de memorie lineară.
  • A fost implementat un set de componente wasmer-js pentru a rula Wasmer în browser-ul web și pentru a interacționa cu acesta din JavaScript, folosind biblioteca wasm-bindgen. În ceea ce privește capacitățile, wasmer-js corespunde componentelor wasmer-sys, destinate rularii Wasmer în sisteme de operare obișnuite.
  • Motoarele au fost simplificate. În loc de motoare separate pentru JIT, legarea dinamică și statică (Universal, Dylib, StaticLib), acum este oferit un singur motor comun și gestionarea încărcării și salvării codului este controlată la nivelul parametrilor de configurare.
  • Pentru deserializarea artefactelor a fost utilizat cadrul rkyv, care permite funcționarea în modul zero-copy, adică fără a necesita alocarea de memorie suplimentară și executând deserializarea folosind doar bufferul inițial furnizat. Utilizarea rkyv a permis creșterea semnificativă a vitezei de lansare.
  • A fost îmbunătățit compilatorul Singlepass, care acum acceptă funcții cu mai mulți parametri (multi-value), fiabilitatea acestuia fiind crescută și adăugându-se suport pentru cadrele de gestionare a excepțiilor.
  • Implementarea API-ului WASI (WebAssembly System Interface) a fost îmbunătățită. Problemele din interfața sa pentru gestionarea sistemului de fișiere au fost rezolvate. Tipurile interne au fost reproiectate folosind WAI (WebAssembly Interfaces), ceea ce va permite în viitor implementarea unei serii de noi funcționalități.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster