Достапен стандарден преглед на 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 интерфејс - Обезбедува API за интеграција со JavaScript. Ви овозможува да добивате вредности и да пренесувате параметри до функциите WebAssembly. Извршувањето на WebAssembly го следи безбедносниот модел JavaScript и целата интеракција со главниот систем се врши на ист начин како и извршувањето на JavaScript кодот.
  • WebAssembly Web API - Дефинира програмски интерфејс базиран на механизмот Promise за барање и извршување на ресурсите „.wasm“. Форматот на ресурси WebAssembly е оптимизиран за да започне извршувањето без да се чека датотеката целосно да се вчита, што ја подобрува реакцијата на веб-апликациите.

Главните промени во WebAssembly 2.0 во споредба со првата верзија на стандардот:

  • Поддршка за типот на вектор v128 и сродните векторски инструкции кои ви дозволуваат паралелно да извршувате дејства на повеќе нумерички вредности (SIMD, единечна инструкција повеќе податоци).
  • Способност за увоз и извоз на променливи глобални променливи, овозможувајќи глобално врзување за вредности како што се покажувачите на стек во C++.
  • Нови инструкции за конверзија float во int кои, наместо да фрлаат исклучок кога резултатот ќе се прелее, ја враќаат минималната или максималната можна вредност (неопходна за SIMD).
  • Инструкции за проширување на знакот на цели броеви (зголемување на длабочината на битот на број додека се одржува знакот и вредноста).
  • Поддршка за блокови и функции кои враќаат повеќе вредности (покрај пренесувањето на повеќе параметри на функциите).
  • Имплементација на функциите BigInt64Array и BigUint64Array JavaScript за конвертирање помеѓу типот BigInt JavaScript и претставата WebAssembly на 64-битни цели броеви.
  • Поддршка за референтни типови (funcref и externref) и нивните поврзани инструкции (select, ref.null, ref.func и ref.is_null).
  • Memory.copy, memory.fill, memory.init и data.отпуштете ги инструкциите за копирање податоци помеѓу мемориските региони и чистење на мемориските региони.
  • Инструкции за директно пристапување и менување на табелите (табела.сет, табела.земи, табела.големина, табела.расте). Можност за креирање, увоз и извоз на повеќе табели во еден модул. Функции за копирање/пополнување табели во сериски режим (табела.copy, table.init и elem.drop).

Извор: opennet.ru

Додадете коментар