The OpenNET Project / Index page

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

Доступен предварительный вариант стандарта WebAssembly 2.0

20.04.2022 11:31

Консорциум 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 оптимизирован для начала выполнения, не дожидаясь полной загрузки файла, что позволяет повысить отзывчивость web-приложений.

Основные изменения в 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).


  1. Главная ссылка к новости (https://www.w3.org/blog/news/a...)
  2. OpenNews: Доступен Wasmer 2.0, инструментарий для создания приложений на базе WebAssembly
  3. OpenNews: Доступен Emscripten 3.0, компилятор из C/C++ в WebAssembly
  4. OpenNews: Вариант LibreOffice, скомпилированный в WebAssembly и работающий в web-браузере
  5. OpenNews: Первый выпуск wasm3, быстрого интерпретатора WebAssembly
  6. OpenNews: W3C придал WebAssembly статус рекомендованного стандарта
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/57052-webassembly
Ключевые слова: webassembly
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (60) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, DEF (?), 11:53, 20/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Когда стандарт SVG 2.0 допилят?
     
     
  • 2.6, Аноним (6), 12:18, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    С поддержкой wasm 2.0?
     
     
  • 3.32, Аноним (32), 15:07, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ещё 1-ый не внедрили, а уже 2-ой запилили... На кой они так часто нужны?!
     
     
  • 4.33, Брат Анон (ok), 15:32, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не скажи. Штука полезная, если не брать в расчёт потерю контроля над внедрённым кодом.
     
     
  • 5.40, Fracta1L (ok), 16:59, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Как обычно: теоретически штука полезная, если не брать в расчёт реальность
     
     
  • 6.41, Брат Анон (ok), 17:16, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Как обычно: теоретически штука полезная, если не брать в расчёт реальность

    95% хомячков так всю жизнь живут. Да чего там: сам так всегда делаю.

     
  • 6.52, Аноним (52), 23:08, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >Как обычно: теоретически штука полезная, если не брать в расчёт реальность

    Вот как ты точно сейчас про Rust сказал.

     
  • 4.37, YetAnotherOnanym (ok), 15:48, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Чтобы почаще обмазываться свеженьким.
     
     
  • 5.51, Самый Лучший Гусь (?), 21:40, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так не несвежим же обмазываться. Оно холодное и крошится.
     
  • 2.61, Alladin (?), 04:12, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А как SVG, тоесть аля XML имеет отношение до WS с его виртуальной машиной..

    Кажись это как сравнивать HTML И C++?

     

  • 1.5, Аноним (5), 12:17, 20/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Нужно, скорее бы нативные проги выбросили все.
     
     
  • 2.24, Аноним (32), 14:03, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Опасно, очень опасно... Централизация приложений всё больше и больше...
     
  • 2.34, Брат Анон (ok), 15:33, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Крайне опасно. Страничка может подгрузить вообще что угодно. А с бинарником физически а твоей машине -- ты ещё можешь что-то сделать.
     
     
  • 3.50, Аноним (50), 21:20, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Почему сразу "странички". Может локальная, "толстая" прога, standalone, но в вебассембли-виде на сотвествующей локальной платформе. Как какой-нибудь *.jar-файл запускать в ява-рантайме. Там ведь о таком и в новости говорится (и ссылка приводится) - " Последнее время WebAssembly также продвигается в качестве универсальной платформы для безопасного выполнения кода в любых инфраструктурах, операционных системах и устройствах, не ограничиваясь браузерами". Например, в каком-нибудь wasmer'е запускать. Вот и сможешь что-нибудь с wasm-овским бинарником на своей машине что-нибудь сделать :)
     
     
  • 4.53, Аноним (52), 23:14, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну если там, скажем например, чтобы в нём поставлялся AutoCAD-wasm.tar.gz, а не AutoCAD-x86_64.tar.gz как сейчвс.
     
  • 4.66, Брат Анон (ok), 09:01, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Байт-код не нужен, когда доступна физическая платформа. Хватит греть атмосферу!


     
     
  • 5.71, Аноним (6), 10:41, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Хватит греть атмосферу!

    Перегреется рабочее тело.

     
     
  • 6.73, Аноним (73), 11:53, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    От трения.
     
     
  • 7.74, Аноним (6), 12:22, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Это тоже "грение атмосферы".
    Вопрос надо решать с другой стороны - не подводить энергию к рабочему телу - надо меньше жрать, ой, добывать энергоресурсов. Уже выработанное электричество - нагретое тело - можно только путем "грения атмосферы" утилизировать.
     
  • 5.76, Аноним (76), 09:13, 22/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Странно что меня заминусовали. Вроде там не говорил, что "толстые васм-программы - это хорошо и надо выбросить нативные", но многие, видать, так и поняли. Просто указал, что из утверждения "скорее бы нативные проги выбросили все" вовсе не обязательно следует заключение - "скорее бы перешли в странички в интернетах". Просто после пожелания "надо выкинуть" не предложен вариант на что заменить и ты додумал - "на странички" (наверное как и подразумевал автор топикстартера). Но возможен и вариант интерпретации - "не в странички, а локально, но васм(байт)-код" (безотносительно того, хорошо это или плохо).
     
  • 2.42, Аноним (42), 17:39, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    последние события ничему не научили?
    хотя, вы же тролль
     

  • 1.8, Ананас (?), 12:22, 20/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Они странные.
    Им надо не JIT прокачивать, а уже вполне себе такое AOT, благо WASM как язык довольно несложный.
     
     
  • 2.67, Брат Анон (ok), 09:02, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Они странные.
    > Им надо не JIT прокачивать, а уже вполне себе такое AOT, благо
    > WASM как язык довольно несложный.

    Если бы им именно это было надо -- они именно это уже давно бы и сделали.

     

  • 1.10, Аноним (10), 12:32, 20/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Короче, на нае...

    WebAssembly высокопроизводительный только если там используется JIT и тяжёлые оптимизации.

     
  • 1.11, Z (??), 13:07, 20/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Какой от него толк, если всёравно всё транскодируется в JS?
     
     
  • 2.15, Аноним (15), 13:39, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Зайди в фигму и осознай что все так плавно работает только лишь из-за того что фигма написана на c++ и работает через wasm.
     
     
  • 3.17, Z (??), 13:50, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ты дурак или прикидываешься? Без разницы на чем оно написано, всёравно код транскодирован в .js файлы (открой исходник и посмотри сам). А плавность зависит не от языка, а от GPU ускорения отрисовки самого браузера.
     
     
  • 4.19, Аноним (15), 13:56, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • –11 +/
    Ты конч? Если оно быстро работает какая разница js там или нет?
     
  • 4.59, Alladin (?), 04:09, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Какая javascript??. WebAssembly это другая виртуальная машина, другой байтовский код.
    Вы кроме файла js который создан для совместимости некоторых функций js и загрузки ws в браузерах где это нельзя.. высмотрели бы файлик .ws и дизасмеблировали его..

    минимум фигню бы перестали нести.

     
  • 3.36, Аноним (36), 15:46, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Фигма очень плохой пример. Она выжирает 8-10гб рамы на средних-больших проектах. К чёрту такие приложения
     
     
  • 4.62, Аноним (62), 07:24, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    в лучших традициях джавы
     
  • 3.45, Бывалый смузихлёб (?), 18:40, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Только серьёзного повышения скорости работы васм’а( в сравнении с жс ) никто не обещал :)
    Главный обещанный «прирост производительности» - в ускорении парсинга кода и меньшем времени от запроса скрипта до начала его исполнения.
    Вдобавок, сам васм сделан не столько для повышения производительности, сколько для возможности исполнения чего-то что не жс. Т.е в проект можно тянуть сишные библиотеки и иное и на выходе получить нечто, что нормально выполняется в браузере без необходимости переписывать тонны кода на жс
     
     
  • 4.60, Alladin (?), 04:10, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    WS компилируется LLVM, с тем самым на котором работает Clang и другие вещи, а он то умеет толк в оптимизацию (вот даже SIMD завезли).

    а заодно посмотрели бы бенчи, там я смотрел очень хорошо ws себя показывает:)

     
     
  • 5.70, Бывалый смузихлёб (?), 10:20, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    ws - вебсокеты ?

    Я уже некоторое время не слежу за васмом, но особенность веба в том, что и жс весьма быстр в сравнении со всевозможными браузерными апи и взаимодействием с деревом элементов.
    Так вот, к чему я - сколь быстрым ни был бы васм, реальное взаимодействием со внешней средой скорее всего будет происходить через жс и через медленные методы всевозможных манипуляций с DOMом или чем-то ещё, иначе - результаты работы того васма просто не появятся на экране. По крайней мере, раньше так было.

    Ну и какая, по сути, разница, если, к примеру, васмовый код исполняется за 1мкс, тогда как вывод этой инфы займёт 1мс, итого 1,001мс. Против жс, на котором тот же самый код будет исполняться даже вчетверо медленней, т.е 4мкс, итого с выводом - 1,004мс

    Но мб в новой версии это изменят

     
     
  • 6.72, Анонимомус (?), 11:19, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Не путайте теплое с мягким, скорость интерпретатора и скорость апи разные вещи, да, на js редко делают сложные вычисления и большинство сайтов тормозит именно из-за непонимания работы dom, но кроме дома есть еще canvas, webgl, звук, есть разница будет спрайт генериться 10мс или 1000мс. Wasm нужен в первую очередь для портирования приложений и библиотек, например игр, где нет обращений к дому.
     
     
  • 7.75, Бывалый смузихлёб (?), 17:57, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Я и не путаю именно сложные, повторяющиеся штуки, в жс неплохо ускоряются Нек... большой текст свёрнут, показать
     
  • 6.78, Alladin (?), 05:00, 25/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Какой еще ', реальное взаимодействием со внешней средой скорее всего будет происходить через жс и через медленные методы всевозможных манипуляций с DOMом',
    вы никогда не слышали про WebIDL? так может стоит услышать?

    '''
    васмовый код исполняется за 1мк
    '''

    '''
    Против жс, на котором тот же самый код будет исполняться даже вчетверо медленней
    '''
    не четверо, а раз в 8-10 раз медленее. + расходы на jit + расходы на gcc + расходы на псевдо компиляцию этого js без оптимизаций...

    можно много говорить..

     
  • 2.25, Анонимомус (?), 14:03, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кто вам такую чушь сказал?
     
  • 2.29, Анонимомус (?), 14:07, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Вероятно вы путаете с asm.js
     

  • 1.12, Аноним (12), 13:08, 20/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    - дрова .. FreeBSD .. WASM ..
    - мистер Андерсен, выдыхайте!
     
     
  • 2.31, Аноним (73), 14:41, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Для переносимости дрова написаны с использованием фреймворка Electron, скомпилированного в WASM.
     
  • 2.58, Alladin (?), 04:07, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Была ось на JavaScript:) и дрова к ней)) но такоесебе.
     

  • 1.30, Аноним (73), 14:38, 20/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Последнее время WebAssembly также продвигается в качестве универсальной платформы для безопасного выполнения кода в любых инфраструктурах, операционных системах и устройствах, не ограничиваясь браузерами.

    В реальной жизни окажется, что безопасТного.

     
     
  • 2.35, Брат Анон (ok), 15:36, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не понимаю чем ты недоволен. Никакая виртуальная машина не безопасна (доказано много лет назад).
    Но хотя бы тормозить не будет. Хочешь сделать безопасно -- придумай свою виртуальную машину, верифицируй её, внедри средства поддержания целостности, придумай свой интернет и живи безопасТно. Всего делов то.
     

  • 1.38, Аноним (38), 15:55, 20/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Когда уже mlir сопрут в Wasm из LLVM?
     
  • 1.39, Kuromi (ok), 16:29, 20/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пилят пилят, но что-то не видно какого-то реального применения. С другой стороны, продвинутые технологии в вэбе склонны применяться так что лучше и не надо - орущая видеореклама, реклама в Push-ах, баннеры на canvas чтобы нельзя было блокировать по доменам и прочее. так что может оно и к лучшему.
     
     
  • 2.46, Бывалый смузихлёб (?), 18:43, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Реальное применение в возможности использовать код не на жс( какие-то сошные библиотеки и иное ), получая на выходе код, который будет нормально работать в браузере, без необходимости переписывания его на жс, хотя последний всё равно потребуется по многим причинам
     
  • 2.55, Alladin (?), 04:03, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Всмысле никакого реального применения? Вы из пещеры вылезали?

    WebAssembly валит в
    с Firefox 52
    с Chrome 57...

    для справки сейчас firefox уже 100 версии..
    а chrome 96-97...

    Так о чем я?:) Он давно везде, просто вы не всматриваетесь...

     
     
  • 3.80, Kuromi (ok), 20:46, 01/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Всмысле никакого реального применения? Вы из пещеры вылезали?
    > WebAssembly валит в
    > с Firefox 52
    > с Chrome 57...
    > для справки сейчас firefox уже 100 версии..
    > а chrome 96-97...
    > Так о чем я?:) Он давно везде, просто вы не всматриваетесь...

    Вот покажите мне пожалуйста живые примеры. Только реальные, а не демочки. Последний раз серьезной попыткой был выпуск Humble Bundle нескольких игр в вэбе с помощью asm.js (хотя .то была более ранняя технология, да).
    ЧСХ, оно нормально так и не запускалось.

     

  • 1.43, Аноним (43), 17:53, 20/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Из WebAssembly уже можно напрямую манипулировать DOM-ом?
     
     
  • 2.56, Alladin (?), 04:05, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Уже год-два_года как точно..
     
  • 2.63, Аноним (63), 08:16, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Напрямую всё ещё нельзя
     
     
  • 3.79, Alladin (?), 05:01, 25/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Можно и давно. WebIDL же..
     

  • 1.54, Аноним (54), 00:34, 21/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Благодаря задействованию JIT для WebAssembly можно добиться уровня производительности близкого к нативному коду.

    'близкого' - это как с маркетологического переводится?

     
     
  • 2.57, Alladin (?), 04:06, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это переводится хочется javascript выкинуть, но вот оно есть решение... развиваем..

    А с маркетингова, либо скорость как на javascript или лучше, но всяко лучше) бо предварительная компиляция, нет gcc и трр.

     
  • 2.69, Аноним (6), 10:15, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Интереснее узнать про "уровни производительности"
     

  • 1.64, Аноним (64), 08:27, 21/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    https://ziglang.org/documentation/master/#WebAssembly
     
     
  • 2.65, Аноним (64), 08:36, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/wasm3/wasm3/blob/main/build.zig
     
     
  • 3.68, Аноним (6), 09:21, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > https://github.com/wasm3/wasm3

    Предупреждаю: там про геноцид

     
     
  • 4.77, Забыл заполнить (?), 12:52, 24/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Опять кастрюлеголовый комитил? В пейсбуке кастрюлеголовый манагер в некоторые плюсовые репы этот же высер нарушил. Это все на что они способны.
     

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



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

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