Wasmer 3.0, amûrek ji bo avakirina serîlêdanên WebAssembly-ê, heye.

Sêyemîn serbestberdana mezin a projeya Wasmer tê destnîşan kirin, ku ji bo darvekirina modulên WebAssembly demek xebitandinê pêş dixe, ku dikare were bikar anîn da ku serîlêdanên gerdûnî yên ku dikarin li ser pergalên xebitandinê yên cihêreng bixebitin, û her weha ji bo pêkanîna koda nebawer bi veqetandinê bikar bînin. Koda projeyê bi Rust hatî nivîsandin û di bin lîsansa MIT-ê de tê belav kirin.

Hêza xebitandina yek serîlêdanê li ser platformên cihêreng bi berhevkirina kodê di koda navber a WebAssembly ya nizm de, ku dikare li ser her OS-ê bixebite an jî di bernameyên bi zimanên din ên bernamekirinê de were bicîh kirin, tê peyda kirin. Bername konteynerên sivik in ku WebAssembly pseudocode dimeşînin. Van konteyneran bi pergala xebitandinê ve ne girêdayî ne û dikarin koda ku bi eslê xwe bi her zimanek bernamesaziyê hatî nivîsandin vehewînin. Amûra Emscripten dikare ji bo berhevkirina WebAssembly were bikar anîn. Ji bo wergerandina WebAssembly li koda makîneya platforma heyî, ew piştgirî dide girêdana paşnavên berhevokê yên cihêreng (Singlepass, Cranelift, LLVM) û motoran (bi karanîna JIT an hilberîna koda makîneyê).

Serlêdan ji pergala sereke di hawîrdorek sandboxê de têne veqetandin û tenê gihîştina fonksiyona diyarkirî (mekanîzmayek ewlehiyê ya ku li ser bingeha rêveberiya kapasîteyê ye - ji bo çalakiyên bi her yek ji çavkaniyan (pel, peldank, soket, bangên pergalê, hwd.), serîlêdanê divê hêzên guncan bêne dayîn). Kontrola gihîştinê û danûstendina bi pergalê re bi karanîna API-ya WASI (WebAssembly System Interface) tê peyda kirin, ku ji bo xebata bi pelan, soketan û fonksiyonên din ên ku ji hêla pergala xebitandinê ve têne peyda kirin, navbeynkariya bernameyê peyda dike.

Platform dihêle hûn performansa darvekirina serîlêdanê li nêzî meclîsên xwecihî bi dest bixin. Bi karanîna Engine Object Native ji bo modula WebAssembly, hûn dikarin koda makîneyê biafirînin ("wasmer compile -native" da ku pelên objeya .so, .dylib û .dll berî berhevkirî çêbike), ku ji bo xebitandinê dema xebitandinê hindiktirîn hewce dike, lê hemî veqetandina sandboxê digire. taybetmendiyên. Mimkun e ku bernameyên pêş-kompilkirî bi Wasmer-a çêkirî re peyda bikin. Rust API û Wasm-C-API ji bo afirandina pêvek û pêvekan têne pêşkêş kirin.

Ji bo destpêkirina konteynerek WebAssembly, tenê Wasmer-ê di pergala xebitandinê de saz bikin, ku bêyî girêdanên derveyî tê ("curl https://get.wasmer.io -sSfL | sh"), û pelê pêwîst bimeşînin ("wasmer test.wasm" ). Bername di forma modulên WebAssembly yên birêkûpêk de têne belav kirin, ku dikarin bi karanîna rêveberê pakêtê WAPM ve werin rêvebirin. Wasmer di heman demê de wekî pirtûkxaneyek heye ku dikare were bikar anîn da ku koda WebAssembly di bernameyên Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, û Java de bi cih bike.

Guhertinên sereke di Wasmer 3.0 de:

  • Kapasîteya ku ji bo her platformê pelên darvekirî yên xwemalî biafirîne zêde kir. Fermana "wasmer create-exe" bi tevahî ji nû ve hatî sêwirandin da ku pelek kodê ya navbeynkar WebAssembly veguhezîne kargêrên xweser ên ji bo platformên Linux, Windows, û macOS-ê ku dikarin bêyî sazkirina Wasmer bixwe bimeşin.
  • Bi karanîna fermana "wasmer run" gengaz e ku pakêtên WAPM-ê yên ku di pelrêça wapm.io de cih digirin dest pê bikin. Mînakî, xebitandina "wasmer run python/python" dê pakêta python ji depoya wapm.io dakêşîne û wê bixebitîne.
  • Wasmer Rust API bi tevahî ji nû ve hatî sêwirandin, şêwaza xebata bi bîranînê diguhezîne û şiyana hilanîna bi ewlehî tiştên Wasm di avahiya Store de peyda dike. Avahiyek nû ya MemoryView hate pêşniyar kirin ku destûrê dide xwendin û nivîsandina daneyan li herêmek bîranîna xêzkirî.
  • Komek pêkhateyên wasmer-js hatine bicîh kirin ku Wasmer di gerokek webê de bimeşîne û bi karanîna pirtûkxaneya wasm-bindgen re ji JavaScript-ê pê re têkilî daynin. Di kapasîteyên xwe de, wasmer-js bi pêkhateyên wasmer-sys re têkildar e ku ji bo xebitandina Wasmer li ser pergalên xebitandinê yên birêkûpêk hatine çêkirin.
  • Motor hatine hêsan kirin. Li şûna motorên cihêreng ên ji bo JIT, girêdana dînamîk û statîk (Universal, Dylib, StaticLib), naha motorek hevpar tê pêşkêş kirin, û barkirin û tomarkirina kodê di asta mîhengê de tê kontrol kirin.
  • Ji bo deserialîzekirina huneran, çarçoveya rkyv tê bikar anîn, ku operasyonê di moda sifir-kopî de misoger dike, ango. ku hewcedariya veqetandina bîranîna zêde tune û deserialîzasyonê tenê bi karanîna tampona destpêkê ya peydakirî pêk tîne. Bikaranîna rkyv leza destpêkê bi girîngî zêde kiriye.
  • Berhevkarê yek-pass-a Singlepass-ê hatî çêtir kirin, piştgirî ji bo fonksiyonên pir-nirxî, pêbaweriya çêtir, û piştgirî zêde kir ji bo çarçoveyên hilgirtina îstîsnayan.
  • Pêkanîna çêtir a API-ya WASI (Interface Pergala WebAssembly). Pirsgirêkên di navgîniya nermalava WASI de ji bo xebata bi pergala pelê re çareser bûne. Cûreyên hundurîn bi karanîna WAI (Interfaces WebAssembly) ji nû ve hatine sêwirandin, ku dê di pêşerojê de rêzek taybetmendiyên nû çalak bike.

Source: opennet.ru

Add a comment