LINUX.ORG.RU

WebAssembly на работе и дома

 , ,


0

3

Как широко сейчас используется WebAssembly? Я помню, что Java-апплеты в своё время закапывали, что проприетарно и небезопасно, потому что исполняется сторонний двоичный код, сейчас же почему-то сторонний двоичный код вопросов не вызывает. Ну и спецификация, я, так понимаю, открытая.

Как может взаимодейтсвовать wasm-приложение со страницей? Апплеты представляли отдельное окошко внутри страницы, а сейчас? Взаимодействуют ли они с содержимым страницы, как работают JS-скрипты?

Как широко сейчас используется WebAssembly?

Как «новый чемодан без ручки». Именно что выглядит прикольно... Но «где вы герои...» — некоторые долгосидячие на берегу подозревают протащенные в контрабасе «апплеты», «флеш» и прочий «актив Х» вид сбоку («лол, дропнули жабу и сервелат, теперь прям сишня транслированная в жабоскрипт? А чо как не мужики, чо не нативные уже скомпиленые бинари, как в раньших cgi-bin?») — именно поэтому «в нашем shadow-DOM-контейнере это зопрещено бай дизаен»

Как может взаимодейтсвовать wasm-приложение со страницей?

RTFM же, ну

slackwarrior ★★★★★ ()
Последнее исправление: slackwarrior (всего исправлений: 1)

Ты не знаешь того как работает технология, но выводы сделал и на основе этих ложных выводов задаешься глупыми вопросами. Что тут обсуждать, иди читай, тогда и вопросы сами отпадут.

anonymous ()
Ответ на: комментарий от slackwarrior

некоторые долгосидячие на берегу подозревают протащенные в контрабасе «апплеты», «флеш» и прочий «актив Х» вид сбоку

В том и дело, что только такое впечатление и оставляет. Может, у кого есть обратный опыт.

gedisdone ★★★ ()

А хрен его знает, где это используется. Расковыривал одно хитрое веб-приложение с кучей вычислений, так там тоже обычный JS.

Расскажите о историях успеха в проде.

wandrien ()
Ответ на: комментарий от wandrien

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

anonymous ()

Как широко сейчас используется WebAssembly?

Особых применений кроме уничтожения СПО и вставления блобов с невырезаемой рекламой у него нет, пиши на чем хочешь - это замануха.

anonymous ()
Ответ на: комментарий от anonymous

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

anonymous ()

проприетарно и небезопасно, потому что исполняется сторонний двоичный код, сейчас же почему-то сторонний двоичный код вопросов не вызывает

Потому что он сейчас огорожен полностью.

Как может взаимодейтсвовать wasm-приложение со страницей?

Со стороны JS к wasm-модулю прокидываются функции-обёртки, которые этот модуль может дёргать. Притом для работы с любыми данными сложнее чисел нужно эти данные передавать через ArrayBuffer — тупо бинарный массив данных. Алгоритмы кодирования-декодирования данных в этом буфере остаются на совести разработчика, притом как стороны JS, так и WASM-модуля.

Взаимодействуют ли они с содержимым страницы, как работают JS-скрипты?

Нет, сейчас никакого API для взаимодействия со страницей нет. Нельзя напрямую работать ни с сетью, ни с DOM, ни с любыми другими возможностями браузера. Это просто возможность делать более эффективные числодробилки. Сам код виртуальной машины WASM похож больше на машинный код процессора, чем на код высокоуровневой виртуальной машины — тупо тасование байтов между ячейками памяти.

static_lab ★★★★★ ()
Ответ на: комментарий от static_lab

Нет, сейчас никакого API для взаимодействия со страницей нет.

А будет? Или об этом не вспоминают во имя безопасности?

Притом для работы с любыми данными сложнее чисел нужно эти данные передавать через ArrayBuffer — тупо бинарный массив данных. Алгоритмы кодирования-декодирования данных в этом буфере остаются на совести разработчика, притом как стороны JS, так и WASM-модуля.

Тогда понятно, почему во многих примерах преимущественно говорится о привязке через canvas и использовании модуля в качестве растеризатора.

gedisdone ★★★ ()
Ответ на: комментарий от theNamelessOne

Ась? У меня эта штука в 3 проектах кажется:

  • pica - ресайзилка изображений. Бболе стабильная по скорости математика.
  • wawoff2 - конвертор ttf => woff, персобранный сишный код от гугла. Не надо апдейтить когда нода обновляется, и с операционками париться.
  • lv_font_conv - конвертор ttf шрифтов под embedded формат. Там wasm фритайп используется для рендеринга битмапов. Тоже удобно что работает везде и навсегда.

Это актуально чтобы большие сишные наработки в ноду и браузер загонять. Если человек спрашивает зачем нужен wasm - оно ему не надо.

Vit ★★★★★ ()

WASM это не только compilation target работающий в браузерах, это ещё и байткод не прибитый гвоздями к какому-то конкретному языку или платформе, и здравый формат динамически линкуемых библиотек.

Думаю мы увидим применение WASM в контекстах отличных от веба и js.

PolarFox ★★★★★ ()
Ответ на: комментарий от PolarFox

2 года назад был предложен способ для линукс ядра подгружать и выполнять WASM-модули: Wasmjit. И вот ещё один аналогичный проект: kernel-wasm.

gag ★★★★★ ()
Последнее исправление: gag (всего исправлений: 1)
Ответ на: комментарий от gedisdone

А будет? Или об этом не вспоминают во имя безопасности?

Уже сейчас разрабатывается WASI API, похожий на POSIX, для работы с файлами, сокетами, таймерами и т.п.: https://github.com/WebAssembly/WASI/blob/master/phases/snapshot/docs.md

В планах сделать API для работы с DOM, но для этого сначала нужно придумать поддержку GC. Так что это вряд ли будет готово в ближайшее время.

преимущественно говорится о привязке через canvas и использовании модуля в качестве растеризатора

Да, при этом в WASM-модуле рендеринг делается либо через WebGL, либо софтверный. Можно реализовать интерфейс на Qt. Но это всё выглядит так себе с точки зрения тех фич, которые браузер реализует внутри и к которым не предоставляет полноценного API: раскладки клавиатуры, буфер обмена, accessibility, сетевые интерфейсы и т.д.

static_lab ★★★★★ ()

Пока интерфейс к wasm только бинарный, толку от него мало. Однако есть пропозал interface types, для обмена с wasm сложными типами. И его уже можно юзать через полифилы. А где-то он уже реализован

На главной странице wasmtime годный ролик на эту тему. Вкратце, там собрали, написанный на расте markdown-конвертер в один wasm-файл. И затем подключали этот файл в раст, питон, ноду и браузер. Также можно подключать в java, ruby, etc.

Короче, со временем WASM вытеснит всю embeded скриптуху. А может и вовсе станет универсальным форматом подключаемой библиотеки. Как dll, только универсальнее

anonymous ()

Как широко сейчас используется WebAssembly?

Например, Blazor WebAssembly. В этом году технология стартанула (NET Core/ NET 5). На данный момент не очень, слишком много с собой тянет. Планы у них большие, посмотрим.

Однозначно, у технологии есть будущее, но нужно время, и она еще, вероятно, неоднократно претерпит изменений.

Stack77 ()
Ответ на: комментарий от anonymous

на самом деле охереть сколько надо еще чтоб это всё заработало. даже тот же GL - вот просто вызовы GL сами по себе идут через пень-колоду и никак это не обойти с wasmом. просто по пути появляется еще один пень.

anonymous ()
Ответ на: комментарий от anonymous

на кой хер там GC? чтоб обратно тормозило?

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

static_lab ★★★★★ ()
Ответ на: комментарий от anonymous

Зато тянет на революцию. Вот увидите. Этот WASM будет шатать целые языки, форматы исполняемых файлов, контейнеры, серверные платформы (типа амазона), браузер, мобильную разработку. Всем так или иначе достанется

anonymous ()

Как широко сейчас используется WebAssembly?

Нормальных людей, коих тут большинство, по-настоящему волнуют немного вещей.

  1. Состояние собственной пятой точки.

  2. Состояние созависимых пятых точек.

Всё.

Webasm ничего, кроме проблем не создаёт. Зачем?

anonymous ()

Java-апплеты в своё время закапывали, что проприетарно и небезопасно, потому что исполняется сторонний двоичный код

их закапывали из-за проблем с поддержкой броузерных плагинов

по теме: wasm - очень даже жив и поддерживается мгногими языками через компиляторы. лучше всего поддержка в Go, D, C/C++ через Emscripten.

anonymous ()

Я помню, что Java-апплеты в своё время закапывали, что проприетарно и небезопасно, потому что исполняется сторонний двоичный код, сейчас же почему-то сторонний двоичный код вопросов не вызывает.

Намного проще машина. Также она переиспользует песочницу современных браузеров где все порезано по процессам, иногда даже по cgroups.

Как может взаимодейтсвовать wasm-приложение со страницей?

Через hashmap с указателями на функции в обе стороны. Чтобы wasm смог запуститься или что-то вызвать в обратную сторону - должна быть явно обьявлена функция в публичном интерфейсе. Например, если не дать wasm вообще никаких функций то он сможет делать только какую-то обработку данных и возвращать результат. Он не сможет например работать с DOM.

На деле какие-то маленькие вещи приходится давать. Даже датчик случайных чисел или функции времени вроде now.

vertexua ★★★★☆ ()

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

vtVitus ★★★★★ ()