WebAssembly-д суурилсан програмуудыг бүтээх хэрэгсэл болох Wasmer 3.0 бэлэн байна

Энэ бол өөр өөр үйлдлийн системүүд дээр ажиллах боломжтой универсал програмуудыг үүсгэх, мөн найдвартай кодыг хамгаалагдсан хязгаарлагдмал орчинд гүйцэтгэхэд ашиглаж болох WebAssembly модулиудыг гүйцэтгэх ажлын цагийг боловсруулдаг Wasmer төслийн гурав дахь томоохон хувилбар юм. Төслийн код нь Rust дээр бичигдсэн бөгөөд MIT лицензийн дагуу тараагддаг.

Нэг программыг өөр өөр платформ дээр ажиллуулах чадварыг ямар ч үйлдлийн систем дээр ажиллах эсвэл бусад програмчлалын хэл дээрх програмуудад суулгаж болох доод түвшний WebAssembly завсрын код болгон хөрвүүлснээр хангадаг. Программууд нь WebAssembly псевдокодыг ажиллуулдаг хөнгөн контейнер юм. Эдгээр контейнерууд нь үйлдлийн системтэй холбоогүй бөгөөд ямар ч програмчлалын хэл дээр анх бичсэн кодыг агуулж болно. Emscripten хэрэгслийг WebAssembly-д хөрвүүлэхэд ашиглаж болно. WebAssembly-ийг одоогийн платформын машины код руу хөрвүүлэхийн тулд янз бүрийн эмхэтгэлийн арын хэсэг (Singlepass, Cranelift, LLVM) болон хөдөлгүүрүүдийг (JIT ашиглан эсвэл машин код үүсгэх) холбохыг дэмждэг.

Програмууд нь хамгаалагдсан хязгаарлагдмал орчинд үндсэн системээс тусгаарлагдсан бөгөөд зөвхөн зарласан функцэд хандах эрхтэй (чадавхид суурилсан аюулгүй байдлын механизм - нөөц тус бүртэй (файл, лавлах, залгуур, системийн дуудлага гэх мэт) үйлдэл хийх), програм нь заавал байх ёстой. зохих эрх мэдэл олгох). Хандалтын хяналт болон системтэй харилцах харилцааг WASI (WebAssembly System Interface) API ашиглан хангадаг бөгөөд энэ нь үйлдлийн системээс өгсөн файл, залгуур болон бусад функцуудтай ажиллах програмчлалын интерфейсээр хангадаг.

Энэхүү платформ нь програмын гүйцэтгэлийг уугуул угсралттай ойролцоо гүйцэтгэх боломжийг танд олгоно. WebAssembly модулийн Native Object Engine-ийг ашигласнаар та эх кодыг (урьдчилан хөрвүүлсэн .so, .dylib болон .dll объектын файлуудыг үүсгэхэд зориулагдсан "wasmer compile -native") үүсгэж болох бөгөөд энэ нь ажиллахад хамгийн бага хугацаа шаардагдах боловч бүх функцийг хадгалдаг. хамгаалагдсан хязгаарлагдмал орчны тусгаарлалт. Угсарсан Wasmer-ээр урьдчилан бэлтгэсэн програмуудыг нийлүүлэх боломжтой. Rust API болон Wasm-C-API нь нэмэлт болон нэмэлтүүдийг бий болгоход зориулагдсан.

WebAssembly контейнерийг ажиллуулахын тулд гадаад хамааралгүй ("curl https://get.wasmer.io -sSfL | sh") ирдэг Wasmer ажиллах цагийг систем дээр суулгаж, шаардлагатай файлыг ("wasmer test") ажиллуулахад хангалттай. .wasm”). Программуудыг WAPM багц менежер ашиглан удирдах боломжтой энгийн WebAssembly модулиудын хэлбэрээр түгээдэг. Wasmer нь Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, Java программуудад WebAssembly кодыг оруулахад ашиглаж болох номын сан хэлбэрээр байдаг.

Wasmer 3.0-д гарсан томоохон өөрчлөлтүүд:

  • Ямар ч платформд зориулсан үндсэн гүйцэтгэгдэх файлуудыг үүсгэх чадварыг нэмсэн. "Wasmer create-exe" команд нь WebAssembly завсрын кодын файлыг Wasmer-ийг өөрөө суулгахгүйгээр ажиллах боломжтой Linux, Windows болон macOS платформуудад зориулсан бие даасан гүйцэтгэх файл болгон хувиргахын тулд бүрэн шинэчлэгдсэн.
  • Wapm.io санд байрлах WAPM багцуудыг "wasmer run" командыг ашиглан ажиллуулах боломжийг олгосон. Жишээлбэл, "wasmer run python/python"-ыг ажиллуулснаар python багцыг wapm.io репозитороос татаж аваад ажиллуулна.
  • Wasmer Rust API нь бүрэн шинэчлэгдсэн бөгөөд санах ойтой ажиллах хэв маягийг өөрчилж, Wasm объектуудыг Дэлгүүрийн бүтцэд аюулгүй хадгалах боломжийг олгосон. Шугаман санах ойн хэсэгт өгөгдлийг унших, бичих боломжийг олгодог шинэ MemoryView бүтцийг санал болгож байна.
  • Wasmer-ийг вэб хөтөч дээр ажиллуулж, JavaScript-аас wasm-bindgen номын санг ашиглан харилцахын тулд wasmer-js бүрэлдэхүүн хэсгүүдийг хэрэгжүүлсэн. Wasmer-js нь ердийн үйлдлийн системүүд дээр Wasmer-ийг ажиллуулахад зориулагдсан wasmer-sys бүрэлдэхүүн хэсгүүдтэй ижил төстэй юм.
  • Хялбаршуулсан хөдөлгүүрүүд. JIT, динамик ба статик холболтын (Universal, Dylib, StaticLib) тусдаа хөдөлгүүрүүдийн оронд одоо нэг нийтлэг хөдөлгүүрийг санал болгож байгаа бөгөөд параметрийн тохиргооны түвшинд удирддаг кодыг ачаалах, хадгалах боломжтой.
  • Олдворуудыг цувралаас гаргахын тулд rkyv хүрээг ашигладаг бөгөөд энэ нь тэг хуулбарын ажиллагааг хангадаг, өөрөөр хэлбэл. нэмэлт санах ойн хуваарилалт шаарддаггүй бөгөөд зөвхөн анх олгосон буферийг ашиглан цуваа арилгана. rkyv ашиглах нь эхлүүлэх хурдыг ихээхэн нэмэгдүүлсэн.
  • Singlepass хөрвүүлэгчийг олон утгат функцуудыг дэмжих, найдвартай байдлыг сайжруулах, онцгой тохиолдлын харьцах хүрээг дэмжих зорилгоор сайжруулсан.
  • WASI (WebAssembly System Interface) API-ийн хэрэгжилт сайжирсан. Файлын системтэй ажиллахад зориулсан WASI API-д гарсан асуудлуудыг зассан. Дотоод төрлүүдийг WAI (WebAssembly Interfaces) ашиглан дахин боловсруулсан бөгөөд энэ нь ирээдүйд хэд хэдэн шинэ функцуудыг хэрэгжүүлэх боломжийг олгоно.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх