Ang Wasmer 3.0, usa ka toolkit alang sa paghimo sa mga aplikasyon nga nakabase sa WebAssembly, magamit

Ang ikatulo nga mayor nga pagpagawas sa proyekto sa Wasmer gipaila, nga nagpalambo sa usa ka runtime alang sa pagpatuman sa mga module sa WebAssembly nga magamit sa paghimo sa unibersal nga mga aplikasyon nga mahimong modagan sa lain-laing mga operating system, ingon man sa pagpatuman sa dili kasaligan nga code sa pag-inusara. Ang code sa proyekto gisulat sa Rust ug giapod-apod ubos sa lisensya sa MIT.

Ang abilidad sa pagpadagan sa usa ka aplikasyon sa lain-laing mga plataporma gihatag pinaagi sa pag-compile sa code ngadto sa ubos nga lebel nga WebAssembly intermediate code, nga mahimong modagan sa bisan unsang OS o ma-embed sa mga programa sa ubang mga programming language. Ang mga programa kay gaan nga mga sudlanan nga nagpadagan sa WebAssembly pseudocode. Kini nga mga sudlanan wala gihigot sa operating system ug mahimong maglakip sa code nga orihinal nga gisulat sa bisan unsang programming language. Ang Emscripten toolkit mahimong gamiton sa pag-compile sa WebAssembly. Aron mahubad ang WebAssembly ngadto sa machine code sa kasamtangan nga plataporma, kini nagsuporta sa koneksyon sa nagkalain-laing compilation backends (Singlepass, Cranelift, LLVM) ug mga makina (gamit ang JIT o machine code generation).

Ang mga aplikasyon nahimulag gikan sa nag-unang sistema sa usa ka palibot sa sandbox ug adunay access lamang sa gideklarar nga pag-andar (usa ka mekanismo sa seguridad nga gibase sa pagdumala sa kapabilidad - alang sa mga aksyon sa matag usa sa mga kapanguhaan (mga file, mga direktoryo, mga socket, mga tawag sa sistema, ug uban pa), ang ang aplikasyon kinahanglan nga hatagan sa angay nga gahum). Ang kontrol sa pag-access ug interaksyon sa sistema gihatag gamit ang WASI (WebAssembly System Interface) API, nga naghatag mga interface sa programming alang sa pagtrabaho sa mga file, socket ug uban pang mga gimbuhaton nga gihatag sa operating system.

Gitugotan ka sa plataporma nga makab-ot ang pasundayag sa pagpatuman sa aplikasyon duol sa lumad nga mga asembliya. Gamit ang Native Object Engine para sa WebAssembly module, makamugna ka og machine code ("wasmer compile -native" aron makamugna og precompiled .so, .dylib ug .dll object files), nga nagkinahanglan og gamay nga runtime aron modagan, apan magpabilin ang tanang sandbox isolation mga bahin. Posible nga maghatag mga precompiled nga mga programa nga adunay built-in nga Wasmer. Ang Rust API ug Wasm-C-API gitanyag alang sa paghimo og mga add-on ug mga extension.

Aron maglunsad og usa ka sudlanan sa WebAssembly, i-install lang ang Wasmer sa runtime system, nga wala'y mga eksternal nga dependency ("curl https://get.wasmer.io -sSfL | sh"), ug padagana ang gikinahanglan nga file ("wasmer test.wasm" ). Ang mga programa giapod-apod sa porma sa regular nga WebAssembly modules, nga mahimong madumala gamit ang WAPM package manager. Ang Wasmer magamit usab isip librarya nga magamit sa pag-embed sa WebAssembly code sa Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, ug Java nga mga programa.

Daghang mga pagbag-o sa Wasmer 3.0:

  • Gidugang ang abilidad sa paghimo sa lumad nga mga executable nga mga file alang sa bisan unsang plataporma. Ang "wasmer create-exe" nga sugo hingpit nga gidesinyo pag-usab aron mabag-o ang usa ka WebAssembly intermediate code file ngadto sa self-contained executables para sa Linux, Windows, ug macOS nga mga plataporma nga makadagan nga walay pag-install sa Wasmer mismo.
  • Posible nga ilunsad ang mga pakete sa WAPM nga nahimutang sa direktoryo sa wapm.io gamit ang "wasmer run" nga mando. Pananglitan, ang pagpadagan sa "wasmer run python/python" mag-download sa python package gikan sa wapm.io repository ug modagan kini.
  • Ang Wasmer Rust API hingpit nga gidesinyo pag-usab, nagbag-o sa estilo sa pagtrabaho uban ang panumduman ug naghatag sa abilidad sa luwas nga pagluwas sa mga butang sa Wasm sa istruktura sa Store. Usa ka bag-ong MemoryView nga istruktura ang gisugyot nga nagtugot sa pagbasa ug pagsulat sa datos sa usa ka linear memory area.
  • Usa ka hugpong sa mga sangkap sa wasmer-js ang gipatuman aron sa pagpadagan sa Wasmer sa usa ka web browser ug makig-uban niini gikan sa JavaScript gamit ang wasm-bindgen library. Sa mga kapabilidad niini, ang wasmer-js katumbas sa mga sangkap sa wasmer-sys nga gidesinyo sa pagpadagan sa Wasmer sa mga regular nga operating system.
  • Ang mga makina gipasayon. Imbis nga lahi nga mga makina alang sa JIT, dinamiko ug static nga pag-link (Universal, Dylib, StaticLib), usa ka sagad nga makina ang gitanyag karon, ug ang pagkarga ug pag-save sa code kontrolado sa lebel sa pag-set sa mga parameter.
  • Aron deserialize ang mga artifact, gigamit ang rkyv framework, nga nagsiguro sa operasyon sa zero-copy mode, i.e. nga wala magkinahanglan og dugang nga alokasyon sa panumduman ug naghimo sa deserialization gamit lamang ang gihatag nga buffer. Ang paggamit sa rkyv nakadugang sa katulin sa pagsugod.
  • Ang Singlepass single-pass compiler gipauswag, nagdugang suporta alang sa multi-value functions, gipaayo nga kasaligan, ug dugang nga suporta alang sa exception handling frames.
  • Gipauswag nga pagpatuman sa WASI (WebAssembly System Interface) API. Ang mga problema sa interface sa software sa WASI alang sa pagtrabaho sa file system nasulbad na. Ang mga internal nga tipo gidesinyo pag-usab gamit ang WAI (WebAssembly Interfaces), nga makapahimo sa sunodsunod nga mga bag-ong feature sa umaabot.

Source: opennet.ru

Idugang sa usa ka comment