Wasmer 2.0, WebAssembly-ga asoslangan ilovalarni yaratish uchun asboblar to'plami mavjud

Wasmer loyihasi o'zining ikkinchi yirik versiyasini chiqardi, u WebAssembly modullarini bajarish uchun ish vaqtini ishlab chiqdi, ulardan turli xil operatsion tizimlarda ishlay oladigan universal ilovalarni yaratish, shuningdek, ishonchli bo'lmagan kodlarni alohida ishlatish uchun foydalanish mumkin. Loyiha kodi Rustda yozilgan va MIT litsenziyasi ostida tarqatiladi.

Portativlik ilova kodini istalgan OS da ishlashi yoki boshqa dasturlash tillaridagi dasturlarga oʻrnatilishi mumkin boʻlgan past darajadagi WebAssembly oraliq kodiga kompilyatsiya qilish orqali taʼminlanadi. Dasturlar WebAssembly psevdokodi bilan ishlaydigan engil konteynerlardir. Ushbu konteynerlar operatsion tizimga bog'lanmagan va dastlab istalgan dasturlash tilida yozilgan kodni o'z ichiga olishi mumkin. Emscripten asboblar to'plamidan WebAssemblyga kompilyatsiya qilish uchun foydalanish mumkin. WebAssembly-ni joriy platformaning mashina kodiga tarjima qilish uchun u turli kompilyatsiya orqa tomonlarini (Singlepass, Cranelift, LLVM) va dvigatellarni (JIT yoki mashina kodini yaratish yordamida) ulashni qo'llab-quvvatlaydi.

Kirish nazorati va tizim bilan o'zaro aloqa WASI (WebAssembly System Interface) API yordamida ta'minlanadi, u fayllar, rozetkalar va operatsion tizim tomonidan taqdim etilgan boshqa funktsiyalar bilan ishlash uchun dasturiy interfeyslarni ta'minlaydi. Ilovalar sandbox muhitida asosiy tizimdan ajratilgan va faqat e'lon qilingan funksiyalarga (imkoniyatlarni boshqarishga asoslangan xavfsizlik mexanizmi - har bir manba (fayllar, kataloglar, rozetkalar, tizim qo'ng'iroqlari va boshqalar) bilan bog'liq harakatlar uchun) kirish huquqiga ega. arizaga tegishli vakolatlar berilishi kerak).

WebAssembly konteynerini ishga tushirish uchun tashqi bog‘liqliklarsiz (“curl https://get.wasmer.io -sSfL | sh”) keladigan ish vaqti tizimiga Wasmerni o‘rnating va kerakli faylni (“wasmer test.wasm”) ishga tushiring. ). Dasturlar odatiy WebAssembly modullari ko'rinishida tarqatiladi, ularni WAPM paket menejeri yordamida boshqarish mumkin. Wasmer shuningdek, WebAssembly kodini Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir va Java dasturlariga joylashtirish uchun ishlatilishi mumkin bo'lgan kutubxona sifatida mavjud.

Platforma sizga mahalliy yig'ilishlarga yaqin ilovalarning bajarilishiga erishish imkonini beradi. WebAssembly moduli uchun Native Object Engine yordamida siz mashina kodini (oldindan kompilyatsiya qilingan .so, .dylib va ​​.dll obyekt fayllarini yaratish uchun "wasmer compile -native") yaratishingiz mumkin, bu ishlash uchun minimal ish vaqtini talab qiladi, lekin barcha sinov muhiti izolyatsiyasini saqlaydi. Xususiyatlari. Oldindan kompilyatsiya qilingan dasturlarni o'rnatilgan Wasmer bilan ta'minlash mumkin. Qo'shimchalar va kengaytmalarni yaratish uchun Rust API va Wasm-C-API taklif etiladi.

Wasmer-ning versiya raqamining sezilarli o'zgarishi ichki API-ga mos kelmaydigan o'zgarishlarning kiritilishi bilan bog'liq bo'lib, ishlab chiquvchilarning fikriga ko'ra, platforma foydalanuvchilarining 99 foiziga ta'sir qilmaydi. Moslikni buzadigan o'zgarishlar qatorida seriyali Wasm modullari formatidagi o'zgarishlar ham mavjud (Wasmer 1.0 da seriyalashtirilgan modullar Wasmer 2.0 da ishlatilmaydi). Boshqa o'zgarishlar:

  • SIMD (Single Instruction, Multiple Data) ko'rsatmalarini qo'llab-quvvatlash, ma'lumotlar operatsiyalarini parallellashtirish imkonini beradi. SIMD-dan foydalanish unumdorlikni sezilarli darajada oshirishi mumkin bo'lgan sohalarga mashinani o'rganish, video kodlash va dekodlash, tasvirni qayta ishlash, jismoniy jarayonlarni simulyatsiya qilish va grafik manipulyatsiya kiradi.
  • Wasm modullariga boshqa modullardagi yoki asosiy muhitdagi ma'lumotlarga kirishga ruxsat beruvchi mos yozuvlar turlarini qo'llab-quvvatlash.
  • Ishlashning muhim optimallashtirishlari amalga oshirildi. O'zgaruvchan nuqta raqamlari bilan LLVM ish vaqtining tezligi taxminan 50% ga oshirildi. Yadroga kirishni talab qiladigan vaziyatlarni kamaytirish orqali funktsiya chaqiruvlari sezilarli darajada tezlashdi. Cralift kod generatorining ishlashi 40% ga oshdi. Ma'lumotlarni seriyadan chiqarish vaqti qisqartirildi.
    Wasmer 2.0, WebAssembly-ga asoslangan ilovalarni yaratish uchun asboblar to'plami mavjud
    Wasmer 2.0, WebAssembly-ga asoslangan ilovalarni yaratish uchun asboblar to'plami mavjud
  • Mohiyatni aniqroq aks ettirish uchun dvigatellarning nomlari o‘zgartirildi: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

Manba: opennet.ru

a Izoh qo'shish