Wasmer 2.0, he kete taputapu mo te hanga i nga tono a-WebAssembly, e waatea ana

Kua tukuna e te kaupapa Wasmer tana tukunga nui tuarua, te whakawhanake i te wa whakahaere mo te whakahaere i nga waahanga WebAssembly ka taea te whakamahi ki te hanga i nga tono mo te ao katoa ka taea te whakahaere i runga i nga punaha whakahaere rereke, me te whakahaere i nga waehere kore pono i roto i te wehe. Kua tuhia te waehere kaupapa ki Rust ka tohatohahia i raro i te raihana MIT.

Ka taea te kawe ma te whakahiato waehere tono ki roto i te waehere takawaenga WebAssembly taumata-iti, ka taea te whakahaere i runga i tetahi OS, ka whakauruhia ranei ki roto i nga kaupapa i etahi atu reo hotaka. Ko nga kaupapa he ipu mama e whakahaere ana i te WebAssembly pseudocode. Ko enei ipu karekau e herea ki te punaha whakahaere ka taea te whakauru i nga waehere i tuhia tuatahitia ki roto i tetahi reo hotakataka. Ka taea te whakamahi i te kete taputapu Emscripten ki te whakahiato ki te WebAssembly. Hei whakamaori i te WebAssembly ki te waehere miihini o te papaaho o naianei, ka tautokohia e ia te hononga o nga momo whakahiato whakahiato (Singlepass, Cranelift, LLVM) me nga miihini (ma te whakamahi JIT me te whakaputa tohu miihini).

Ka whakaratohia te mana uru me te taunekeneke ki te punaha ma te whakamahi i te WASI (WebAssembly System Interface) API, e whakarato ana i nga atanga papatono mo te mahi me nga konae, nga turanga me etahi atu mahi e whakaratohia ana e te punaha whakahaere. Ka wehea nga tono mai i te punaha matua i roto i te taiao pouaka kirikiri ka whai waahi noa ki nga mahi kua whakapuakina (he tikanga haumaru i runga i te whakahaerenga kaha - mo nga mahi me ia o nga rauemi (nga konae, nga raarangi, nga turanga, nga waea punaha, me era atu), te Ko te tono me hoatu nga mana e tika ana).

Hei whakarewa i tetahi ipu WebAssembly, whakauruhia a Wasmer ki te punaha whakahaere, ka puta mai me te kore e whakawhirinaki ki waho ("curl https://get.wasmer.io -sSfL | sh"), ka whakahaere i te konae e tika ana ("wasmer test.wasm" ). Ka tohatohahia nga papatono i roto i te ahua o nga waahanga WebAssembly auau, ka taea te whakahaere ma te whakamahi i te kaiwhakahaere kete WAPM. Kei te waatea ano a Wasmer hei whare pukapuka ka taea te whakamahi ki te whakauru i te waehere WebAssembly ki roto i nga kaupapa Rust, C/C++, C#, D, Python, JavaScript, Haere, PHP, Ruby, Elixir, me Java.

Ma te papaahi ka taea e koe te whakatutuki i nga mahi whakahaere tono tata ki nga huihuinga taketake. Ma te whakamahi i te Miihini Ahanoa Maori mo te waahanga WebAssembly, ka taea e koe te whakaputa waehere miihini ("wasmer compile -native" ki te whakaputa i nga konae ahanoa .so, .dylib me .dll), he iti noa te waa whakahaere hei whakahaere, engari ka mau tonu i te wehenga kirikiri katoa. āhuatanga. Ka taea te tuku i nga kaupapa kua whakahiatohia me te Wasmer i roto. Ko te Rust API me te Wasm-C-API ka tukuna mo te hanga taapiri me nga taapiri.

Ko te huringa nui i roto i te tau putanga o Wasmer e hono ana ki te whakaurunga o nga huringa hotokore ki te API o roto, e ai ki nga kaiwhakawhanake, kaore e pa ki te 99% o nga kaiwhakamahi papaaho. I roto i nga huringa ka pakaru te hototahi, he rereke ano te ahua o nga waahanga Wasm raupapa (kaore e taea te whakamahi i nga waahanga raupapa i Wasmer 1.0 ki Wasmer 2.0). Ētahi atu huringa:

  • Tautoko mo nga tohutohu SIMD (Whakaakoranga Kotahi, Raraunga Maha), ka taea te whakarara o nga mahi raraunga. Ko nga waahi ka taea e te whakamahinga o te SIMD te whakapai ake i nga mahi ko te ako miihini, te whakawaehere ataata me te wetewete, te tukatuka whakaahua, te whaihanga o te tukanga tinana, me te raweke whakairoiro.
  • Tautoko mo nga momo tohutoro, ka taea e nga waahanga Wasm te uru atu ki nga korero i etahi atu waahanga, i te taiao o raro ranei.
  • He nui nga arotautanga mahi kua mahia. Ko te tere o te wa whakahaere LLVM me nga tau ira maanu kua piki ake ma te 50%. Kua tino whakaterehia nga waea mahi ma te whakaiti i nga ahuatanga e hiahia ana kia uru ki te kernel. Kua piki ake te mahi a Cranelift code generator e 40%. Kua whakaitihia te wa deserialization raraunga.
    Wasmer 2.0, he kete taputapu mo te hanga i nga tono a-WebAssembly, e waatea ana
    Wasmer 2.0, he kete taputapu mo te hanga i nga tono a-WebAssembly, e waatea ana
  • Kia tika ake ai te whakaata i te ngako, kua hurihia nga ingoa o nga miihini: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

Source: opennet.ru

Tāpiri i te kōrero