The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Опубликован стандарт WebAssembly 3.0

18.09.2025 06:55

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

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

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

Доступны следующие спецификации:

  • WebAssembly Core - описывает низкоуровневую виртуальную машину для выполнения промежуточного кода WebAssembly. Связанные с WebAssembly ресурсы поставляются в формате ".wasm", схожем с файлами ".class" в Java и содержащем статические данные и сегменты кода для работы с этими данными.
  • WebAssembly JavaScript API - предоставляет API для интеграции с JavaScript. Позволяет получать значения и передавать параметры в функции WebAssembly. Выполнение WebAssembly соответствует модели безопасности JavaScript и всё взаимодействие с основной системой производится по аналогии с выполнением JavaScript-кода.
  • WebAssembly Web API - определяет программный интерфейс на основе механизма Promise для запроса и выполнения ресурсов ".wasm". Формат ресурсов WebAssembly оптимизирован для начала выполнения, не дожидаясь полной загрузки файла, что позволяет повысить отзывчивость web-приложений.
  • WASI API - определяет модульный системный интерфейс для запуска WebAssembly вне браузеров и предоставления доступа к таким ресурсам, как файлы, сетевые соединения, генератор псевдослучайных чисел и системные часы.

Отмечается, что в новой версии стандарта значительно улучшена поддержка компиляции в WebAssembly высокоуровневых языков. Например, реализована возможность компиляции в WebAssembly проектов на языках Java, OCaml, Scala, Kotlin, Scheme и Dart. Основные изменения в WebAssembly 3.0, по сравнению со второй версией стандарта:

  • Реализована поддержка 64-разрядного адресного пространства. Для адресации памяти теперь может применяться тип i64, а не только i32, что расширяет доступное для приложений адресное пространство с 4 ГБ до 16 ЕБ (при выполнении в браузере выставлено ограничение в 16 ГБ).
  • Предоставлена возможность одновременного использования в одном WebAssembly-модуле нескольких объектов памяти и работы с разными адресными пространствами. Среди прочего, возможно копирование данных между разными экземплярами объектов памяти, размещёнными в разных адресных пространствах.
  • Добавлена поддержка сборки мусора. Помимо ранее доступной линейной памяти предложен отдельный тип хранилища, автоматически управляемый при помощи сборщика мусора. Компилятор теперь может использовать отдельные структуры данных, массивы и переменные, за выделение памяти и управление жизненным циклом которых отвечает WebAssembly.
  • Добавлена поддержка типизированных ссылок, которые могут описывать точную структуру значения, на которое указывает ссылка, что позволяет избежать дополнительных проверок во время выполнения. Поддерживаются подтипы, рекурсия типов и возможность безопасного использования ссылок на функции, не требующих проверок типов и границ во время выполнения.
  • Добавлена поддержка хвостовых вызовов (Tail call), при которых текущая функция сразу завершает выполнение после вызова другой функции, не расходуя место в стеке.
  • Добавлена поддержка обработки исключений.
  • Добавлена поддержка "ослабленных" (relaxed) векторных SIMD-инструкций, позволяющих добиться более высокой производительности за счёт отказа от строгого соблюдения семантики на всех аппаратных платформах.
  • Добавлена поддержка детерминированного профиля выполнения, который определяет не зависящее от текущей платформы поведение для инструкций, результаты выполнения которых могут отличаться на разных платформах (операции с плавающей запятой, возвращение значения NaN, ослабленные векторные инструкции). При выборе данного профиля Wasm обеспечивает детерминированное поведение, воспроизводимость и переносимость.
  • Добавлен синтаксис для создания собственных аннотаций, позволяющих прикрепить дополнительную информацию к коду WebAssembly. Ранее поддержка пользовательских секций, позволяющих хранить произвольную информацию, имелась в бинарном формате WebAssembly, но отсутствовала в текстовом формате WebAssembly. Теперь есть возможность добавлять эту информацию в читаемом и редактируемом виде.
  • В JavaScript API добавлены встроенные функции для работы со строками. Ранее строки JavaScript можно было передавать в WebAssembly только как внешние ссылки, а теперь можно напрямую обращаться к строкам и манипулировать ими внутри WebAssembly.


  1. Главная ссылка к новости (https://webassembly.org/news/2...)
  2. OpenNews: Доступен Emscripten 4.0, компилятор из C/C++ в WebAssembly
  3. OpenNews: Доступен Wasmer 5.0, инструментарий для создания приложений на базе WebAssembly
  4. OpenNews: Анонсирован язык программирования Moonbit, оптимизированный для WebAssembly
  5. OpenNews: Доступен предварительный вариант стандарта WebAssembly 2.0
  6. OpenNews: W3C придал WebAssembly статус рекомендованного стандарта
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63899-webassembly
Ключевые слова: webassembly, wasm
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (26) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, 12yoexpert (ok), 08:31, 18/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    хоспаде, оно ещё нигде не используется, а они уже два раза обратную
    совместимость сломали
     
     
  • 2.7, Аноним (7), 08:39, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    То есть совместимость надо ломать, когда ей уже пользуются вовсю? Л - Логика.
     
  • 2.8, Аноним (8), 08:39, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Так лучше пусть сейчас ломают, чем потом
     
     
  • 3.16, Аноним (16), 08:59, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Потом тоже сломают, не переживайте.
     
  • 2.19, Аноним (19), 09:11, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > оно ещё нигде не используется

    Ложь.

    > обратную совместимость сломали

    Ложь.

     
     
  • 3.26, 12yoexpert (ok), 09:57, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    истина оба раза, а у тебя как раз ложь
     
  • 2.23, жявамэн (ok), 09:26, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    марш в тцк пятак
     

  • 1.3, 12yoexpert (ok), 08:32, 18/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Отмечается, что в новой версии стандарта значительно улучшена поддержка компиляции в WebAssembly высокоуровневых языков. Например, реализована возможность компиляции в WebAssembly проектов на языках Java, OCaml, Scala, Kotlin, Scheme и Dart.

    то есть С у веб-синьоров уже не язык высокого уровня?

     
     
  • 2.9, Аноним (7), 08:40, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В С уже завезли sum types и безопасную работу с памятью?
     
  • 2.10, Аноним (10), 08:41, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Си вродиж ни когда высокоуровневым не былжеш. Тут о компиляторе разговор, тип теперь можете писать вот на том и на том а работать пудет шо ракета ибо все превварится в webassembly.
     
  • 2.20, Аноним (20), 09:21, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Так это те языки, что добавтли в третьей версии. А C, С++  были и в предыдущей.
     

  • 1.4, Аноним (4), 08:33, 18/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Доброе утро! Вопрос к специалистам: эта штуковина в будущем заменит JS или нет?
     
     
  • 2.11, Аноним (7), 08:43, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не заменит, пока не добавят zero-copy интеграцию с веб апи. Сейчас васм годится только для очень узкого класса задач -- таких задач, где ты ровно один раз формируешь аргументы, ровно один раз вызываешь васм-код, он там начинает шуршать CPU минуту-две, занимаясь сложными вычислениями, а потом он ровно один раз выдает результат. Очевидно, что обычный обработчик UI на таком писать неразумно.
     

  • 1.5, Аноним (10), 08:35, 18/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Нам теперь этот ваш электрон н... ненужОн? Не?
     
  • 1.6, Жироватт (ok), 08:37, 18/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Как сделать java которая не java или стрип от xckd про 15 стандартов
     
     
  • 2.12, Аноним (7), 08:44, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    У нас уже была жава в браузерах. Назывались "ява-апплеты". Тормозили безбожно. Да и безопасность текла.
     
     
  • 3.15, IMBird (ok), 08:51, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Зато не дотнет. Героически подебили злобный сервелат (причём сами гаврики из мс), лол.
     

  • 1.13, Букер (?), 08:44, 18/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > реализована возможность компиляции в WebAssembly проектов на языках Java, OCaml, Scala, Kotlin, Scheme и Dart

    что это за старье, если не появится поддержка современных языков, не взлетит

     
     
  • 2.14, Аноним (10), 08:47, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Вы про раст опять? Так-то java, kotlin вполне современны
     
     
  • 3.22, Букер (?), 09:24, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ну так-то сейчас без этого никуда. В ядро завозят, убунта вон тоже начинает везде внедрять. Молодежь не хочет в "дидовских" языках разбираться, говорит что очень сложно и не безопасно. А сабж на кого рассчитан? Вот и мне приходится мысль свою разжевывать. То-то и оно.
     
     
  • 4.24, Tron is Whistling (?), 09:39, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Вот та "молодёжь"-то и не взлетит...
     
  • 4.25, Аноним (10), 09:43, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Тут давиче публиковался рейтинг яп, так вот, некоторые дидовские языки неожиданно поднялись в рейтингах.
     
  • 2.17, Карлос Сношайтилис (ok), 08:59, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А чего не хватает?
    Особенно с учётом того, что C/C++/Go/Rust уже поддерживаются.
     

  • 1.18, Аноним (-), 09:03, 18/09/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
  • 1.21, Аноним (21), 09:23, 18/09/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру