Достъпен е предварителен вариант на стандарта 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