Ir pieejams Wasmer 3.0 — rīku komplekts uz WebAssembly balstītu lietojumprogrammu izveidei

Tiek ieviests Wasmer projekta trešais lielais laidiens, kas izstrādā WebAssembly moduļu izpildes laiku, ko var izmantot, lai izveidotu universālas lietojumprogrammas, kas var darboties dažādās operētājsistēmās, kā arī izpildīt neuzticamu kodu atsevišķi. Projekta kods ir rakstīts Rust un tiek izplatīts saskaņā ar MIT licenci.

Iespēja darbināt vienu lietojumprogrammu dažādās platformās tiek nodrošināta, apkopojot kodu zema līmeņa WebAssembly starpkodā, kas var darboties jebkurā OS vai tikt iegults programmās citās programmēšanas valodās. Programmas ir vieglie konteineri, kuros darbojas WebAssembly pseidokods. Šie konteineri nav saistīti ar operētājsistēmu un var ietvert kodu, kas sākotnēji rakstīts jebkurā programmēšanas valodā. Emscripten rīkkopu var izmantot, lai kompilētu WebAssembly. Lai WebAssembly tulkotu pašreizējās platformas mašīnkodā, tas atbalsta dažādu kompilācijas aizmugursistēmu (Singlepass, Cranelift, LLVM) un dzinēju (izmantojot JIT vai mašīnkoda ģenerēšanu) savienojumu.

Lietojumprogrammas ir izolētas no galvenās sistēmas smilškastes vidē, un tām ir piekļuve tikai deklarētajai funkcionalitātei (drošības mehānisms, kas balstīts uz iespēju pārvaldību - darbībām ar katru resursu (faili, direktoriji, ligzdas, sistēmas izsaukumi utt.), pieteikumam ir jāpiešķir atbilstošas ​​pilnvaras). Piekļuves kontrole un mijiedarbība ar sistēmu tiek nodrošināta, izmantojot WASI (WebAssembly System Interface) API, kas nodrošina programmēšanas saskarnes darbam ar failiem, ligzdām un citām operētājsistēmas nodrošinātajām funkcijām.

Platforma ļauj sasniegt lietojumprogrammu izpildes veiktspēju tuvu vietējiem mezgliem. Izmantojot WebAssembly modulim Native Object Engine, varat ģenerēt mašīnkodu (“wasmer compile -native”, lai ģenerētu iepriekš kompilētus .so, .dylib un .dll objektu failus), kura palaišanai nepieciešams minimāls izpildlaiks, taču tiek saglabāta visa smilškastes izolācija. Iespējas. Ir iespējams piegādāt iepriekš kompilētas programmas ar iebūvētu Wasmer. Rust API un Wasm-C-API tiek piedāvāti, lai izveidotu papildinājumus un paplašinājumus.

Lai palaistu WebAssembly konteineru, vienkārši instalējiet Wasmer izpildlaika sistēmā, kas tiek nodrošināta bez ārējām atkarībām (“curl https://get.wasmer.io -sSfL | sh”), un palaidiet nepieciešamo failu (“wasmer test.wasm” ). Programmas tiek izplatītas parastu WebAssembly moduļu veidā, kurus var pārvaldīt, izmantojot WAPM pakotņu pārvaldnieku. Wasmer ir pieejama arī kā bibliotēka, ko var izmantot, lai iegultu WebAssembly kodu Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir un Java programmās.

Galvenās izmaiņas Wasmer 3.0 versijā:

  • Pievienota iespēja izveidot vietējos izpildāmos failus jebkurai platformai. Komanda "wasmer create-exe" ir pilnībā pārveidota, lai WebAssembly starpposma koda failu pārveidotu par Linux, Windows un macOS platformām paredzētiem autonomiem izpildāmiem failiem, kas var darboties, neinstalējot pašu Wasmer.
  • Ir iespējams palaist WAPM pakotnes, kas atrodas wapm.io direktorijā, izmantojot komandu “wasmer run”. Piemēram, palaižot "wasmer run python/python", python pakotne tiks lejupielādēta no wapm.io krātuves un palaistu to.
  • Wasmer Rust API ir pilnībā pārveidota, mainot stilu darbam ar atmiņu un nodrošinot iespēju droši saglabāt Wasm objektus veikala struktūrā. Ir ierosināta jauna MemoryView struktūra, kas ļauj nolasīt un ierakstīt datus lineārā atmiņas apgabalā.
  • Wasmer-js komponentu kopa ir ieviesta, lai palaistu Wasmer tīmekļa pārlūkprogrammā un mijiedarbotos ar to no JavaScript, izmantojot bibliotēku wasm-bindgen. Pēc savām iespējām wasmer-js atbilst wasmer-sys komponentiem, kas paredzēti Wasmer palaišanai parastajās operētājsistēmās.
  • Dzinēji ir vienkāršoti. Atsevišķu dzinēju vietā JIT, dinamiskajai un statiskajai saitei (Universal, Dylib, StaticLib) tagad tiek piedāvāts viens kopīgs dzinējs, un koda ielāde un saglabāšana tiek kontrolēta parametru iestatīšanas līmenī.
  • Artefaktu deserializēšanai tiek izmantots rkyv ietvars, kas nodrošina darbību nulles kopijas režīmā, t.i. kas neprasa papildu atmiņas piešķiršanu un veic deserializāciju tikai izmantojot sākotnēji nodrošināto buferi. Rkyv izmantošana ir ievērojami palielinājusi palaišanas ātrumu.
  • Ir uzlabots Singlepass vienas piespēles kompilators, pievienojot atbalstu vairāku vērtību funkcijām, uzlabotu uzticamību un pievienoto atbalstu izņēmumu apstrādes kadriem.
  • Uzlabota WASI (WebAssembly System Interface) API ieviešana. Problēmas WASI programmatūras saskarnē darbam ar failu sistēmu ir atrisinātas. Iekšējie veidi ir pārveidoti, izmantojot WAI (WebAssembly Interfaces), kas nākotnē nodrošinās virkni jaunu funkciju.

Avots: opennet.ru

Pievieno komentāru