LINUX.ORG.RU
ФорумTalks

WebAssembly - соединение двух миров. Пишем на сишечке, кимпиляем clang, исполняем в вебчике.

 


0

3

Советую осилить эту технологию тем, что считает что веб для даунов, а настоящие суровые челябинские мужики пишут только на си. Можно кидаться мегабайтами байтиков из JS в сишечку, делать сложные вычисления и пихать результат обратно. Можно невозбранно таскать огромные массивы данных туда-сюда много раз в секунду, например полностью перерисовывать канвас быстрее чем за движение мыши. Фотошопные сложные кисти так реализуются без проблем, прям со смешиваним в сишечке буферов и прозрачностями. В особо упоротых случаях можно реализовывать чуть более чем всю логику веб-приложенечки в сях или крестах, а из JS только окончательные инструкции «чо делать» забирать. 5 мегабайтный джипег и айпхона, породивший ~51 мб сырых пикселей в памяти JS, улетел в webasm и преобразовался там в чёрно-белую фотку где-то за 35.9 мсек. При этом сам jpeg в сырые пиксели в js вызовом window.createImageBitmap() конвертился 125 мс.

В современных JS есть ещё API для воспроизведения сырых семплов звука. Я знал мужика, который в 2005 году умел в JS из памяти .wav файлы порождать, а щас-то вообще жесть содомия начнётся!

Безопасность: плоская модель памяти. Нет malloc()/free(), просто плоский шмат памяти от нулевого смещения и живи там. Нельзя увеличить память изнутри wasm-машины. Все указатели - смещения от этого нуля. Нет никой кучи, точнее этот шмат и есть куча и ты вечно в ней живёшь. Размер этого шмата можно увеличить извне wasm-машины, из того JS-кода, который машину запускает и использует. Можно даже реализовать в wasm функцию, которую вызывать из JS и которая будет говорить хочет ли wasm увеличить себе память или нет, а js будет подкручивать рубильник. Все аллокаторы - сам реализуй или линкуйся с каким-то malloc(), но он будет по-сути резать эту кучу на куски и тогда тебе в бинарник просто накладут всякого кала типа стандартных библиотек и будет не цимес. А цимес-то делать бинарники на пару килобайт, реализуя только нужную обработку байтиков. Аллокатор обычно не нужен - назаписывал что-то там в памяти и выкинул всё в конце.

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



Последнее исправление: lesopilorama (всего исправлений: 6)
Ответ на: комментарий от Stanson

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

Так там другая задача. Юзер желает приаттачить файл и отправить. Принимать его исходник в 8 мегабайт и потом ресайзить на сервере мне нах не упёрлось и по трафику и по диску и по ЦП, я хочу чтобы эта скотина на клиенте у себя доресайзила до 800 пикселей по большей стороне и jpeg quality=80% пожала перед отправкой, да ещё EXIF данные чтобы при себе оставила, чтобы на меня упали готовые 300 кб.

Причём, я могу ему в форме аттача ещё выдать красивый инструмент «обрезать» заодно. Да ещё красный карандаш что-то обвести на картинке.

Встроенных в JS/html/css средств красиво ресайзить не придумано, есть либо никак либо быстро и с алиасингом.

lesopilorama
() автор топика
Последнее исправление: lesopilorama (всего исправлений: 4)
Ответ на: комментарий от lesopilorama

Не требуется. Нет там специфичных ограничений, не свойственных «WASM машинке». Пишешь на C++ произвольный код - он просто работает.

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

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

я же говорю: малварь

Уже опровергнуто выше. Зачем повторять наркоманский бред.

lesopilorama
() автор топика
Ответ на: комментарий от Iron_Bug

я сразу поняла, насколько это вредоносная и опасная вещь.

Сразу поняла какой-то бред и отключила что-то «непонятное», вот и вся твоя компетенция.

lesopilorama
() автор топика
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)