Связь с Wasmtime WASI через HTTP/ сокеты

Существует потрясающий компилятор веб-сборки и виртуальная машина с именем Wasmtime, которые обеспечивают поддержку выполнения без какого-либо встраивания, что позволяет запускать приложения WASM напрямую из командной строки https://docs.wasmtime.dev/lang-bash.html

К сожалению, не существует официального способа выполнения HTTP / сетевой связи через WASI, поскольку HTTP / сокеты отсутствуют в моментальном снимке предварительного просмотра WASI, поэтому разработка любого полезного приложения через Wasmtime проблематична.

Чисто теоретически невозможно запустить какой-либо прокси-сетевой сервер, который выдает реальные TCP-соединения от хоста и взаимодействует с приложением Wasmtime через файловую систему по настраиваемому протоколу, но он кажется чрезмерно сложным и, возможно, влияет на плохую производительность.

Существуют такие решения, как https://github.com/deislabs/wasi-experimental-http, но это не подходит, поскольку требует написания пользовательской точки входа в Rust, установки инструментальной цепочки Rust и ее компиляции для множества целевых платформ вместо загрузки автономного исполняемого файла. файл с доверенного сайта https://wasmtime.dev/

Несколько недель назад я открыл проблему https://github.com/bytecodealliance/wasmtime/issues/3483, но, к сожалению, по ней нет прогресса или ответа.

Итак, основной запрос адресован команде Wasmtime: как это означало разрабатывать приложения для чтения с помощью среды выполнения Wasmtime, если какие-либо функции связи недоступны? В то же время активно развиваются экзотические расширения, такие как нейронные сети, поддержка HTTP / сырых сокетов hovewer является большей частью MVP.

Спасибо

1 ответ

Главный ответ на это, к сожалению, таков: нет, WASI еще не готова к такого рода вещам, но движется в этом направлении.

Для контекста, я основатель/сопровождающий Suborbital

Мы, например, создали собственный набор «облачных API» поверх основных сред выполнения Wasm (Wasmtime, WasmEdge, Wasmer) и представили их как библиотеку Go . По крайней мере, вам не нужны пользовательские версии чего-либо, мы связываем среду выполнения вместе с библиотекой.

На данный момент это лучший вариант, но есть надежда, что WASI устранит необходимость в пользовательских SDK/API, подобных нашим, в будущем.

Рады ответить на любые ваши вопросы!

Другие вопросы по тегам