Wasmer 2.0, zana ya kuunda programu kulingana na WebAssembly, inapatikana

Mradi wa Wasmer umetoa toleo lake kuu la pili, kuendeleza muda wa utekelezaji wa moduli za WebAssembly ambazo zinaweza kutumika kuunda programu za ulimwengu ambazo zinaweza kukimbia kwenye mifumo tofauti ya uendeshaji, na pia kuendesha msimbo usioaminika kwa kutengwa. Nambari ya mradi imeandikwa kwa Rust na inasambazwa chini ya leseni ya MIT.

Uwezo wa kubebeka unapatikana kwa kukusanya msimbo wa programu katika msimbo wa kati wa kiwango cha chini wa WebAssembly, ambao unaweza kuendeshwa kwenye Mfumo wowote wa Uendeshaji au kupachikwa katika programu katika lugha nyinginezo za programu. Programu hizo ni vyombo vyepesi vinavyoendesha pseudocode ya WebAssembly. Vyombo hivi havijafungwa kwenye mfumo wa uendeshaji na vinaweza kujumuisha msimbo ulioandikwa awali katika lugha yoyote ya programu. Zana ya zana ya Emscripten inaweza kutumika kujumuisha kwenye WebAssembly. Ili kutafsiri WebAssembly katika msimbo wa mashine ya jukwaa la sasa, inasaidia muunganisho wa viunga mbalimbali vya nyuma vya mkusanyiko (Singlepass, Cranelift, LLVM) na injini (kwa kutumia JIT au kizazi cha msimbo wa mashine).

Udhibiti wa ufikiaji na mwingiliano na mfumo hutolewa kwa kutumia WASI (WebAssembly System Interface) API, ambayo hutoa miingiliano ya programu ya kufanya kazi na faili, soketi na kazi zingine zinazotolewa na mfumo wa uendeshaji. Maombi yametengwa kutoka kwa mfumo mkuu katika mazingira ya kisanduku cha mchanga na yanaweza kufikia tu utendakazi uliotangazwa (utaratibu wa usalama kulingana na usimamizi wa uwezo - kwa vitendo na kila moja ya rasilimali (faili, saraka, soketi, simu za mfumo, n.k.), maombi lazima yapewe mamlaka yanayofaa).

Ili kuzindua kontena la WebAssembly, sakinisha tu Wasmer katika mfumo wa wakati wa utekelezaji, ambao huja bila tegemezi za nje ("curl https://get.wasmer.io -sSfL | sh"), na uendeshe faili muhimu ("wasmer test.wasm" ) Programu zinasambazwa kwa njia ya moduli za kawaida za WebAssembly, ambazo zinaweza kudhibitiwa kwa kutumia meneja wa kifurushi cha WAPM. Wasmer inapatikana pia kama maktaba ambayo inaweza kutumika kupachika msimbo wa WebAssembly kwenye Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, na programu za Java.

Jukwaa hukuruhusu kufikia utendakazi wa utekelezaji wa programu karibu na makusanyiko asilia. Kwa kutumia Native Object Engine kwa ajili ya moduli ya WebAssembly, unaweza kuzalisha msimbo wa mashine (β€œwasmer compile -native” ili kuzalisha faili za .so, .dylib na .dll zilizokusanywa kabla), ambayo inahitaji muda mfupi zaidi wa kukimbia, lakini hubakiza utengaji wote wa kisanduku cha mchanga. vipengele. Inawezekana kusambaza programu zilizopangwa tayari na Wasmer iliyojengwa. API ya Rust na Wasm-C-API hutolewa kwa kuunda viongezi na viendelezi.

Mabadiliko makubwa katika nambari ya toleo la Wasmer yanahusishwa na kuanzishwa kwa mabadiliko yasiyolingana kwa API ya ndani, ambayo, kulingana na wasanidi, haitaathiri 99% ya watumiaji wa jukwaa. Miongoni mwa mabadiliko ambayo yanavunja uoanifu, pia kuna mabadiliko katika umbizo la moduli za mfululizo za Wasm (moduli zilizosasishwa katika Wasmer 1.0 hazitaweza kutumika katika Wasmer 2.0). Mabadiliko mengine:

  • Usaidizi wa maagizo ya SIMD (Maelekezo Moja, Data Nyingi), kuruhusu ulinganifu wa shughuli za data. Maeneo ambayo matumizi ya SIMD yanaweza kuboresha utendakazi kwa kiasi kikubwa ni pamoja na kujifunza kwa mashine, usimbaji wa usimbaji video na kusimbua, uchakataji wa picha, uigaji wa mchakato halisi na upotoshaji wa michoro.
  • Usaidizi wa aina za marejeleo, kuruhusu moduli za Wasm kufikia taarifa katika moduli nyingine au katika mazingira ya msingi.
  • Uboreshaji muhimu wa utendakazi umefanywa. Kasi ya wakati wa kukimbia wa LLVM na nambari za sehemu zinazoelea imeongezwa kwa takriban 50%. Simu za utendakazi zimeharakishwa kwa kiasi kikubwa kwa kupunguza hali zinazohitaji ufikiaji wa kernel. Utendaji wa jenereta ya msimbo wa Cranelift umeongezwa kwa 40%. Muda uliopunguzwa wa uondoaji wa data.
    Wasmer 2.0, zana ya kuunda programu kulingana na WebAssembly, inapatikana
    Wasmer 2.0, zana ya kuunda programu kulingana na WebAssembly, inapatikana
  • Ili kutafakari kwa usahihi kiini, majina ya injini yamebadilishwa: JIT β†’ Universal, Native β†’ Dylib (Maktaba ya Dynamic), Faili ya Kitu β†’ StaticLib (Maktaba tuli).

Chanzo: opennet.ru

Kuongeza maoni