Выпущен проект стандарта WebAssembly 2.0 

Представлен W3C Недавно через пост проект новой спецификации который стандартизирует код подготовки WebAssembly 2.0 и связанный с ним API для создания высокопроизводительных приложений, переносимых между браузерами и аппаратными платформами.

Для тех, кто плохо знаком с WebAssembly, вы должны знать, что это обеспечивает общее промежуточное программное обеспечение, низкий уровень и независимый от браузера, для запуска скомпилированных приложений из разных языков программирования. Используя JIT для WebAssembly, вы можете достичь уровня производительности, близкого к собственному коду.

О веб-сборке

WebAssembly может использоваться для выполнения высокопроизводительных задач в браузере, такие как кодирование видео, обработка звука, манипулирование 3D и графикой, разработка игр, криптографические операции и математические вычисления, путем выполнения кода, написанного на скомпилированных языках, таких как C/C++.

Среди основных задач WebAssembly — обеспечение переносимости, предсказуемости поведения и идентичности исполнения кода на разных платформах. В последнее время WebAssembly также продвигается как универсальная платформа для безопасного выполнения кода на любой инфраструктуре, операционной системе и устройстве, не ограничиваясь браузерами.

О проекте WebAssembly 2.0

Что касается изменений, которые были внесены с тех пор, как WebAssembly являются готовыми предложениями для WebAssembly 2.0, это SIMD с фиксированной шириной, массовые операции с памятью, ссылочные типы, поддержка JavaScript BigInt для WebAssembly i64, поддержка нескольких возвращаемых значений и импорт/экспорт изменяемых глобальные переменные.

W3C опубликовал три проекта спецификаций WebAssembly 2.0:

  1. Ядро веб-сборки: описывает низкоуровневую виртуальную машину для запуска промежуточного кода WebAssembly. Ресурсы, связанные с WebAssembly, имеют формат «.wasm», аналогичный файлам Java «.class», которые содержат статические данные и сегменты кода для работы с этими данными.
  2. Интерфейс JavaScript WebAssembly: предоставляет API для интеграции с JavaScript. Позволяет получать значения и передавать параметры функциям WebAssembly. Выполнение WebAssembly следует модели безопасности JavaScript, и все взаимодействие с хостом выполняется аналогично запуску кода JavaScript.
  3. Веб-API WebAssembly: определяет API на основе механизма Promise для запроса и выполнения ресурсов «.wasm». Формат ресурса WebAssembly оптимизирован для запуска выполнения без ожидания полной загрузки файла, что повышает скорость отклика веб-приложений.

Различия между WebAssembly и WebAssembly 2.0

Также следует отметить, что в WebAssembly 2.0 есть несколько важных изменений по сравнению с первой версией стандарта:

  • v128 поддержка векторного типа и связанные векторные инструкции, которые позволяют выполнять операции над несколькими числовыми значениями параллельно (SIMD, одна инструкция, несколько данных).
  • Возможность импортировать и экспортировать изменяемые глобальные переменные, что позволяет глобально связывать значения как указатели стека в C++.
  • Новые инструкции по преобразованию float в int, который вместо исключения при переполнении результата возвращает минимальное или максимальное возможное значение (требуется для SIMD).
  • Инструкции по расширению знака целых чисел (увеличение разрядности числа с сохранением знака и значения).
  • Поддержка возврата нескольких значений блоками и функциями (а также передачу нескольких параметров функциям).
  • Реализуйте функции JavaScript BigInt64Array и BigUint64Array. для преобразования между типом JavaScript BigInt и представлением WebAssembly 64-битных целых чисел.
  • Поддержка ссылочных типов (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).

Наконец, если вам интересно узнать об этом больше, вы можете ознакомиться с подробностями По следующей ссылке.


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован.

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.