Mozilla, Fastly, Intel болон Red Hat нь WebAssembly-ийг бүх нийтийн хэрэглээний платформ болгон сурталчилж байна

Mozilla, Fastly, Intel, Red Hat нэгдсэн Бид WebAssembly-ийг бүх дэд бүтэц, үйлдлийн систем, төхөөрөмж дээр аюулгүй код гүйцэтгэх бүх нийтийн платформ болгон хувиргахад туслах технологийг хөгжүүлэхийг зорьж байна. WebAssembly-г зөвхөн вэб хөтчөөс илүү ашиглах боломжийг олгох ажлын цаг, хөрвүүлэгчийг хамтран боловсруулах нийгэмлэг байгуулагдсан. Байткодын холбоо.

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

Нэг нь зорилго Холбооны зорилго нь олон тооны хамаарал бүхий орчин үеийн модульчлагдсан програмуудыг түгээх асуудлыг шийдвэрлэхэд оршино. Ийм программуудад хамаарал бүр нь эмзэг байдал эсвэл халдлагын боломжит эх үүсвэр байж болно. Хараат байдлыг хянах нь үүнтэй холбогдсон бүх програмыг хянах боломжийг олгодог. Аппликейшнд итгэх нь түүний бүх хамааралд автоматаар итгэдэг гэсэн үг боловч эдгээр хамаарлыг ихэвчлэн үйл ажиллагааг нь хянах боломжгүй гуравдагч талын багууд хөгжүүлж, хадгалдаг. Bytecode Alliance-ын гишүүд угаасаа найдваргүй WebAssembly програмуудыг аюулгүй ажиллуулах цогц шийдлийг боловсруулахаар зорьж байна.

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

Хүссэн зөвшөөрлийг хараат байдлын түвшинд аль алинд нь тодорхойлж, эх модулиудаар дээд талын хамаарал руу шилжүүлж болно (WASI дахь нөөцүүд нь тусгай төрлийн файлын тодорхойлогч, чадвартай холбоотой). Жишээлбэл, модуль нь тодорхой лавлах руу нэвтрэх, системийн дуудлага хийх боломжийг шилжүүлж болно. Хэрэв модулийн хөгжүүлэлтийн дэд бүтэц эвдэрсэн эсвэл эмзэг байдал илэрсэн бол халдлагын үед эдгээр нөөцөд хандах хандалт хязгаарлагдана. Модуль бүтээгчдийн нөөцийн мэдэгдлүүд нь жишээлбэл, текст боловсруулах модуль сүлжээний холболтыг нээх зөвшөөрөл хүссэн үед сэжигтэй үйл ажиллагааны үзүүлэлт байж болно. Анх олгогдсон зөвшөөрлүүдийг шалгадаг бөгөөд хэрэв тэдгээр нь өөрчлөгдвөл модулийн локал гарын үсгийг шинэчлэх хүртэл хамаарлаас татгалздаг.

Bytecode Alliance-ийн жигүүрийн дор хамтарсан хөгжлийн төлөө орчуулсан хэд хэдэн WebAssembly холбоотой төслүүд, өмнө нь тус холбоог үүсгэн байгуулагч компаниуд тусад нь боловсруулсан:

  • Цаг хугацаа — WASI өргөтгөлтэй WebAssembly програмуудыг ердийн бие даасан програм болгон ажиллуулах ажлын цаг. Тусгай тушаалын мөрийн хэрэглүүрийг ашиглан WebAssembly байт кодыг ажиллуулж, бэлэн гүйцэтгэх файлуудыг (wasmtime программыг номын сан болгон суулгасан) хоёуланг нь дэмждэг. Wasmtime нь уян хатан, модульчлагдсан бүтэцтэй бөгөөд энэ нь янз бүрийн хэрэглээнд ажиллах хугацааг томруулж чаддаг; жишээ нь хязгаарлагдмал нөөцтэй төхөөрөмжүүдэд зориулж задалсан хувилбарыг үүсгэж болно.
  • Лусет — WebAssembly форматаар программуудыг гүйцэтгэх хөрвүүлэгч болон ажиллах цаг. Онцлог онцлог Lucet нь JIT-д суурилсан бүрэн хэмжээний түрүүлж (AOT) эмхэтгэлийг шууд гүйцэтгэхэд тохиромжтой уугуул машины код болгон хувиргах явдал юм. Төслийг Fastly боловсруулсан бөгөөд нөөцийн хамгийн бага зарцуулалт, шинэ тохиолдлуудыг маш хурдан эхлүүлэхэд зориулагдсан (Fastly Lucet-ийг үүлэн захын тооцооллын системдээ ашигладаг бөгөөд энэ нь хүсэлт бүрт WebAssembly ашигладаг). Хамтын төслийн хүрээнд Wasmtime-г суурь болгон ашиглахын тулд Lucet хөрвүүлэгчийг шилжүүлэхээр төлөвлөж байна;
  • WAM (WebAssembly Micro Runtime) нь Intel-ээс IoT төхөөрөмжид ашиглахаар анхлан бүтээсэн WebAssembly-д зориулсан өөр нэг ажиллах цаг юм. WAMR нь нөөцийн хамгийн бага зарцуулалтад тохируулагдсан бөгөөд хязгаарлагдмал RAM-тай төхөөрөмжүүдэд ашиглах боломжтой. Төсөл нь WebAssembly байт кодыг гүйцэтгэхэд зориулагдсан орчуулагч болон виртуал машин, API (Libc-ийн дэд хэсэг) болон динамик хэрэглээний менежментийн хэрэгслүүдийг багтаасан болно.
  • Кран өргөгч — техник хангамжаас хамааралгүй завсрын дүрслэлийг тодорхой техник хангамжийн платформд оновчтой болгосон гүйцэтгэгдэх машины код болгон хөрвүүлдэг код үүсгэгч. Cranelift нь үр дүнг маш хурдан гаргахын тулд зэрэгцээ функцийн эмхэтгэлийг дэмждэг бөгөөд үүнийг цаг хугацаанд нь (JIT) хөрвүүлэгч үүсгэхэд тохиромжтой (Wasmtime виртуал машинд Cranelift дээр суурилсан JIT ашигладаг);
  • WASI нийтлэг - үйлдлийн системтэй харилцах ажлыг зохион байгуулах WASI (WebAssembly System Interface) API-ийн тусдаа хэрэгжилт;
  • ачаа-васи — WebAssembly-г хөтчөөс гадуур ашиглах WASI интерфейсийг ашиглан WebAssembly байт код руу Rust кодыг эмхэтгэх командыг хэрэгжүүлдэг Cargo багц менежерийн модуль;
  • Ус и байсан — WebAssembly байт кодын текст (WAT, WAST) болон хоёртын дүрслэлийг задлан шинжлэхэд зориулсан задлагч.

Сануулахад, WebAssembly нь Asm.js-тэй маш төстэй боловч ялгаатай байна WebAssembly нь JavaScript-ээс хамааралгүй хоёртын формат бөгөөд янз бүрийн програмчлалын хэлнээс хөрвүүлсэн доод түвшний дунд кодыг хөтөч дээр гүйцэтгэх боломжийг олгодог. WebAssembly нь тодорхой санах ойн менежментийг ашигладаг тул хог цуглуулах хэрэгцээг арилгадаг. Just-in-Time (JIT) хөдөлгүүрийг ашигласнаар WebAssembly нь үндсэн кодтой ойролцоо гүйцэтгэлийн түвшинд хүрч чадна. WebAssembly-ийн гол зорилго бол зөөвөрлөх чадвар, урьдчилан таамаглахуйц зан төлөв, янз бүрийн платформ дээр кодыг тогтмол гүйцэтгэх явдал юм.

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

DDoS хамгаалалт, VPS VDS сервер бүхий сайтуудад найдвартай хостинг худалдаж аваарай 🔥 DDoS хамгаалалттай, VPS VDS сервертэй найдвартай вэбсайт хостинг худалдаж аваарай | ProHoster