Wasmer 2.0, ilaro por konstruado de WebAssembly-bazitaj aplikoj, estas havebla

La projekto Wasmer publikigis sian duan gravan eldonon, disvolvante rultempon por ekzekuti WebAssembly-modulojn, kiuj povas esti uzataj por krei universalajn aplikojn, kiuj povas funkcii per malsamaj operaciumoj, kaj ankaŭ por ruli nefiditan kodon izole. La projektkodo estas skribita en Rust kaj estas distribuita sub la MIT-licenco.

Portebleco estas atingita kompilante aplikaĵokodon en malaltnivelan WebAssembly mezan kodon, kiu povas funkcii per iu ajn OS aŭ esti enigita en programoj en aliaj programlingvoj. La programoj estas malpezaj ujoj kiuj rulas WebAssembly pseŭdokodon. Ĉi tiuj ujoj ne estas ligitaj al la operaciumo kaj povas inkluzivi kodon originale skribitan en iu ajn programlingvo. La ilaro Emscripten povas esti uzata por kompili al WebAssembly. Por traduki WebAssembly en maŝinkodon de la nuna platformo, ĝi subtenas la ligon de diversaj kompilaj backends (Singlepass, Cranelift, LLVM) kaj motoroj (uzante JIT aŭ maŝinkodgeneracion).

Alirkontrolo kaj interagado kun la sistemo estas provizitaj per la API WASI (WebAssembly System Interface), kiu disponigas programajn interfacojn por labori kun dosieroj, ingoj kaj aliaj funkcioj disponigitaj de la operaciumo. Aplikoj estas izolitaj de la ĉefa sistemo en sablokesto-medio kaj havas aliron nur al la deklarita funkcieco (sekureca mekanismo bazita sur kapablo-administrado - por agoj kun ĉiu el la rimedoj (dosieroj, dosierujoj, ingoj, sistemvokoj, ktp.), la apliko devas ricevi la taŭgajn povojn).

Por lanĉi WebAssembly-ujon, simple instalu Wasmer en la rultempa sistemo, kiu venas sen eksteraj dependecoj ("curl https://get.wasmer.io -sSfL | sh"), kaj rulu la necesan dosieron ("wasmer test.wasm" ). Programoj estas distribuitaj en la formo de regulaj WebAssembly-moduloj, kiuj povas esti administritaj per la pakaĵmanaĝero WAPM. Wasmer ankaŭ haveblas kiel biblioteko, kiu povas esti uzata por enigi WebAssembly-kodon en Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, kaj Java programojn.

La platformo ebligas al vi atingi aplikaĵan ekzekutadon proksime al indiĝenaj asembleoj. Uzante la Native Object Engine por la WebAssembly-modulo, vi povas generi maŝinkodon ("wasmer compile -native" por generi antaŭkompilitajn .so, .dylib kaj .dll-objektajn dosierojn), kiu postulas minimuman rultempon por funkcii, sed konservas la tutan sablokestan izolitecon. Trajtoj. Eblas provizi antaŭkompilitajn programojn kun enkonstruita Wasmer. La Rust API kaj Wasm-C-API estas ofertitaj por krei aldonaĵojn kaj etendaĵojn.

Signifa ŝanĝo en la versio de Wasmer estas asociita kun la enkonduko de nekongruaj ŝanĝoj al la interna API, kiu, laŭ la programistoj, ne influos 99% de platformaj uzantoj. Inter la ŝanĝoj, kiuj rompas kongruecon, estas ankaŭ ŝanĝo en la formato de seriigitaj Wasm-moduloj (moduloj seriigitaj en Wasmer 1.0 ne povos esti uzataj en Wasmer 2.0). Aliaj ŝanĝoj:

  • Subteno por SIMD (Single Instruction, Multiple Data) instrukcioj, permesante paraleligon de datenoperacioj. Areoj en kiuj la uzo de SIMD povas signife plibonigi efikecon inkludas maŝinlernadon, videokodigon kaj malkodigon, bildprilaboradon, fizikan procezsimuladon, kaj grafikan manipuladon.
  • Subteno por referencspecoj, permesante al Wasm-moduloj aliri informojn en aliaj moduloj aŭ en la subesta medio.
  • Gravaj agado-optimumigoj estis faritaj. La rapideco de LLVM rultempo kun glitkomaj nombroj estis pliigita je proksimume 50%. Funkciaj vokoj estis signife akcelitaj reduktante situaciojn postulantajn aliron al la kerno. Agado de la generatoro de kodo de Cranelift pliiĝis je 40%. Reduktita datumdezeriigo tempo.
    Wasmer 2.0, ilaro por konstruado de WebAssembly-bazitaj aplikoj, estas havebla
    Wasmer 2.0, ilaro por konstruado de WebAssembly-bazitaj aplikoj, estas havebla
  • Por pli precize reflekti la esencon, la nomoj de la motoroj estis ŝanĝitaj: JIT → Universala, Indiĝena → Dylib (Dinamika Biblioteko), Objekta Dosiero → StaticLib (Statika Biblioteko).

fonto: opennet.ru

Aldoni komenton