Wasmer 3.0 Àr tillgÀngligt, ett verktyg för att skapa applikationer baserade pÄ WebAssembly

Det tredje viktiga utgÄvan av Wasmer-projektet har presenterats, som utvecklar en runtime för att köra WebAssembly-moduler, vilket kan anvÀndas för att skapa universella applikationer som kan köras pÄ olika operativsystem, samt för isolerat körande av osÀker kod. Projektets kod Àr skriven i Rust och distribueras under MIT-licens.

Möjligheten att köra en applikation pÄ olika plattformar möjliggörs genom att koden kompileras till lÄg nivÄ WebAssembly-intermediÀr kod, som kan köras pÄ alla operativsystem eller integreras i program skrivna i andra programmeringssprÄk. Programmen utgör lÀtta containrar dÀr WebAssembly-pseudokod körs. Dessa containrar Àr oberoende av operativsystemet och kan innehÄlla kod som ursprungligen skrivits i valfritt programmeringssprÄk. Emscripten-verktyget kan anvÀndas för kompilering till WebAssembly. För översÀttning av WebAssembly till maskinkod för den aktuella plattformen stöds koppling av olika kompilatorbackends (Singlepass, Cranelift, LLVM) och motorer (anvÀndning av JIT eller maskinkodsgenerering).

Applikationer Ă€r isolerade frĂ„n det huvudsakliga systemet i en sandbox-miljö och har endast tillgĂ„ng till den angivna funktionaliteten (sĂ€kerhetsmekanismen baserad pĂ„ kapabilitetshantering — för Ă„tgĂ€rder med varje resurs (filer, kataloger, sockets, systemanrop etc.) mĂ„ste motsvarande behörigheter ges till applikationen). Åtkomstkontroll och interaktion med systemet sĂ€kerstĂ€lls genom API WASI (WebAssembly System Interface), som tillhandahĂ„ller programgrĂ€nssnitt för arbete med filer, sockets och andra funktioner som tillhandahĂ„lls av operativsystemet.

Plattformen möjliggör att uppnĂ„ en prestanda för applikationskörning som liknar prestandan av inbyggda kompileringar. Genom Native Object Engine för WebAssembly-moduler kan maskinkod genereras ("wasmer compile —native" för att generera förkompilerade objektsfiler .so, .dylib och .dll), vilket krĂ€ver minimal runtime för körning, men behĂ„ller alla möjligheter för sandbox-isolering. För leverans av förkompilerade program finns inbyggd Wasmer. För att skapa tillĂ€gg och modifieringar erbjuds Rust API och Wasm-C-API.

För att köra en WebAssembly-container rÀcker det med att installera runtime Wasmer i systemet, som levereras utan externa beroenden ("curl https://get.wasmer.io -sSfL | sh") och sedan köra den nödvÀndiga filen ("wasmer test.wasm"). Programmen distribueras i form av vanliga WebAssembly-moduler, som kan hanteras med paketförvaltaren WAPM. Wasmer finns ocksÄ som ett bibliotek som kan anvÀndas för att integrera WebAssembly-kod i program skrivna i Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir och Java.

HuvudÀndringarna i Wasmer 3.0:

  • Möjlighet att skapa inhemska körbara filer för alla plattformar har lagts till. Kommandot "wasmer create-exe" har omarbetats helt, vilket gör det möjligt att konvertera en WebAssembly-intermediĂ€rkodfil till sjĂ€lvstĂ€ndiga körbara filer för plattformarna Linux, Windows och macOS, som kan köras utan att Wasmer behöver installeras.
  • Möjlighet att köra WAPM-paket, som Ă€r placerade i katalogen wapm.io, med hjĂ€lp av kommandot „wasmer run“. Till exempel, genom att köra „wasmer run python/python“ kommer paketet python att laddas frĂ„n wapm.io-repositoriet och köras.
  • Wasmer Rust API har genomgĂ„tt en fullstĂ€ndig omarbetning, dĂ€r arbetsstilen med minnet har Ă€ndrats och sĂ€ker lagring av Wasm-objekt i struktur Store har möjliggjorts. En ny struktur MemoryView erbjuder möjligheten att lĂ€sa och skriva data i det linjĂ€ra minnesomrĂ„det.
  • Ett set av komponenter wasmer-js har implementerats för att köra Wasmer i webblĂ€saren och interagera med det via JavaScript, med hjĂ€lp av biblioteket wasm-bindgen. Wasmer-js motsvarar komponenterna wasmer-sys, avsedda för att köra Wasmer pĂ„ vanliga operativsystem.
  • Motorerna har förenklats. IstĂ€llet för separata motorer för JIT, dynamisk och statisk lĂ€nkning (Universal, Dylib, StaticLib) erbjuds nu en gemensam motor dĂ€r laddning och lagring av kod hanteras pĂ„ parameterinstĂ€llningsnivĂ„.
  • För deserialisering av artefakter anvĂ€nds ramverket rkyv som sĂ€kerstĂ€ller arbete i zero-copy-lĂ€ge, vilket innebĂ€r att ingen extra minnesallokering krĂ€vs och att deserialiseringen utförs endast med den ursprungligen tillhandahĂ„llna bufferten. AnvĂ€ndningen av rkyv har avsevĂ€rt ökat starttiden.
  • Den enpassiga kompilatorn Singlepass har förbĂ€ttrats med stöd för funktioner med flera argument (multi-value), ökad driftssĂ€kerhet och stöd för undantagshanteringsramar har lagts till.
  • Implementeringen av API WASI (WebAssembly System Interface) har förbĂ€ttrats. Problem i WASI-grĂ€nssnittet för filsystemshantering har Ă„tgĂ€rdats. Inre typer har omarbetats med WAI (WebAssembly Interfaces), vilket i framtiden kommer att göra det möjligt att implementera en serie nya funktioner.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster