Pull to refresh

Comments 50

Или обрабатывать 4K-видео на слабом смартфоне

Как Wasm сделает смартфон мощнее?

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

GraalVM на TempleOS. Аллилуйя!

Автор конечно загнул. Но если браузер у старых смартфонов обновляется, то можно попробовать SIMD (https://caniuse.com/wasm-simd), многопоточку (https://caniuse.com/wasm-threads), у wasm выше произовдительность для int-ов (если не вдаваться в детали, то в js все числа это double) и может что-то ещё затянут. 4K не вытянут, но может где-то получится выкрутиться по вычислениям для Web приложений и игр.

если не вдаваться в детали, то в js все числа это double

Если не вдаваться в детали, то современные JS-движки это дело все-таки оптимизируют и под капотом хранят int как int

в js все числа это double

Верно, стандарт языка делает такое заявление

4.4.23 Number value
primitive value corresponding to a double-precision 64-bit binary format IEEE 754-2019 value

но это не мешает реализациям, не выходя за границы этой абстракции, делать некоторые оптимизации. В частности, в V8 вводит отдельный тип Smi (Small Integer) для целочисленных значений, умещающихся в 31 бит.

Не говоря уже о том что в wasm компилируется не Python, только его интерпретатор.

Ну тут есть свои нюансы. Не cpythonом питон ограничивается.

Вот к 30 году он их и догонит...

Потому что текст LLM писал, а человек не вычитывал, просто запостил

Ну вот про C# то же самое говорили. Или про Java - что, кстати, почти оправдалось.

Реально встречаются Java-приложения, сложные - и работающие на любой платформе.

Вопрос же не в том, чтобы скомпилировать (этот вопрос давно закрыт с появлением llvm) - вопрос в том, чтобы предоставить разработке стандартное, универсальное API для работы. И чем оно более полное - тем сложнее и глючнее.

И да: если нужен "просто код" или "просто алгоритм" - так для этого можно или написать на интерпретируемом языке, или исходники предоставить. Все проблемы начинаются, когда хочется сделать "красиво". И интегрировано в нативное окружение.

Если вы ещё не пробовали Wasm — самое время начать.

Половина россиян уже пробовали, а то и больше. После удаления приложений из сторов на wasm банки начали массово переходить. См. - https://habr.com/ru/amp/publications/686408/

Не знаю, что тут уже такого сенсационного

Сколько я ни смотрел бенчмарков, везде преимущество в скорости WASM было скажем так неочевидно. Да, в узких кейсах может быть преимущество 2-3-5х (откуда автор взял 10х?), но глобально по больнице - приблизительный паритет, иногда даже немного медленнее было. Оговорюсь, что смотрел я это год-два назад, может сейчас что-то поменялось.

И насчет Фигмы, которую очень часто приводят в пример. Читал я где-то пост (вот не помню источник, к сожалению) - там автор писал, что своим хорошим перфомансом Фигма обязана совсем другим вещам, а именно WebGL и прямым рукам разработчиков с хорошей алгоритмической подготовкой (которая, как известно, никому не нужна кроме собесов). А WASM, сообщал тот же автор, там был нужен совсем для другой цели - на нём сделана безопасная песочница для плагинов, потому что исполнять у себя на машине рандомный JS-код так себе идея.

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

webGL иной раз у меня по лучше ПК версии почему-то работает,а может мои приложения на ПК не ок, https://webglfundamentals.org/webgl/lessons/webgl-fundamentals.html, васм есть в сдл знаю(по крайней мере есть возможность С++ превратить в васм, там правда надо ставить какой-то комплекс утил для этого ), или в грааль тогда наверно писать не знаю ниразу не ставил задачи васм запускать, так можно и Clojure сразу думать у него принцип как у васма почти, синтаксис только другой

graalwasm-embed-c-code-guide

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

А WASM, сообщал тот же автор, там был нужен совсем для другой цели - на нём сделана безопасная песочница для плагинов, потому что исполнять у себя на машине рандомный JS-код так себе идея.

Что WASM-байткод, что JS-код выполняются в песочнице. То, каких дел они могут наделать на вашей машине, определяется в обоих случаях исключительно тем, биндинги каких именно системных API вы пробросите им в среду выполнения. Короче говоря, в плане безопасности исполнение рандомного JS-кода и рандомного WASM-байткода не отличается вообще никак.

А сами авторы Figma у себя на сайте прямо говорят, что WASM взяли именно из-за перформанса, и даже бенчмарки всякие показали: https://www.figma.com/blog/webassembly-cut-figmas-load-time-by-3x/

Wasm хорошо решает вопрос производительности только в случае отдельных выделенных служб, где необходимы операции с плавающей точкой, например. А это достаточно узкие кейсы, далеко за рамками потребностей большинства обычных веб приложений. Ох уж мне эти wasm-революционеры... Вы сначала сами попробуйте сделать что-то на wasm, посмотрите на размер сборки, измерьте скорость на живом примере, покурите, подумайте...

@А что, если нейросеть на сайте будет работать в 20 раз быстрее?

Это как? Нет, разумеется, если где-то нейросеть пашет на голом Javascript прямо внутри пользовательского браузера, то ускорение может и будет. Но это же в природе не встречается, и обычно все ресурсоемкое крутится в бэкенде и пишется на чем-либо максимально шустром.

Как там, уже сделали на WASM ZIP архиватор который быстрее написанного на JS?

Делал на js - sax парсер xml . Так вот работает он быстрее в разы(в 7-10 раз) чем бинарный expat или libxml.

WebAssembly нужная технология, но очень специфичные. И точно не серебряная пуля

Не понимаю одного: почему они тянут с доступом в DOM?

Потому что может случиться 10х, но в обратную сторону:)

Работа с DOM это на 99% вызов функций браузера, которые принимают и возвращают очень развесистые объекты с огромным количеством полей (посмотрите на состав DOM Node). Компилятор JS видит, что коду из этого всего реально нужно 2-3 поля, знает кишки своего браузера и может неслабо так соптимизировать. А с васмом будут бесконечно байты перекладывать.

Передать объект по ссылке/указателю нельзя?

Нельзя. Нарушается принцип песочницы.

wasm компилятор при генерации кода может определить, что можно а что нельзя делать с данными по переданному указателю. А если быть последовательно параноидальными, песочницу надо вообще в отдельную виртуалку выносить.

wasm компилятор при генерации кода может определить

В общем случае не может. Потому пока идут обсуждения, чтобы предоставить доступ к DOM через новое API, более гранулярное.

На уровне wasm'овского байткода DOM вполне может быть opaque объектом с доступом через аксессоры, но при генерации машинных инструкций движок в конкретном браузере может эти вызовы оптимизировать в обращения по фиксированным смещениям от переданного указателя в соответствии с layout'ом внутренних структур.

Тем, что код в песочнице получит доступ к области памяти вне песочницы.

Нет там такого. Память песочницы также виртуальна как и "процессор"

... а это значит, что, чтобы информация попала в виртуальную память WASM, её нужно туда скопировать. Целиком. И потом скопировать взад. А движок JS может сходить в память вкладки браузера и взять те три поля DOM Node, которые ему нужны.

wasm в браузере работает в отдельном процессе?

НЯЗ зависит от браузера

Но у виртуальной машины wasm 2гб виртуального озу, которым она распоряжается полностью сама. Маппить на неё ОЗУ самого браузера никто не будет.

Потому что может случиться 10х, но в обратную сторону:)

Скорость во фронтенде не главное, главное - избавиться от JavaScript

главное - избавиться от JavaScript

Для кого это главное?

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

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

Java-апплеты и Flash

Я не ослышался?

А что, если нейросеть на сайте будет работать в 20 раз быстрее?

Она будет постить на Хабре в 20 раз больше таких статей.

Раз тут ещё не написали - Docker - это не про изоляцию. Docker это про гарантированную среду с гарантированной конфигурацией. Изоляция там вторична. Поэтому сравнение совсем не в кассу.

Как раз таки изоляция (namespaces и т.д.) первична, вторично использование в докере ) Возможно, именно у докера задача другая, но контейнеры можно использовать и без него.

Я скорее имел в виду, что Docker - не средство изоляции. Так-то да, про namespaces и прочее - всё так.

По факту докер взлетел не из-за изоляции. А именно из-за возможности воткнуть свою среду с чётко фиксированным набором софта.

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

Заказчики этой "статьи" (которую мы здесь обсуждаем) могли бы и более качественного копирайтера нанять, если им нужно подогреть интерес технарей к используемой ими технологии.

Figma: Весь редактор работает на Wasm — это позволило отказаться от десктопных приложений

Да не, он лагает и вылетает. Но может в ближайшем будущем...

Sign up to leave a comment.

Articles