Wasmer 3.0, e Toolkit fir Uwendungen ze kreéieren baséiert op WebAssembly, ass verfügbar

Déi drëtt grouss Verëffentlechung vum Wasmer-Projet gëtt agefouert, deen e Runtime entwéckelt fir WebAssembly Moduler auszeféieren, déi benotzt kënne ginn fir universell Uwendungen ze kreéieren déi op verschiddene Betribssystemer lafen kënnen, wéi och fir net vertraute Code isoléiert auszeféieren. De Projet Code ass a Rust geschriwwen a gëtt ënner der MIT Lizenz verdeelt.

D'Kapazitéit fir eng Applikatioun op verschiddene Plattformen ze lafen gëtt zur Verfügung gestallt andeems de Code an Low-Level WebAssembly Zwëschencode kompiléiert gëtt, deen op all OS kann lafen oder a Programmer an anere Programméierungssproochen agebonne ginn. D'Programmer si liicht Behälter déi WebAssembly Pseudocode lafen. Dës Container sinn net un de Betribssystem gebonnen a kënnen Code enthalen, déi ursprénglech an all Programméierungssprooch geschriwwe sinn. Den Emscripten Toolkit kann benotzt ginn fir op WebAssembly ze kompiléieren. Fir WebAssembly a Maschinncode vun der aktueller Plattform z'iwwersetzen, ënnerstëtzt se d'Verbindung vu verschiddene Kompiléierungsbackends (Singlepass, Cranelift, LLVM) a Motoren (mat JIT oder Maschinncode Generatioun).

Uwendungen sinn aus dem Haaptsystem an engem Sandbox Ëmfeld isoléiert an hunn Zougang nëmmen zu der deklaréierter Funktionalitéit (e Sécherheetsmechanismus baséiert op Kapazitéitsmanagement - fir Aktiounen mat jiddereng vun de Ressourcen (Dateien, Verzeichnisser, Sockets, System Uruff, etc.), Applikatioun muss déi entspriechend Muechten kréien). Zougangskontroll an Interaktioun mam System gëtt mat der WASI (WebAssembly System Interface) API zur Verfügung gestallt, déi Programméierungsinterfaces ubitt fir mat Dateien, Sockets an aner Funktiounen vum Betribssystem ze schaffen.

D'Plattform erlaabt Iech Applikatioun Ausféierung Leeschtung no bei gebierteg Versammlungen ze erreechen. Mat der Native Object Engine fir de WebAssembly Modul kënnt Dir Maschinncode generéieren ("wasmer compile -native" fir virkompiléiert .so, .dylib an .dll Objektdateien ze generéieren), déi minimal Runtime erfuerdert fir ze lafen, awer behält all Sandbox Isolatioun Eegeschaften. Et ass méiglech virkompiléiert Programmer mat agebaute Wasmer ze liwweren. De Rust API a Wasm-C-API ginn ugebueden fir Add-ons an Extensiounen ze kreéieren.

Fir e WebAssembly Container ze lancéieren, installéiere just Wasmer am Runtime System, deen ouni extern Ofhängegkeete kënnt ("curl https://get.wasmer.io -sSfL | sh"), a lafen déi néideg Datei ("wasmer test.wasm" ). Programmer ginn a Form vu reguläre WebAssembly Moduler verdeelt, déi mat dem WAPM Package Manager verwalt kënne ginn. Wasmer ass och verfügbar als Bibliothéik déi benotzt ka ginn fir WebAssembly Code a Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir a Java Programmer z'integréieren.

Grouss Ännerungen am Wasmer 3.0:

  • D'Fäegkeet bäigefüügt fir gebierteg ausführbar Dateie fir all Plattform ze kreéieren. De Kommando "wasmer create-exe" gouf komplett nei entworf fir eng WebAssembly Zwëschencodedatei an selbstänneg Ausführbaren fir Linux, Windows a MacOS Plattformen ze konvertéieren déi kënne lafen ouni Wasmer selwer z'installéieren.
  • Et ass méiglech WAPM Packagen ze lancéieren, déi am wapm.io Verzeichnis sinn mam Kommando "wasmer run". Zum Beispill, laafen "wasmer run python/python" wäert de Python Package vum wapm.io Repository eroflueden a lafen.
  • D'Wasmer Rust API gouf komplett nei designt, ännert de Stil vun der Aarbecht mat Erënnerung a bitt d'Fäegkeet Wasm Objete sécher an der Store Struktur ze späicheren. Eng nei MemoryView Struktur gouf proposéiert, datt d'Liesen a Schreiwen Daten zu engem linear Erënnerung Beräich erlaabt.
  • E Set vu wasmer-js Komponente gouf implementéiert fir Wasmer an engem Webbrowser ze lafen an domat aus JavaScript ze interagéieren mat der wasm-bindgen Bibliothéik. A senge Fäegkeeten entsprécht wasmer-js de wasmer-sys Komponenten entworf fir Wasmer op normale Betribssystemer ze lafen.
  • Motore goufen vereinfacht. Amplaz vun getrennten Motore fir JIT, dynamesch a statesch Verknëppung (Universal, Dylib, StaticLib), gëtt elo ee gemeinsame Motor ugebueden, an de Luede a Spuere Code gëtt kontrolléiert um Niveau vun de Parameteren.
  • Fir Artefakte ze deserialiséieren, gëtt de rkyv Kader benotzt, wat d'Operatioun am Nullkopiemodus garantéiert, d.h. déi keng zousätzlech Erënnerungsallokatioun erfuerdert an d'Deserialiséierung ausféiert nëmme mat der ursprénglecher geliwwertem Puffer. D'Benotzung vu rkyv huet d'Startgeschwindegkeet wesentlech erhéicht.
  • Den Singlepass Single-Pass Compiler gouf verbessert, bäidréit Ënnerstëtzung fir Multi-Wäertfunktiounen, verbessert Zouverlässegkeet, a bäigefüügt Ënnerstëtzung fir Ausnam Handhabung Rummen.
  • Verbesserte Implementatioun vun der WASI (WebAssembly System Interface) API. Probleemer an der WASI Software Interface fir mam Dateiesystem ze schaffen sinn geléist ginn. Intern Typen goufen nei designt mat WAI (WebAssembly Interfaces), déi eng Serie vun neie Fonctiounen an Zukunft erlaben.

Source: opennet.ru

Setzt e Commentaire