Available ang WebAssembly 2.0 Standard Preview

Ang W3C ay naglathala ng draft ng isang bagong detalye na nag-standardize ng WebAssembly 2.0 middleware at ang nauugnay na API nito, na nagbibigay-daan sa paglikha ng mga application na may mataas na pagganap na portable sa mga browser at hardware platform. Nagbibigay ang WebAssembly ng browser-independent, unibersal, mababang antas na intermediate code para sa pagpapatakbo ng mga application na pinagsama-sama mula sa iba't ibang programming language. Sa pamamagitan ng paggamit ng JIT para sa WebAssembly, makakamit mo ang mga antas ng pagganap na malapit sa katutubong code.

Maaaring gamitin ang teknolohiya ng WebAssembly upang magsagawa ng mga gawaing may mataas na pagganap sa browser, tulad ng pag-encode ng video, pagpoproseso ng audio, graphics at 3D na pagmamanipula, pagbuo ng laro, mga operasyong cryptographic at mga kalkulasyon sa matematika sa pamamagitan ng pagpayag sa code na nakasulat sa mga pinagsama-samang wika tulad ng C/C++ .

Kabilang sa mga pangunahing layunin ng WebAssembly ay ang pagtiyak ng portability, predictable na gawi at magkaparehong code execution sa iba't ibang platform. Kamakailan, ang WebAssembly ay na-promote din bilang isang unibersal na platform para sa ligtas na pagpapatupad ng code sa anumang imprastraktura, operating system, at device, hindi limitado sa mga browser.

Ang W3C ay naglathala ng tatlong draft na mga detalye para sa WebAssembly 2.0:

  • WebAssembly Core - Inilalarawan ang isang mababang antas na virtual machine para sa pagpapatakbo ng WebAssembly intermediate code. Ang mga mapagkukunang nauugnay sa WebAssembly ay inihahatid sa isang ".wasm" na format, katulad ng ".class" na mga file sa Java, na naglalaman ng static na data at mga segment ng code para sa pagtatrabaho sa data na iyon.
  • WebAssembly JavaScript Interface - Nagbibigay ng API para sa pagsasama sa JavaScript. Binibigyang-daan kang makakuha ng mga halaga at ipasa ang mga parameter sa mga function ng WebAssembly. Ang pagpapatupad ng WebAssembly ay sumusunod sa modelo ng seguridad ng JavaScript at ang lahat ng pakikipag-ugnayan sa pangunahing sistema ay isinasagawa sa parehong paraan tulad ng pagpapatupad ng JavaScript code.
  • WebAssembly Web API - Tinutukoy ang isang interface ng programming batay sa mekanismo ng Pangako para sa paghiling at pagpapatupad ng mga mapagkukunang ".wasm". Ang format ng mapagkukunan ng WebAssembly ay na-optimize upang simulan ang pagpapatupad nang hindi naghihintay para sa ganap na pag-load ng file, na nagpapahusay sa pagtugon ng mga web application.

Ang mga pangunahing pagbabago sa WebAssembly 2.0 kumpara sa unang bersyon ng pamantayan:

  • Suporta para sa uri ng vector ng v128 at mga kaugnay na tagubilin sa vector na nagbibigay-daan sa iyong magsagawa ng mga pagkilos sa maramihang mga numeric na halaga nang magkatulad (SIMD, solong pagtuturo ng maramihang data).
  • Kakayahang mag-import at mag-export ng mga nababagong global na variable, na nagbibigay-daan sa pandaigdigang pagbubuklod para sa mga halaga tulad ng mga stack pointer sa C++.
  • Bagong float sa int na mga tagubilin sa conversion na, sa halip na maghagis ng exception kapag umapaw ang resulta, ibalik ang minimum o maximum na posibleng halaga (kinakailangan para sa SIMD).
  • Mga tagubilin para sa pagpapalawak ng sign ng mga integer (tinataas ang bit depth ng isang numero habang pinapanatili ang sign at value).
  • Suporta para sa mga bloke at function na nagbabalik ng maraming halaga (bilang karagdagan sa pagpasa ng maraming parameter sa mga function).
  • Pagpapatupad ng BigInt64Array at BigUint64Array JavaScript function para mag-convert sa pagitan ng BigInt JavaScript type at ng WebAssembly na representasyon ng 64-bit integer.
  • Suporta para sa mga uri ng reference (funcref at externref) at ang mga nauugnay na tagubilin nito (piliin, ref.null, ref.func at ref.is_null).
  • Memory.copy, memory.fill, memory.init, at data.drop ang mga tagubilin para sa pagkopya ng data sa pagitan ng mga rehiyon ng memorya at pag-clear ng mga rehiyon ng memorya.
  • Mga tagubilin para sa direktang pag-access at pagbabago ng mga talahanayan (table.set, table.get, table.size, table.grow). Kakayahang lumikha, mag-import at mag-export ng maramihang mga talahanayan sa isang module. Mga function para sa pagkopya/pagpuno ng mga talahanayan sa batch mode (table.copy, table.init at elem.drop).

Pinagmulan: opennet.ru

Magdagdag ng komento