WebAssembly 2.0 සම්මත පෙරදසුන තිබේ

W3C විසින් WebAssembly 2.0 මිඩ්ල්වෙයාර් සහ ඒ ආශ්‍රිත API ප්‍රමිතිගත කරන නව පිරිවිතරයක කෙටුම්පතක් ප්‍රකාශයට පත් කර ඇත, බ්‍රව්සර් සහ දෘඪාංග වේදිකා හරහා අතේ ගෙන යා හැකි ඉහළ කාර්ය සාධන යෙදුම් නිර්මාණය කිරීමට හැකි වේ. WebAssembly විවිධ ක්‍රමලේඛන භාෂා වලින් සම්පාදනය කරන ලද යෙදුම් ධාවනය කිරීම සඳහා බ්‍රවුසරයෙන් ස්වාධීන, විශ්වීය, පහත් මට්ටමේ අතරමැදි කේතයක් සපයයි. WebAssembly සඳහා JIT භාවිතා කිරීමෙන්, ඔබට ස්වදේශීය කේතයට ආසන්න කාර්ය සාධන මට්ටම් ලබා ගත හැක.

WebAssembly තාක්‍ෂණය බ්‍රවුසරයේ වීඩියෝ කේතීකරණය, ශ්‍රව්‍ය සැකසුම්, ග්‍රැෆික්ස් සහ ත්‍රිමාණ හැසිරවීම, ක්‍රීඩා සංවර්ධනය, ගුප්ත ලේඛන මෙහෙයුම් සහ ගණිතමය ගණනය කිරීම් වැනි ඉහළ කාර්ය සාධන කාර්යයන් ඉටු කිරීමට භාවිතා කළ හැක. .

WebAssembly හි ප්‍රධාන අරමුණු අතර අතේ ගෙන යා හැකි බව, පුරෝකථනය කළ හැකි හැසිරීම් සහ විවිධ වේදිකාවල සමාන කේත ක්‍රියාත්මක කිරීම සහතික කිරීමයි. මෑතකදී, WebAssembly බ්‍රවුසරවලට සීමා නොවී ඕනෑම යටිතල පහසුකම්, මෙහෙයුම් පද්ධතියක් සහ උපාංගයක් හරහා ආරක්ෂිතව කේතය ක්‍රියාත්මක කිරීම සඳහා විශ්වීය වේදිකාවක් ලෙසද ප්‍රවර්ධනය කර ඇත.

W3C විසින් WebAssembly 2.0 සඳහා කෙටුම්පත් පිරිවිතර තුනක් ප්‍රකාශයට පත් කර ඇත:

  • WebAssembly Core - WebAssembly අතරමැදි කේතය ධාවනය කිරීම සඳහා පහත් මට්ටමේ අථත්‍ය යන්ත්‍රයක් විස්තර කරයි. WebAssembly හා සම්බන්ධ සම්පත් ජාවා හි ".class" ගොනු වලට සමාන ".wasm" ආකෘතියකින් බෙදා හරිනු ලැබේ, එම දත්ත සමඟ වැඩ කිරීම සඳහා ස්ථිතික දත්ත සහ කේත කොටස් අඩංගු වේ.
  • WebAssembly JavaScript අතුරුමුහුණත - JavaScript සමඟ ඒකාබද්ධ කිරීම සඳහා API සපයයි. WebAssembly කාර්යයන් වෙත අගයන් ලබා ගැනීමට සහ පරාමිති ලබා දීමට ඔබට ඉඩ සලසයි. WebAssembly ක්‍රියාත්මක කිරීම JavaScript ආරක්ෂණ ආකෘතිය අනුගමනය කරන අතර ප්‍රධාන පද්ධතිය සමඟ ඇති සියලුම අන්තර්ක්‍රියා JavaScript කේතය ක්‍රියාත්මක කරන ආකාරයටම සිදු කෙරේ.
  • WebAssembly Web API - ".wasm" සම්පත් ඉල්ලීම සහ ක්‍රියාත්මක කිරීම සඳහා පොරොන්දු යාන්ත්‍රණය මත පදනම් වූ ක්‍රමලේඛන අතුරු මුහුණතක් නිර්වචනය කරයි. WebAssembly සම්පත් ආකෘතිය ගොනුව සම්පූර්ණයෙන් පූරණය වන තෙක් බලා නොසිට ක්‍රියාත්මක කිරීම ආරම්භ කිරීමට ප්‍රශස්ත කර ඇත, එය වෙබ් යෙදුම්වල ප්‍රතිචාරාත්මක බව වැඩි දියුණු කරයි.

සම්මතයේ පළමු අනුවාදයට සාපේක්ෂව WebAssembly 2.0 හි ප්රධාන වෙනස්කම්:

  • ඔබට සමාන්තරව බහු සංඛ්‍යාත්මක අගයන් මත ක්‍රියා කිරීමට ඉඩ සලසන v128 දෛශික වර්ගය සහ අදාළ දෛශික උපදෙස් සඳහා සහාය (SIMD, තනි උපදෙස් බහු දත්ත).
  • C++ හි stack pointers වැනි අගයන් සඳහා ගෝලීය බන්ධනයට ඉඩ සලසමින්, විකෘති ගෝලීය විචල්‍යයන් ආනයනය කිරීමට සහ අපනයනය කිරීමට ඇති හැකියාව.
  • ප්‍රතිඵලය පිටාර ගැලීමේදී ව්‍යතිරේකයක් විසි කිරීම වෙනුවට, හැකි අවම හෝ උපරිම අගය (SIMD සඳහා අවශ්‍ය) ලබා දෙන නව float to int පරිවර්තනය උපදෙස්.
  • නිඛිලවල සංඥා ප්‍රසාරණය සඳහා උපදෙස් (ලකුණ සහ අගය පවත්වා ගනිමින් සංඛ්‍යාවක බිටු ගැඹුර වැඩි කිරීම).
  • බහු අගයන් ආපසු ලබා දෙන බ්ලොක් සහ ශ්‍රිත සඳහා සහාය (ශ්‍රිතවලට බහුවිධ පරාමිති යැවීමට අමතරව).
  • BigInt64Array සහ BigUint64Array ජාවාස්ක්‍රිප්ට් ක්‍රියාවන් BigInt JavaScript වර්ගය සහ 64-bit පූර්ණ සංඛ්‍යා වල WebAssembly නියෝජනය අතර පරිවර්තනය කිරීම සඳහා ක්‍රියාත්මක කිරීම.
  • විමර්ශන වර්ග (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

අදහස් එක් කරන්න