WebAssembly 2.0 Standard ืชืฆื•ื’ื” ืžืงื“ื™ืžื” ื–ืžื™ื ื”

ื”-W3C ืคืจืกื ื˜ื™ื•ื˜ื” ืฉืœ โ€‹โ€‹ืžืคืจื˜ ื—ื“ืฉ ื”ืžืชืงืŸ ืืช ืชื•ื›ื ืช ื”ืืžืฆืข ืฉืœ WebAssembly 2.0 ื•ืืช ื”-API ื”ืžืฉื•ื™ืš ืœื”, ื”ืžืืคืฉืจ ื™ืฆื™ืจืช ื™ื™ืฉื•ืžื™ื ื‘ืขืœื™ ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื ืฉื ื™ื™ื“ื™ื ื‘ื™ืŸ ื“ืคื“ืคื ื™ื ื•ืคืœื˜ืคื•ืจืžื•ืช ื—ื•ืžืจื”. WebAssembly ืžืกืคืงืช ืงื•ื“ ื‘ื™ื ื™ื™ื ืื•ื ื™ื‘ืจืกืœื™, ื‘ืœืชื™ ืชืœื•ื™ ื‘ื“ืคื“ืคืŸ, ื‘ืจืžื” ื ืžื•ื›ื” ืœื”ืคืขืœืช ื™ื™ืฉื•ืžื™ื ื”ืžื•ืจื›ื‘ื™ื ืžืฉืคื•ืช ืชื›ื ื•ืช ืฉื•ื ื•ืช. ื‘ืืžืฆืขื•ืช JIT ืขื‘ื•ืจ WebAssembly, ืืชื” ื™ื›ื•ืœ ืœื”ืฉื™ื’ ืจืžื•ืช ื‘ื™ืฆื•ืขื™ื ืงืจื•ื‘ื•ืช ืœืงื•ื“ ืžืงื•ืจื™.

ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื˜ื›ื ื•ืœื•ื’ื™ื™ืช WebAssembly ืœื‘ื™ืฆื•ืข ืžืฉื™ืžื•ืช ื‘ืขืœื•ืช ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื ื‘ื“ืคื“ืคืŸ, ื›ื’ื•ืŸ ืงื™ื“ื•ื“ ื•ื™ื“ืื•, ืขื™ื‘ื•ื“ ืื•ื“ื™ื•, ื’ืจืคื™ืงื” ื•ืชืœืช ืžื™ืžื“, ืคื™ืชื•ื— ืžืฉื—ืงื™ื, ืคืขื•ืœื•ืช ืงืจื™ืคื˜ื•ื’ืจืคื™ื•ืช ื•ื—ื™ืฉื•ื‘ื™ื ืžืชืžื˜ื™ื™ื ืขืœ ื™ื“ื™ ืžืชืŸ ืืคืฉืจื•ืช ืœืงื•ื“ ืฉื ื›ืชื‘ ื‘ืฉืคื•ืช ืงื•ืžืคื™ืœืฆื™ื” ื›ืžื• C/C++ .

ื‘ื™ืŸ ื”ืžื˜ืจื•ืช ื”ืขื™ืงืจื™ื•ืช ืฉืœ WebAssembly ื”ื™ื ื”ื‘ื˜ื—ืช ื ื™ื™ื“ื•ืช, ื”ืชื ื”ื’ื•ืช ืฆืคื•ื™ื” ื•ื‘ื™ืฆื•ืข ืงื•ื“ ื–ื”ื” ื‘ืคืœื˜ืคื•ืจืžื•ืช ืฉื•ื ื•ืช. ืœืื—ืจื•ื ื”, WebAssembly ืงื•ื“ืžื” ื’ื ื›ืคืœื˜ืคื•ืจืžื” ืื•ื ื™ื‘ืจืกืœื™ืช ืœื‘ื™ืฆื•ืข ืžืื•ื‘ื˜ื— ืฉืœ ืงื•ื“ ื‘ื›ืœ ืชืฉืชื™ืช, ืžืขืจื›ืช ื”ืคืขืœื” ื•ืžื›ืฉื™ืจ, ืœื ืžื•ื’ื‘ืœ ืœื“ืคื“ืคื ื™ื.

ื”-W3C ืคืจืกื ืฉืœื•ืฉ ื˜ื™ื•ื˜ื•ืช ืžืคืจื˜ื™ื ืขื‘ื•ืจ WebAssembly 2.0:

  • WebAssembly Core - ืžืชืืจ ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช ื‘ืจืžื” ื ืžื•ื›ื” ืœื”ืคืขืœืช ืงื•ื“ ื‘ื™ื ื™ื™ื WebAssembly. ืžืฉืื‘ื™ื ื”ืžืฉื•ื™ื›ื™ื ืœ-WebAssembly ืžืกื•ืคืงื™ื ื‘ืคื•ืจืžื˜ ".wasm", ื‘ื“ื•ืžื” ืœืงื‘ืฆื™ ".class" ื‘-Java, ื”ืžื›ื™ืœื™ื ื ืชื•ื ื™ื ืกื˜ื˜ื™ื™ื ื•ืคืœื—ื™ ืงื•ื“ ืœืขื‘ื•ื“ื” ืขื ื ืชื•ื ื™ื ืืœื”.
  • WebAssembly JavaScript Interface - ืžืกืคืง API ืœืื™ื ื˜ื’ืจืฆื™ื” ืขื JavaScript. ืžืืคืฉืจ ืœืš ืœืงื‘ืœ ืขืจื›ื™ื ื•ืœื”ืขื‘ื™ืจ ืคืจืžื˜ืจื™ื ืœืคื•ื ืงืฆื™ื•ืช WebAssembly. ื‘ื™ืฆื•ืข WebAssembly ืขืงื•ื‘ ืื—ืจ ืžื•ื“ืœ ื”ืื‘ื˜ื—ื” ืฉืœ JavaScript ื•ื›ืœ ื”ืื™ื ื˜ืจืืงืฆื™ื” ืขื ื”ืžืขืจื›ืช ื”ืจืืฉื™ืช ืžืชื‘ืฆืขืช ื‘ืื•ืชื• ืื•ืคืŸ ื›ืžื• ื‘ื™ืฆื•ืข ืงื•ื“ JavaScript.
  • WebAssembly Web API - ืžื’ื“ื™ืจ ืžืžืฉืง ืชื›ื ื•ืช ื”ืžื‘ื•ืกืก ืขืœ ืžื ื’ื ื•ืŸ ื”-Promise ืœื‘ืงืฉืช ื•ื‘ื™ืฆื•ืข ืžืฉืื‘ื™ ".wasm". ืคื•ืจืžื˜ ื”ืžืฉืื‘ ืฉืœ WebAssembly ืžื•ืชืื ื›ื“ื™ ืœื”ืชื—ื™ืœ ื‘ื‘ื™ืฆื•ืข ืžื‘ืœื™ ืœื”ืžืชื™ืŸ ืœื˜ืขื™ื ื” ืžืœืื” ืฉืœ ื”ืงื•ื‘ืฅ, ืžื” ืฉืžืฉืคืจ ืืช ื”ื”ื™ืขื ื•ืช ืฉืœ ื™ื™ืฉื•ืžื™ ืื™ื ื˜ืจื ื˜.

ื”ืฉื™ื ื•ื™ื™ื ื”ืขื™ืงืจื™ื™ื ื‘-WebAssembly 2.0 ื‘ื”ืฉื•ื•ืื” ืœื’ืจืกื” ื”ืจืืฉื•ื ื” ืฉืœ ื”ืชืงืŸ:

  • ืชืžื™ื›ื” ื‘ืกื•ื’ ื”ื•ื•ืงื˜ื•ืจ v128 ื•ื”ื•ืจืื•ืช ื•ืงื˜ื•ืจ ืงืฉื•ืจื•ืช ื”ืžืืคืฉืจื•ืช ืœืš ืœื‘ืฆืข ืคืขื•ืœื•ืช ืขืœ ืžืกืคืจ ืขืจื›ื™ื ืžืกืคืจื™ื™ื ื‘ืžืงื‘ื™ืœ (SIMD, ื”ื•ืจืื•ืช ืžืจื•ื‘ื•ืช ื ืชื•ื ื™ื ื‘ื•ื“ื“ื™ื).
  • ื™ื›ื•ืœืช ืœื™ื™ื‘ื ื•ืœื™ื™ืฆื ืžืฉืชื ื™ื ื’ืœื•ื‘ืœื™ื™ื ื”ื ื™ืชื ื™ื ืœืฉื™ื ื•ื™, ื”ืžืืคืฉืจืช ืœื”ื—ื™ืœ ื›ืจื™ื›ื” ื’ืœื•ื‘ืœื™ืช ืขืœ ืขืจื›ื™ื ื›ื’ื•ืŸ ืžืฆื‘ื™ืขื™ ืžื—ืกื ื™ืช ื‘-C++.
  • ื”ื•ืจืื•ืช ื”ืžืจื” ื—ื“ืฉื•ืช ืฉืœ float to int ืฉื‘ืžืงื•ื ืœื–ืจื•ืง ื—ืจื™ื’ ื›ืืฉืจ ื”ืชื•ืฆืื” ืขื•ืœื” ืขืœ ื’ื“ื•ืชื™ื”, ืžื—ื–ื™ืจื•ืช ืืช ื”ืขืจืš ื”ืžื™ื ื™ืžืœื™ ืื• ื”ืžืงืกื™ืžืœื™ ื”ืืคืฉืจื™ (ื”ื›ืจื—ื™ ืขื‘ื•ืจ SIMD).
  • ื”ื•ืจืื•ืช ืœื”ืจื—ื‘ืช ืกื™ืžืŸ ืฉืœ ืžืกืคืจื™ื ืฉืœืžื™ื (ื”ื’ื“ืœืช ืขื•ืžืง ื”ืกื™ื‘ื™ื•ืช ืฉืœ ืžืกืคืจ ืชื•ืš ืฉืžื™ืจื” ืขืœ ืกื™ืžืŸ ื•ืขืจืš).
  • ืชืžื™ื›ื” ื‘ืœื•ืงื™ื ื•ืคื•ื ืงืฆื™ื•ืช ื”ืžื—ื–ื™ืจื•ืช ืขืจื›ื™ื ืžืจื•ื‘ื™ื (ื‘ื ื•ืกืฃ ืœื”ืขื‘ืจืช ืคืจืžื˜ืจื™ื ืžืจื•ื‘ื™ื ืœืคื•ื ืงืฆื™ื•ืช).
  • ื™ื™ืฉื•ื ืฉืœ ืคื•ื ืงืฆื™ื•ืช ื”-BigInt64Array ื•-BigUint64Array JavaScript ืœื”ืžืจื” ื‘ื™ืŸ ืกื•ื’ ื”-BigInt JavaScript ืœื‘ื™ืŸ ื™ื™ืฆื•ื’ WebAssembly ืฉืœ ืžืกืคืจื™ื ืฉืœืžื™ื ืฉืœ 64 ืกื™ื‘ื™ื•ืช.
  • ืชืžื™ื›ื” ื‘ืกื•ื’ื™ ื”ืคื ื™ื•ืช (funcref ื•-externref) ื•ื”ื”ื•ืจืื•ืช ื”ื ืœื•ื•ืช ืืœื™ื”ื (ื‘ื—ืจ, 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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”