Π”ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ Π΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π΅Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° стандарта WebAssembly 2.0

ΠšΠΎΠ½ΡΠΎΡ€Ρ†ΠΈΡƒΠΌ W3C ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° Ρ‡Π΅Ρ€Π½ΠΎΠ²Π° вСрсия Π½Π° Π½ΠΎΠ²Π°Ρ‚Π° спСцификация, която стандартизира мСТдинния ΠΊΠΎΠ΄ WebAssembly 2.0 ΠΈ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈΡ с Π½Π΅Π³ΠΎ API, позволяващ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° високо ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΈ прилоТСния, прСносими ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΈ ΠΈ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ. WebAssembly прСдоставя нСзависим ΠΎΡ‚ Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° унивСрсалСн ниско Π½ΠΈΠ²ΠΎ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄ Π·Π° изпълнСниС Π½Π° прилоТСния, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΈ Π΅Π·ΠΈΡ†ΠΈ. Π§Ρ€Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° JIT Π·Π° WebAssembly ΠΌΠΎΠΆΠ΅ Π΄Π° сС постигнС производитСлност, Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ нативния ΠΊΠΎΠ΄.

ВСхнологията WebAssembly ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° изпълнСниС Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π°, изискващи висока производитСлност, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° Π²ΠΈΠ΄Π΅ΠΎ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π·Π²ΡƒΠΊ, Ρ€Π°Π±ΠΎΡ‚Π° с Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΈ 3D, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΈΠ³Ρ€ΠΈ, криптографски ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ матСматичСски изчислСния, Ρ‡Ρ€Π΅Π· ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° Π½Π° ΠΊΠΎΠ΄, написан Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΈ Π΅Π·ΠΈΡ†ΠΈ ΠΊΠ°Ρ‚ΠΎ 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, single instruction multiple data).
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° внос ΠΈ износ Π½Π° измСняСми (mutable) Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, позволяващи ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π·Π° стойности ΠΊΠ°Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° стСк Π² C++.
  • Нови инструкции Π·Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° Ρ‚ΠΈΠΏ float Π² int, ΠΊΠΎΠΈΡ‚ΠΎ вмСсто Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π»ΠΈΠ²Π°Π½Π΅ Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π°, Π²Ρ€ΡŠΡ‰Π°Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π°Ρ‚Π° ΠΈΠ»ΠΈ максималната възмоТна стойност (Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° SIMD).
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ Π½Π° Π·Π½Π°ΠΊΠ° Π½Π° Ρ†Π΅Π»ΠΈ числа (ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° разрядността Π½Π° числото със Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° Π·Π½Π°ΠΊΠ° ΠΈ стойността).
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° няколко стойности Π±Π»ΠΎΠΊΠΎΠ²ΠΎ ΠΈ Ρ‡Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π² допълнСниС към ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° няколко ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ).
  • Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ Π½Π° JavaScript Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ BigInt64Array ΠΈ BigUint64Array Π·Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ JavaScript Ρ‚ΠΈΠΏ BigInt ΠΈ прСдставянС Π½Π° 64-Π±ΠΈΡ‚ΠΎΠ²ΠΈ Ρ†Π΅Π»ΠΈ числа Π² 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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster