Wasmer 2.0, isang toolkit para sa pagbuo ng mga application na nakabatay sa WebAssembly, ay magagamit

Inilabas ng proyektong Wasmer ang pangalawang pangunahing release nito, na bumubuo ng runtime para sa pagpapatupad ng mga module ng WebAssembly na maaaring magamit upang lumikha ng mga unibersal na application na maaaring tumakbo sa iba't ibang mga operating system, pati na rin upang patakbuhin ang hindi pinagkakatiwalaang code sa paghihiwalay. Ang code ng proyekto ay nakasulat sa Rust at ipinamamahagi sa ilalim ng lisensya ng MIT.

Ang portability ay nakakamit sa pamamagitan ng pag-compile ng application code sa mababang antas na WebAssembly intermediate code, na maaaring tumakbo sa anumang OS o ma-embed sa mga program sa iba pang mga programming language. Ang mga programa ay magaan na mga lalagyan na nagpapatakbo ng WebAssembly pseudocode. Ang mga container na ito ay hindi nakatali sa operating system at maaaring magsama ng code na orihinal na nakasulat sa anumang programming language. Ang Emscripten toolkit ay maaaring gamitin upang mag-compile sa WebAssembly. Upang isalin ang WebAssembly sa machine code ng kasalukuyang platform, sinusuportahan nito ang koneksyon ng iba't ibang compilation backend (Singlepass, Cranelift, LLVM) at mga engine (gamit ang JIT o machine code generation).

Ang kontrol sa pag-access at pakikipag-ugnayan sa system ay ibinibigay gamit ang WASI (WebAssembly System Interface) API, na nagbibigay ng mga interface ng programming para sa pagtatrabaho sa mga file, socket at iba pang mga function na ibinigay ng operating system. Ang mga application ay nakahiwalay sa pangunahing system sa isang sandbox environment at may access lamang sa ipinahayag na functionality (isang mekanismo ng seguridad batay sa pamamahala ng kakayahan - para sa mga aksyon sa bawat isa sa mga mapagkukunan (mga file, direktoryo, socket, system call, atbp.), ang ang aplikasyon ay dapat bigyan ng naaangkop na kapangyarihan).

Para maglunsad ng container ng WebAssembly, i-install lang ang Wasmer sa runtime system, na walang mga external na dependency (β€œcurl https://get.wasmer.io -sSfL | sh”), at patakbuhin ang kinakailangang file (β€œwasmer test.wasm” ). Ang mga programa ay ipinamamahagi sa anyo ng mga regular na WebAssembly module, na maaaring pamahalaan gamit ang WAPM package manager. Available din ang Wasmer bilang isang library na maaaring magamit upang i-embed ang WebAssembly code sa Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, at Java na mga programa.

Binibigyang-daan ka ng platform na makamit ang pagganap ng pagpapatupad ng aplikasyon malapit sa mga katutubong asembliya. Gamit ang Native Object Engine para sa WebAssembly module, maaari kang bumuo ng machine code (β€œwasmer compile -native” para makabuo ng mga precompiled .so, .dylib at .dll object file), na nangangailangan ng minimal na runtime para tumakbo, ngunit pinapanatili ang lahat ng sandbox isolation mga tampok. Posibleng magbigay ng mga precompiled program na may built-in na Wasmer. Ang Rust API at Wasm-C-API ay inaalok para sa paggawa ng mga add-on at extension.

Ang isang makabuluhang pagbabago sa numero ng bersyon ng Wasmer ay nauugnay sa pagpapakilala ng mga hindi tugmang pagbabago sa panloob na API, na, ayon sa mga developer, ay hindi makakaapekto sa 99% ng mga gumagamit ng platform. Kabilang sa mga pagbabagong sumisira sa compatibility, mayroon ding pagbabago sa format ng mga serialized na Wasm modules (hindi magagamit ang mga module na naka-serialize sa Wasmer 1.0 sa Wasmer 2.0). Iba pang mga pagbabago:

  • Suporta para sa mga tagubilin ng SIMD (Single Instruction, Multiple Data), na nagpapahintulot sa parallelization ng mga operasyon ng data. Ang mga lugar kung saan ang paggamit ng SIMD ay maaaring makabuluhang mapabuti ang pagganap ay kinabibilangan ng machine learning, video encoding at decoding, image processing, physical process simulation, at graphics manipulation.
  • Suporta para sa mga uri ng sanggunian, na nagpapahintulot sa mga module ng Wasm na ma-access ang impormasyon sa iba pang mga module o sa pinagbabatayan na kapaligiran.
  • Ang mga makabuluhang pag-optimize ng pagganap ay ginawa. Ang bilis ng LLVM runtime na may mga numero ng floating point ay nadagdagan ng humigit-kumulang 50%. Ang mga function na tawag ay makabuluhang pinabilis sa pamamagitan ng pagbabawas ng mga sitwasyon na nangangailangan ng access sa kernel. Ang pagganap ng cranelift code generator ay nadagdagan ng 40%. Binawasan ang oras ng deserialization ng data.
    Wasmer 2.0, isang toolkit para sa pagbuo ng mga application na nakabatay sa WebAssembly, ay magagamit
    Wasmer 2.0, isang toolkit para sa pagbuo ng mga application na nakabatay sa WebAssembly, ay magagamit
  • Upang mas tumpak na maipakita ang kakanyahan, binago ang mga pangalan ng mga makina: JIT β†’ Universal, Native β†’ Dylib (Dynamic Library), Object File β†’ StaticLib (Static Library).

Pinagmulan: opennet.ru

Magdagdag ng komento