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

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

Gisiguro ang pagkadala pinaagi sa pag-compile sa code sa aplikasyon 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 magamit 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 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. 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).

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.

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.

Ang usa ka hinungdanon nga pagbag-o sa numero sa bersyon sa Wasmer nalangkit sa pagpaila sa dili magkatugma nga mga pagbag-o sa internal nga API, nga, sumala sa mga nag-develop, dili makaapekto sa 99% sa mga tiggamit sa platform. Lakip sa mga pagbag-o nga nakaguba sa pagkaangay, adunay usab pagbag-o sa format sa mga serialized nga mga modulo sa Wasm (ang mga modulo nga na-serialize sa Wasmer 1.0 dili magamit sa Wasmer 2.0). Uban pang mga pagbag-o:

  • Suporta alang sa SIMD (Single Instruction, Multiple Data) nga mga instruksyon, nga nagtugot sa parallelization sa mga operasyon sa datos. Ang mga dapit diin ang paggamit sa SIMD makapauswag pag-ayo sa performance naglakip sa machine learning, video encoding ug decoding, image processing, physical process simulation, ug graphic manipulation.
  • Suporta alang sa mga tipo sa pakisayran, nga gitugotan ang mga module sa Wasm nga maka-access sa kasayuran sa ubang mga module o sa ilawom nga palibot.
  • Mahinungdanon nga pag-optimize sa pasundayag ang nahimo. Ang katulin sa LLVM runtime nga adunay floating point nga mga numero nadugangan sa gibana-bana nga 50%. Ang mga tawag sa function labi nga gipadali pinaagi sa pagkunhod sa mga sitwasyon nga nanginahanglan pag-access sa kernel. Ang performance sa cranelift code generator nadugangan sa 40%. Gipamub-an ang oras sa deserialization sa datos.
    Ang Wasmer 2.0, usa ka toolkit alang sa paghimo sa mga aplikasyon nga nakabase sa WebAssembly, magamit
    Ang Wasmer 2.0, usa ka toolkit alang sa paghimo sa mga aplikasyon nga nakabase sa WebAssembly, magamit
  • Aron mas tukma nga mapakita ang esensya, ang mga ngalan sa mga makina giusab: JIT β†’ Universal, Native β†’ Dylib (Dynamic Library), Object File β†’ StaticLib (Static Library).

Source: opennet.ru

Idugang sa usa ka comment