WebAssembly 2.0 Стандарт урьдчилан үзэх боломжтой

W3C нь WebAssembly 2.0 дунд программ болон түүнтэй холбоотой API-г стандартчилах шинэ тодорхойлолтын төслийг нийтэлсэн нь хөтчүүд болон техник хангамжийн платформ дээр зөөврийн өндөр гүйцэтгэлтэй програмуудыг бий болгох боломжийг олгодог. WebAssembly нь янз бүрийн програмчлалын хэлнээс эмхэтгэсэн програмуудыг ажиллуулахад зориулсан хөтөчөөс хамааралгүй, бүх нийтийн, доод түвшний завсрын кодоор хангадаг. WebAssembly-д зориулсан JIT-г ашигласнаар та үндсэн кодтой ойролцоо гүйцэтгэлийн түвшинд хүрч чадна.

WebAssembly технологийг C/C++ гэх мэт эмхэтгэсэн хэлээр код бичихийг зөвшөөрснөөр видео кодчилол, аудио боловсруулалт, график болон 3D хувиргалт, тоглоом боловсруулах, криптографийн үйлдэл, математик тооцоолол зэрэг өндөр гүйцэтгэлтэй ажлуудыг хөтөч дээр гүйцэтгэхэд ашиглаж болно. .

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

W3C нь WebAssembly 2.0-д зориулсан гурван тодорхойлолтын төслийг нийтэлсэн:

  • WebAssembly Core - WebAssembly завсрын кодыг ажиллуулах доод түвшний виртуал машиныг тайлбарладаг. WebAssembly-тай холбоотой нөөцүүдийг Java-ийн ".class" файлуудтай төстэй ".wasm" форматаар хүргэж, статик өгөгдөл болон тэдгээр өгөгдөлтэй ажиллах кодын сегментүүдийг агуулсан.
  • WebAssembly JavaScript интерфэйс - JavaScript-тэй нэгтгэх API-ээр хангана. Утга авах, параметрүүдийг WebAssembly функцэд дамжуулах боломжийг танд олгоно. WebAssembly-ийн гүйцэтгэл нь JavaScript-ийн аюулгүй байдлын загварыг дагаж мөрддөг бөгөөд үндсэн системтэй харилцах бүх үйл ажиллагаа нь JavaScript кодыг гүйцэтгэхтэй ижил аргаар явагддаг.
  • WebAssembly Web API - ".wasm" нөөцийг хүсэх, гүйцэтгэх Promise механизм дээр суурилсан програмчлалын интерфейсийг тодорхойлдог. WebAssembly нөөцийн форматыг файлыг бүрэн ачаалахыг хүлээлгүйгээр ажиллуулж эхлэхийн тулд оновчтой болгосон бөгөөд энэ нь вэб програмуудын хариу үйлдлийг сайжруулдаг.

Стандартын эхний хувилбартай харьцуулахад WebAssembly 2.0-ийн үндсэн өөрчлөлтүүд:

  • V128 векторын төрөл ба холбогдох вектор зааварчилгааг дэмждэг бөгөөд энэ нь олон тооны утгууд дээр зэрэгцээ үйлдэл хийх боломжийг олгодог (SIMD, нэг заавар олон өгөгдөл).
  • C++ хэл дээрх стек заагч зэрэг утгуудыг дэлхий даяар холбох боломжийг олгодог хувьсагч хувьсагчдыг импортлох, экспортлох чадвар.
  • Үр дүн нь хэтэрсэн үед онцгой тохиолдол гаргахын оронд хамгийн бага эсвэл дээд боломжтой утгыг буцаадаг (SIMD-д шаардлагатай) шинэ float int хөрвүүлэх заавар.
  • Бүхэл тооны тэмдгийг тэлэх заавар (тэмдэг ба утгыг хадгалахын зэрэгцээ тооны битийн гүнийг нэмэгдүүлэх).
  • Олон утгыг буцаах блок, функцийг дэмжих (олон параметрийг функцэд дамжуулахаас гадна).
  • BigInt JavaScript төрөл болон 64 бит бүхэл тоонуудын WebAssembly дүрслэл хооронд хөрвүүлэх BigInt64Array болон BigUint64Array JavaScript функцуудыг хэрэгжүүлэх.
  • Лавлагааны төрлүүд (funcref ба externref) болон тэдгээртэй холбоотой зааварчилгааг (select, ref.null, ref.func болон ref.is_null) дэмжих.
  • Memory.copy, memory.fill, memory.init, data.drop зааврууд нь санах ойн бүсүүдийн хооронд өгөгдлийг хуулах, санах ойн бүсүүдийг цэвэрлэх зориулалттай.
  • Хүснэгтэд шууд хандах, өөрчлөх заавар (table.set, table.get, table.size, table.grow). Нэг модульд олон хүснэгт үүсгэх, импортлох, экспортлох чадвар. Багц горимд хүснэгтийг хуулах/бөглөх функцууд (table.copy, table.init болон elem.drop).

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

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