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

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

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

Хандалтын хяналт, системтэй харилцах ажиллагааг WASI (WebAssembly System Interface) 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 кодыг оруулахад ашиглаж болох номын сан хэлбэрээр байдаг.

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

Wasmer-ийн хувилбарын дугаарт гарсан мэдэгдэхүйц өөрчлөлт нь дотоод API-д үл нийцэх өөрчлөлтүүдийг нэвтрүүлсэнтэй холбоотой бөгөөд хөгжүүлэгчдийн үзэж байгаагаар платформ хэрэглэгчдийн 99% -д нөлөөлөхгүй. Тохиромжтой байдлыг эвдэж буй өөрчлөлтүүдийн дотроос цуваажуулсан Wasm модулиудын формат өөрчлөгдсөн байна (Wasmer 1.0-д цуваа оруулсан модулиудыг Wasmer 2.0-д ашиглах боломжгүй). Бусад өөрчлөлтүүд:

  • SIMD (Single Instruction, Multiple Data) зааварчилгааг дэмжиж, өгөгдлийн үйлдлүүдийг зэрэгцүүлэх боломжийг олгодог. SIMD-ийг ашигласнаар гүйцэтгэлийг мэдэгдэхүйц сайжруулж болох талбарт машин сурах, видео кодчилол, тайлах, зураг боловсруулах, физик процессын симуляци, график боловсруулах зэрэг орно.
  • Лавлагааны төрлүүдийн дэмжлэг нь Wasm модулиудад бусад модулиуд эсвэл үндсэн орчин дахь мэдээлэлд хандах боломжийг олгодог.
  • Гүйцэтгэлийн томоохон оновчлолууд хийгдсэн. Хөвөгч цэг бүхий LLVM ажиллах цагийн хурд ойролцоогоор 50%-иар нэмэгдсэн. Цөмд хандах шаардлагатай нөхцөл байдлыг бууруулснаар функцийн дуудлагыг мэдэгдэхүйц хурдасгасан. Cralift кодын генераторын гүйцэтгэл 40% -иар нэмэгдсэн. Өгөгдлийг цувралаас гаргах хугацааг багасгасан.
    WebAssembly-д суурилсан програмуудыг бүтээх хэрэгсэл болох Wasmer 2.0 бэлэн байна
    WebAssembly-д суурилсан програмуудыг бүтээх хэрэгсэл болох Wasmer 2.0 бэлэн байна
  • Мөн чанарыг илүү нарийвчлалтай тусгахын тулд хөдөлгүүрүүдийн нэрийг өөрчилсөн: JIT → Universal, Native → Dylib (Динамик номын сан), Объект файл → StaticLib (Статик номын сан).

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

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