Wasmer 2.0, WebAssembly-n oinarritutako aplikazioak eraikitzeko tresna-kit bat dago eskuragarri

Wasmer proiektuak bere bigarren bertsio nagusia kaleratu du, WebAssembly moduluak exekutatzeko exekuzio-denbora garatuz, sistema eragile ezberdinetan exekutatu daitezkeen aplikazio unibertsalak sortzeko erabil daitekeena, baita fidagarria ez den kodea modu isolatuan exekutatzeko ere. Proiektuaren kodea Rust-en idatzita dago eta MIT lizentziapean banatzen da.

Eramangarritasuna aplikazio-kodea behe-mailako WebAssembly bitarteko kode batean konpilatuz lortzen da, edozein OStan exekutatu daitekeena edo beste programazio-lengoaia batzuetako programetan txerta daitekeena. Programak WebAssembly pseudokodea exekutatzen duten edukiontzi arinak dira. Edukiontzi hauek ez daude sistema eragileari lotuta eta jatorriz edozein programazio-lengoaian idatzitako kodea sar dezakete. Emscripten tresna-kit bat WebAssembly-ra konpilatzeko erabil daiteke. WebAssembly egungo plataformako makina-kodera itzultzeko, hainbat konpilazio backend (Singlepass, Cranelift, LLVM) eta motor (JIT edo makina-kodeen sorkuntza erabiliz) konexioa onartzen du.

Sarbide-kontrola eta sistemarekiko interakzioa WASI (WebAssembly System Interface) APIaren bidez ematen da, sistema eragileak fitxategi, socket eta bestelako funtzioekin lan egiteko programazio interfazeak eskaintzen dituena. Aplikazioak sistema nagusitik isolatuta daude sandbox ingurunean eta deklaratutako funtzionalitaterako soilik dute sarbidea (gaitasunen kudeaketan oinarritutako segurtasun-mekanismoa - baliabide bakoitzarekin (fitxategiak, direktorioak, socketak, sistema-deiak, etab.) ekintzetarako. aplikazioari dagozkion eskumenak eman behar zaizkio).

WebAssembly edukiontzi bat abiarazteko, instalatu Wasmer exekuzio-sisteman, kanpoko menpekotasunik gabe datorrena ("curl https://get.wasmer.io -sSfL | sh") eta exekutatu beharrezko fitxategia ("wasmer test.wasm" ). Programak WebAssembly modulu arruntetan banatzen dira, WAPM pakete-kudeatzailea erabiliz kudeatu daitezkeenak. Wasmer WebAssembly kodea Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir eta Java programetan txertatzeko erabil daitekeen liburutegi gisa ere eskuragarri dago.

Plataformak aplikazioen exekuzio-errendimendua lortzeko aukera ematen du jatorrizko muntatzeetatik gertu. WebAssembly modulurako Native Object Engine-a erabiliz, makina-kodea sor dezakezu ("wasmer compile -native" aurrez konpilatutako .so, .dylib eta .dll objektu-fitxategiak sortzeko), exekutatzeko gutxieneko denbora eskatzen duena, baina sandbox isolamendu guztia mantentzen du. Ezaugarriak. Aurrez konpilatutako programak Wasmer integratuta hornitzea posible da. Rust API eta Wasm-C-API gehigarriak eta luzapenak sortzeko eskaintzen dira.

Wasmer-en bertsio-zenbakiaren aldaketa nabarmena barneko APIan aldaketa bateraezinak sartzearekin lotzen da, eta horrek, garatzaileen arabera, ez dio plataformako erabiltzaileen %99ri eragingo. Bateragarritasuna hausten duten aldaketen artean, serieko Wasm moduluen formatuan ere aldaketa bat dago (Wasmer 1.0-n seriatutako moduluak ezin izango dira Wasmer 2.0-n erabili). Beste aldaketa batzuk:

  • SIMD (Single Instruction, Multiple Data) argibideetarako euskarria, datu-eragiketak paralelizatzea ahalbidetuz. SIMD erabiltzeak errendimendua nabarmen hobetu dezakeen arloetan, besteak beste, ikasketa automatikoa, bideoen kodeketa eta deskodeketa, irudien prozesamendua, prozesu fisikoaren simulazioa eta manipulazio grafikoa daude.
  • Erreferentzia motetarako laguntza, Wasm moduluei beste moduluetako edo azpiko inguruneko informazioa atzitzeko aukera emanez.
  • Errendimenduaren optimizazio esanguratsuak egin dira. Koma mugikorreko zenbakiekin LLVM exekuzio-denboraren abiadura % 50 gutxi gorabehera handitu da. Funtzio-deiak nabarmen azkartu dira nukleorako sarbidea behar duten egoerak murriztuz. Cranelift kode-sorgailuaren errendimendua %40 handitu da. Datuen deserializazio denbora murriztua.
    Wasmer 2.0, WebAssembly-n oinarritutako aplikazioak eraikitzeko tresna-kit bat dago eskuragarri
    Wasmer 2.0, WebAssembly-n oinarritutako aplikazioak eraikitzeko tresna-kit bat dago eskuragarri
  • Funtsa zehatzago islatzeko, motorren izenak aldatu dira: JIT β†’ Universal, Native β†’ Dylib (Liburutegi dinamikoa), Object File β†’ StaticLib (Liburutegi estatikoa).

Iturria: opennet.ru

Gehitu iruzkin berria