The OpenNET Project / Index page

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

Доступен Wasmer 3.0, инструментарий для создания приложений на базе WebAssembly

27.11.2022 08:22

Представлен третий значительный выпуск проекта Wasmer, развивающего runtime для выполнения модулей WebAssembly, который можно использовать для создания универсальных приложений, способных выполняться в разных операционных системах, а также для изолированного выполнения кода, не заслуживающего доверия. Код проекта написан на языке Rust и распространяется под лицензией MIT.

Возможность запуска одного приложения на разных платформах обеспечивается благодаря компиляции кода в низкоуровневый промежуточный код WebAssembly, который может запускаться в любых ОС или встраиваться в программы на других языках программирования. Программы представляют собой легковесные контейнеры, в которых выполняется псевдокод WebAssembly. Данные контейнеры не привязаны к операционной системе и могут включать код, изначально написанный на любом языке программирования. Для компиляции в WebAssembly может использоваться инструментарий Emscripten. Для трансляции WebAssembly в машинный код текущей платформы поддерживается подключение разных бэкендов компиляции (Singlepass, Cranelift, LLVM) и движков (задействование JIT или генерация машинного кода).

Приложения изолированы от основной системы в sandbox-окружении и имеют доступ только к заявленной функциональности (механизм безопасности на основе управления возможностями - для действий с каждым из ресурсов (файлы, каталоги, сокеты, системные вызовы и т.п.) приложению должны быть даны соответствующие полномочия). Управление доступом и взаимодействие с системой обеспечивается при помощи API WASI (WebAssembly System Interface), предоставляющем программные интерфейсы для работы с файлами, сокетами и другими функциями, предоставляемыми операционной системой.

Платформа позволяет добиться производительности выполнения приложений, близкой к выполнению родных сборок. При помощи Native Object Engine для WebAssembly-модуля можно сгенерировать машинный код ("wasmer compile --native" для генерации предкомпилированных объектных файлов .so, .dylib и .dll), для запуска которого требуется минимальный runtime, но сохраняются все возможности sandbox-изоляции. Возможна поставка предкомпилированных программ со встроенным Wasmer. Для создания надстроек и дополнений предлагаются Rust API и Wasm-C-API.

Для запуска WebAssembly-контейнера достаточно установить в системе runtime Wasmer, который поставляется без внешних зависимостей ("curl https://get.wasmer.io -sSfL | sh"), и запустить необходимый файл ("wasmer test.wasm"). Программы распространяются в форме обычных WebAssembly-модулей, для управления которыми можно использовать пакетный менеджер WAPM. Wasmer также доступен в форме библиотеки, которую можно использовать для встраивания кода WebAssembly в программы на языках Rust, С/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir и Java.

Основные изменения в Wasmer 3.0:

  • Добавлена возможность создания родных исполняемых файлов для любых платформ. Полностью переработана команда "wasmer create-exe", которая позволяет преобразовать файл с промежуточным кодом WebAssembly в самодостаточные исполняемые файлы для платформ Linux, Windows и macOS, которые могут работать без установки самого Wasmer.
  • Предоставлена возможность запуска WAPM-пакетов, размещённых в каталоге wapm.io, при помощи команды "wasmer run". Например, выполнение "wasmer run python/python" приведёт к загрузке из репозитория wapm.io пакета python и его запуску.
  • Полностью переработан Wasmer Rust API, в котором изменён стиль работы с памятью и обеспечена возможность безопасного сохранения объектов Wasm в структуре Store. Предложена новая структура MemoryView, позволяющая читать и записывать данные в линейную область памяти.
  • Реализован набор компонентов wasmer-js для запуска Wasmer в web-браузере и взаимодействия с ним из JavaScript, используя библиотеку wasm-bindgen.
  • Упрощены движки. Вместо раздельных движков для JIT, динамического и статического связывания (Universal, Dylib, StaticLib) теперь предлагается один общий движок и загрузка и сохранение кода в котором управляется на уровня выставления параметров.
  • Для десериализации артефактов задействован фреймворк rkyv, обеспечивающий работу в режиме zero-copy, т.е. не требующий выделения дополнительной памяти и выполняющий десериализацию только с использованием изначально предоставленного буфера. Применение rkyv позволило значительно повысить скорость запуска.
  • Улучшен однопроходный компилятор Singlepass, в котором появилась поддержка функций с несколькими аргументами (multi-value), повышена надёжность работы и добавлена поддержка кадров обработки исключений.
  • Улучшена реализация API WASI (WebAssembly System Interface). Решены проблемы в программном интерфейсе WASI для работы с файловой системой. Внутренние типы переработаны с использованием WAI (WebAssembly Interfaces), что в будущем позволит воплотить в жизнь серию новых возможностей.


  1. Главная ссылка к новости (https://wasmer.io/posts/announ...)
  2. OpenNews: Доступен Wasmer 2.0, инструментарий для создания приложений на базе WebAssembly
  3. OpenNews: Разработчики V8 представили декомпилятор для WebAssembly
  4. OpenNews: Доступен Emscripten 3.0, компилятор из C/C++ в WebAssembly
  5. OpenNews: Вариант LibreOffice, скомпилированный в WebAssembly и работающий в web-браузере
  6. OpenNews: Доступен предварительный вариант стандарта WebAssembly 2.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/58203-wasmer
Ключевые слова: wasmer, webassembly, rust
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (39) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, a. (?), 09:24, 27/11/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Реализован набор компонентов wasmer-js для запуска Wasmer в web-браузере и взаимодействия с ним из JavaScript, используя библиотеку wasm-bindgen. По своим возможностям wasmer-js соответствует компонентам wasmer-sys, предназначенным для запуска Wasmer в обычных операционных системах.

    Так и не понял, оно сокеты в браузере научились или все ещё ограничено апи браузера?

     
     
  • 2.2, Аноним (2), 10:05, 27/11/2022 [^] [^^] [^^^] [ответить]  
  • +9 +/
    > или все ещё ограничено апи браузера?

    Нет, теперь он прорывает все уровни защиты браузера и позволяет слать любые TCP, UDP, ICMP, IP и даже Ethernet пакеты.

     
     
  • 3.5, a. (?), 12:59, 27/11/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Джва года ждал
     
  • 3.6, Аноним (6), 15:30, 27/11/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    >Нет, теперь он прорывает все уровни защиты браузера и позволяет слать любые TCP, UDP, ICMP, IP и даже Ethernet пакеты.

    что-то это напоминает...ах да flash!

     
     
  • 4.9, Урри (ok), 16:19, 27/11/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    дыр маловато. надо добавить 1000 или даже 2000, вот тогда будет флеш.
     
     
  • 5.32, Аноним (32), 09:28, 28/11/2022 [^] [^^] [^^^] [ответить]  
  • +/
    flash можно было не ставить и большинство веб-макак это понимало и не сувало его где попало, а вот js он уже в бровсере и web макаки его активно используют.
     
  • 4.31, mos87 (ok), 08:09, 28/11/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    двачаю
    там тоже ВМ была, чтобы векторной анимацией рулить. И байткод под неё соотв-но.
     
  • 3.13, Kuromi (ok), 17:18, 27/11/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Скажите спасибо что пока что это пока не обязательные технологии, а то вот например Canvas, которым везде снимают отпечатки с пользователей в том же ФФ в какой-то момент выключить стало нельзя.
     
     
  • 4.15, Аноним (15), 20:03, 27/11/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > а то вот например Canvas

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

     
     
  • 5.17, Апрем (?), 20:49, 27/11/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Наглое вранье.
     
     
  • 6.22, Аноним (15), 23:02, 27/11/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Я понимаю, что ты дальше опенета не вылазил...
     
  • 6.33, Аноним (32), 09:29, 28/11/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ставишь аддон CanvasBlocker, включаешь режим блокирования everything и наслаждаешься
     
     
  • 7.40, Kuromi (ok), 20:43, 06/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Ставишь аддон CanvasBlocker, включаешь режим блокирования everything и наслаждаешься

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

     
  • 5.26, Аноним (2), 00:43, 28/11/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > многие сайты сами рисуют гуй-элементы на канве или даже через webgl

    Прям многие, т. е. больше 50%? посуди сам: гуй элементы гораздо проще выводить через стилизованные DOM-элементы, и канва тут нахрен не уперлась. Канва -- это когда:

    - нужно знать геометрию на уровне хотя бы пятиклассника
    - нет удобной стилизации, цвета и размеры захардкожены в unmaintainable JS
    - нет удобной компоновки, переизобретай grid и flex с нуля
    - нет удобной анимации, переизобретай CSS transitions/animations с нуля

    То, что через HTML/CSS можно написать буквально за 10 (десять, ten, diez) секунд (seconds, segundos), на канве может запросто занять пару-тройку часов (hours, horas). Поскольку веб-разрабы идут по пути меньшего сопротивления, к канве обращаются в очень редких исключительных случаях. Так что от тебя список "многих сайтов", которые вместо стилизованных DOM-элементов зачем-то рисуют на канве. Важное уточнение: речь не про игровые сайты, ибо игры обычно рисуют на канве, что правильно, ибо на доме будет тормозить. Но ты упомянул "многие" (>50%) сайты, так что приводи неигровые (новостные, админки итд).

     
     
  • 6.27, Аноним (15), 01:42, 28/11/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Прям многие, т. е. больше 50%?

    Вот так всегда журнализты пишут, сами подменят термины - сами удивляются.

     
     
  • 7.28, Аноним (2), 02:03, 28/11/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > сами подменят термины

    Самокритика -- это хорошо, уважительная черта:

    - многий — ая, ое. 1. только мн.: многие, их. Составляющие неопределённо большое число, значительную часть кого , чего л.
    - МНОГИЙ — МНОГИЙ, ая, ое. 1. мн. О ряде однородных единиц, предметов: значительные по количеству.

    Более подходящим словом для сайтов-на-канве будет "немногий", о чем ты наверное уже к этому моменту и сам догадался. Кстати, ни одного сайта так и не привел, что тоже определенный плюсик к твоей позиции.

     
     
  • 8.29, Аноним (15), 07:45, 28/11/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Я рад, что у тебя самокритика сохранилась, но Ты бы приводимые цитаты почитал... текст свёрнут, показать
     
  • 8.30, Аноним (15), 07:49, 28/11/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Более того, в твоей цитате вообще нет ни слова про большинство ... текст свёрнут, показать
     
     
  • 9.34, Аноним (34), 10:03, 28/11/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Слово большинство впервые употребил именно ты Так что ты опроверг самого себя... текст свёрнут, показать
     
  • 5.36, Васян (?), 09:53, 29/11/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > многие сайты сами рисуют гуй-элементы на канве или даже через webgl.

    Примеры в студию. Если "многие" - значит, не составит труда привести хотя бы десяток примеров.

     

  • 1.4, Аноним (4), 12:16, 27/11/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Народ, можете прдсказать на основе этой штуки платформу для что то типа code battle?
     
  • 1.7, Аноним (7), 15:38, 27/11/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    "Реализован набор компонентов wasmer-js для запуска Wasmer в web-браузере и взаимодействия с ним из JavaScript, используя библиотеку wasm-bindgen"
    Зачем запускать Wasmer в браузере, когда браузер сам может запускать webasm приложения? Рантайм в рантайме?
     
  • 1.8, Аноним (8), 16:10, 27/11/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    "Wasmer также доступен в форме библиотеки, которую можно использовать для встраивания кода WebAssembly в программы на языках Rust, С/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir и Java."

    То есть это тащит браузер чтобы исполнять нужную библиотеку?

     
     
  • 2.12, Анонн (?), 17:04, 27/11/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Нет, в браузере нужна только виртуальная машина, а в байткод/бинарник для нее компилируется исходный код.
     
  • 2.23, Аноним (23), 23:48, 27/11/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > То есть это тащит браузер чтобы исполнять нужную библиотеку?

    Вроде всё написано понятно, а ты к чему-то браузер прикрутил. Васмер не основывается ни на каком браузере. И он сам совсем-совсем не браузер. Поэтому то, что вызвало у тебя непонимание (или это "типа тонкий" троллинг?) означает только одно - ты можешь написать свою программу и встроить в нее среду исполнения wasm-кода. Точно так же как библиотекой ты можешь внедрить в свою программу интерпретатор языка Lua и этот интерпретатор не будет браузером. И, повторюсь, т.к. васмер - это далеко не браузер, то браузер ты в свою программу не тащишь.

     

  • 1.10, Урри (ok), 16:21, 27/11/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    там урл не совсем в новости правильный. правильный будет так:

    "curl https://get.wasmer.io/simple_bash_trojan -sSfL | sh".

     
     
  • 2.11, Аноним (11), 16:41, 27/11/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А открыть содержимое и посмотреть глазками тебе квалификация не позволяет?
     
     
  • 3.14, Анончик (?), 18:29, 27/11/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А инсталлятор трояна чем то будет отличатся от инсталлятора обычного бинаря?
    Или вы ждете trojan_install() там увидеть?
     
     
  • 4.16, Аноним (16), 20:18, 27/11/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Вот и подросло поколение, которое даже скрипт на баше прочитать не может.
     
     
  • 5.21, Аноним (-), 21:32, 27/11/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А зачем его читать? Его в шелл надо запайпить!
     
  • 5.35, Аноним (35), 14:19, 28/11/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Этот скрипт стягивает и запускает на машину бинари. В любой момент бинарь и даже скрипт с URI-адресами бинарей могут быть подменены так как никаких цифровых подписей, кроме подписи web-сервера нет. История знает такие примеры, поэтому все файлы, что будут запускаться у клиента принято подписывать цифровой подписью, доступа к которой у беззащитного сервера нет. Даже на винде это практикуется.
     
  • 3.18, Аноним (18), 21:03, 27/11/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >А открыть содержимое и посмотреть глазками тебе квалификация не позволяет?

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

     
     
  • 4.19, Аноним (11), 21:13, 27/11/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ты устанавливаешь его один раз. А потом обновляешь через self-update.
    Плюс этот курл - не единственный вариант:
    - ты можешь скачать бинарь https://github.com/wasmerio/wasmer/releases
    - можешь сбилдить из сорцов
     
  • 4.20, Admino (ok), 21:14, 27/11/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В линуксе-то чай, опакетят.

    А в виндовсе никто не сможет сделать curl.

    Проблема решена.

     

  • 1.24, Аноним (24), 23:50, 27/11/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    вебассембли - зло, такое же как и сустемД. Закапывайте к чёрту такие технологии!
     
     
  • 2.25, Аноним (25), 23:54, 27/11/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Systemd на WASM в браузере? В этом что-то есть... ;)
     
  • 2.38, Брат Анон (ok), 16:18, 30/11/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Старое железо тебе скажет спасибо. Ты пропустил строки на счёт "компиляция в нативный машинный код". Раньше у тебя болела голова как под конкретную ОС собрать софтину, под какой ЦПУ выбрать оптимизацию, а теперь всё делают за тебя, оптимизируют до предела и ты ещё недоволен.

    Напомню тебе: Жаба не такая уж и унифицированная, Нет от мастдая троянский конь. Теперь появилась альтернатива.

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

     
     
  • 3.39, Аноним (-), 05:30, 01/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Жаба в немаздае немаздайская. Старое железо спасибо не скажет ибо не потянет (про игрульки речь ?) Производительность ниже жабы.
     

  • 1.41, Аноним (41), 08:49, 07/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ждем от Касперского антивирус от вирусов на WASM :-)
     

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



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

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