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

Wasmer projekts ir izlaidis savu otro lielāko izlaidumu, izstrādājot izpildlaiku WebAssembly moduļu izpildei, ko var izmantot, lai izveidotu universālas lietojumprogrammas, kuras var darboties dažādās operētājsistēmās, kā arī palaist neuzticamu kodu atsevišķi. Projekta kods ir rakstīts Rust un tiek izplatīts saskaņā ar MIT licenci.

Pārnesamība tiek panākta, apkopojot lietojumprogrammas 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.

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. 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).

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.

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.

Būtiskas izmaiņas Wasmer versijas numurā ir saistītas ar nesaderīgu izmaiņu ieviešanu iekšējā API, kas, pēc izstrādātāju domām, neskars 99% platformas lietotāju. Starp izmaiņām, kas pārkāpj saderību, ir arī izmaiņas serializēto Wasm moduļu formātā (Wasmer 1.0 serializētos moduļus nevarēs izmantot Wasmer 2.0). Citas izmaiņas:

  • SIMD (Single Instruction, Multiple Data) instrukciju atbalsts, kas ļauj paralēli veikt datu darbības. Jomas, kurās SIMD izmantošana var ievērojami uzlabot veiktspēju, ietver mašīnmācīšanos, video kodēšanu un dekodēšanu, attēlu apstrādi, fizisko procesu simulāciju un grafikas manipulācijas.
  • Atbalsts atsauces veidiem, kas ļauj Wasm moduļiem piekļūt informācijai citos moduļos vai pamatā esošajā vidē.
  • Ir veiktas ievērojamas veiktspējas optimizācijas. LLVM izpildlaika ātrums ar peldošā komata skaitļiem ir palielināts par aptuveni 50%. Funkciju izsaukumi ir ievērojami paātrināti, samazinot situācijas, kurās nepieciešama piekļuve kodolam. Cranelift koda ģeneratora veiktspēja ir palielināta par 40%. Samazināts datu deserializācijas laiks.
    Ir pieejams Wasmer 2.0 — rīku komplekts uz WebAssembly balstītu lietojumprogrammu izveidei
    Ir pieejams Wasmer 2.0 — rīku komplekts uz WebAssembly balstītu lietojumprogrammu izveidei
  • Lai precīzāk atspoguļotu būtību, ir mainīti dzinēju nosaukumi: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

Avots: opennet.ru

Pievieno komentāru