Как использовать wasmer в iOS?

#webassembly

Вопрос:

Wasmer-это кроссплатформенная среда выполнения веб-сборки. Я хочу запустить wsam на платформе IOS. В официальном документе нет учебника, и я не могу найти демо в Интернете.

Ответ №1:

wasm3 работает на широком спектре архитектур (x86, x86_64, ARM, RISC-V, PowerPC, MIPS, Xtensa, ARC32, …) и платформ:

 Linux, Windows, OS X, FreeBSD, Android, iOS
OpenWrt, Yocto, Buildroot (routers, modems, etc.)
Raspberry Pi, Orange Pi and other SBCs
MCUs: Arduino, ESP8266, ESP32, Particle, ... see full list
Browsers. Yes, using WebAssembly itself!
wasm3 can execute wasm3 (self-hosting)
 

https://github.com/wasm3/wasm3

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

1. Пожалуйста, укажите дополнительную информацию в своем ответе. Как это написано в настоящее время, трудно понять ваше решение.

Ответ №2:

Wasmer не поддерживает iOS. Скорее всего, будет невозможно запустить WASM на iOS без большого штрафа за время выполнения или предварительной компиляции, поскольку Apple не разрешает использовать компиляторы точно в срок. Это обсуждалось в этом выпуске Wasmer: https://github.com/wasmerio/wasmer/issues/1832
(Пожалуйста, проверьте мое обновление ниже)

Как указала Битмайя, Wasm3 был бы вариантом, поскольку он использует интерпретатор для запуска WebAssembly, и поэтому запрет JIT на него не распространяется. Другие проекты, такие как wasmi, также должны работать.

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


Редактировать:

Я пропустил обновление по этому вопросу. Похоже, они добавили поддержку iOS для одного из бэкэндов (запрос на вытягивание: https://github.com/wasmerio/wasmer/pull/2535).

Вы можете проверить пример здесь: https://github.com/wasmerio/wasmer/blob/81c090c6ea79f7b5705b4cbb07311169799fd091/examples/platform_ios_headless.rs

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