Как стать автором
Обновить

Комментарии 8

Вот так при помощи нехитрого кода на жс, строки на руби компилируются в байткод vm и запускаются. Но зачем?

Руби язык поддерживающий ввод/вывод в терминал, работу с фс и другими системными вещами из коробки.

JS язык поддерживающий WebAPI и другие средства браузера из коробки

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

Практическая применимость - это скорость и порт какой-нибудь очень нужной и незаменимой (либо лень) библиотеки в веб.

Ну скорости с ним точно не будет поскольку там байткод виртуальной машины, а не нативный код процессора. Может быть даже будет замедление поскольку у JS в отличии от джавы типы не определены, и их подставляют на этапе компиляции из абстрактного синтаксического дерева, в том числе их можно заменить на основе данных о реальном исполнении. В байткоде же (если википедия не врет) уже стек-машина с операциями на конкретный размер и тип данных (64 бита знаковое) тут уже у vm связаны руки.

порт какой-нибудь очень нужной и незаменимой (либо лень) библиотеки в веб

Еще было бы здорово использовать единый джаваскриптовый VM / JIT / GC для всех скриптовых языков в одном проекте например.

Но к сожалению vm языков привязаны к функционалу, который гарантирован стандартом из коробки. Поэтому и библиотеку можно будет собирать не любую а только ту которая может работать в окружении js варианта web.

Я прям тесты не проводил, но первые же страницы гугла выдают

Wasm is 1.15-1.67 times faster than JavaScript on Google Chrome on a desktop. Wasm is 1.95-11.71 times faster than JavaScript on Firefox on a desktop. Wasm is 1.02-1.38 times faster than JavaScript on Safari on a desktop

Просто использовать его надо не для работы с DOM, а для CPU-bound задач.

Про Ruby не скажу, но в том же Rust очень много его собирается под wasm. Это позиционируется одной из фишек языка. Само-собой совсем уж любую библиотеку собрать не получится, но все же библиотек довольно много. Взять те же GUI, как хороший и сложный пример. Для нативного приложения (причем под любую платформу) они рисуют гуй в окошечках системы. При сборке в wasm - в webgl. И это все работать прям шустро.

Пример: https://yew.rs

Даже playgroud Rust-а есть в браузере.

Или вот получше: https://www.egui.rs/#demo

Просто использовать его надо не для работы с DOM, а для CPU-bound задач.

Я тоже об этом, и wasm никак не поможет сделать производительные FLIF BPG или аудиоформаты с архиваторами на стороне клиента, ведь это не библиотека на си а просто байткод js прекомпилированный.

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

они рисуют гуй в окошечках системы. При сборке в wasm - в webgl. И это все работать прям шустро.

Это все рисуется в Canvas2D (webgl это уже Canvas3D ) естественно оно быстрое потому что функции написаны на нативном языке и оптимизованы/векторизованы как положено. Но вообще ты прав, перенос из Unity становится лучше с WebAsm, ведь с-sharp типизированный язык и компилировать его в скрипты это просто было бы уродством. Но вот другие скриптовыя языки (питон, руби, пхп, луа) я бы предпочел пересобирать в js по примеру typescript -а, что бы программа оставалась динамичной и не была привязана к типам.

Делать архиваторы на стороне клиента это в целом так себе идея, поскольку работа с файлами в браузере никакая.

Конечно все это довольно узко направленная штука, но что уж поделать.

Да, там канвас. На днях с какой-то другой библиотекой копался, там именно 3D было. И окна и 3d, все в одном. Не суть.

Кстати да, с играми хороший пример.

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

P.S. После многих лет на динамических php/js языках - для меня строгая растовская типизация прям находка. Очень удобно. Создает много проблем так где привык работать иначе, но и решает очень много проблем там, где привык "бояться". Так что нет, не надо из питонов лепить очередной TS :)

Удивительно, что поддержка WASM появилась только сейчас. Для питона либа вроде была ещё в 18 году. Или речь идёт за появление в стандартной библиотеке?

Будущее прекрасно

WebAssembly открывает захватывающий мир.
...
в граничных вычислениях и serverless-приложениях.

Интересно какие есть полезные serverless-приложения для широкого круга пользователей, кроме фото\видео\аудио\текстовых редакторов и игр?.)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий