Size: a a a

WebAssembly — русскоговорящее сообщество

2021 January 02

SR

Sergey Rubanov in WebAssembly — русскоговорящее сообщество
бтв пытался сегодня смотреть как булки добавить в васм3, но пока не разобрался и забрали пить 😅
источник

VS

Volodymyr Shymanskyy in WebAssembly — русскоговорящее сообщество
в булках много всего, уже начинали делать)
но уже после праздников!
источник

CD

Camina Drummer in WebAssembly — русскоговорящее сообщество
Sergey Rubanov
бтв пытался сегодня смотреть как булки добавить в васм3, но пока не разобрался и забрали пить 😅
Простите, но что такое булки? 🤔
источник

SR

Sergey Rubanov in WebAssembly — русскоговорящее сообщество
Camina Drummer
Простите, но что такое булки? 🤔
местное сленговое название пропозала bulk memory operations (который выделили из reference types, потому что они и отдельно полезны)
источник

CD

Camina Drummer in WebAssembly — русскоговорящее сообщество
Sergey Rubanov
местное сленговое название пропозала bulk memory operations (который выделили из reference types, потому что они и отдельно полезны)
Благодарю
источник

3

3bl3gamer in WebAssembly — русскоговорящее сообщество
всем привет и с Новым годом!

что за странные импорты генерит emscripten, и можно ли полагаться на постоянство этих названий?

например, main.c:
#include <emscripten.h>
#include <stdlib.h>

EMSCRIPTEN_KEEPALIVE
int ff() {
   exit(0);
}

собираю:
emcc -Wall -O3 -Wl,--no-entry -o out.wasm main.c

в wat'е получается такое:
(import "wasi_snapshot_preview1" "proc_exit" (func $fimport$0 (param i32)))

что это за wasi_snapshot_preview1? да и почему именно proc_exit, а не просто exit например?
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
3bl3gamer
всем привет и с Новым годом!

что за странные импорты генерит emscripten, и можно ли полагаться на постоянство этих названий?

например, main.c:
#include <emscripten.h>
#include <stdlib.h>

EMSCRIPTEN_KEEPALIVE
int ff() {
   exit(0);
}

собираю:
emcc -Wall -O3 -Wl,--no-entry -o out.wasm main.c

в wat'е получается такое:
(import "wasi_snapshot_preview1" "proc_exit" (func $fimport$0 (param i32)))

что это за wasi_snapshot_preview1? да и почему именно proc_exit, а не просто exit например?
На имена можно полагаться в какой то мере, а вот на имя пространства (wasi_snapshot_preview1) точно нет, так как это неймспейс для не стабильного еще wasi
источник

3

3bl3gamer in WebAssembly — русскоговорящее сообщество
MaxGraey
На имена можно полагаться в какой то мере, а вот на имя пространства (wasi_snapshot_preview1) точно нет, так как это неймспейс для не стабильного еще wasi
а как тогда этим стенделоном вообще пользоваться? надо получить от emcc имя пространства? или как-то передать своё имя?
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
3bl3gamer
а как тогда этим стенделоном вообще пользоваться? надо получить от emcc имя пространства? или как-то передать своё имя?
Это зависит от хоста. В node.js там все просто. В wasmtime тоже должно легко выбираться какая ревизия wasi ожидается. Можно ее еще в кастомные секции прописать, что бы не парсить / детектить в wasm модуле
источник

Constantine ʕ◔ϖ◔ʔ🦀... in WebAssembly — русскоговорящее сообщество
The goal of this proposal is to add a new compiler directive go:wasmexport to export Go functions when compiling to WebAssembly.
https://github.com/golang/proposal/blob/master/design/42372-wasmexport.md 🧐
источник

3

3bl3gamer in WebAssembly — русскоговорящее сообщество
так это Го, а я пытаюсь Си скомпилять
источник

3

3bl3gamer in WebAssembly — русскоговорящее сообщество
MaxGraey
Это зависит от хоста. В node.js там все просто. В wasmtime тоже должно легко выбираться какая ревизия wasi ожидается. Можно ее еще в кастомные секции прописать, что бы не парсить / детектить в wasm модуле
от хоста?.. типа, нода сама смотрит, какой wasi_* импортируется, и подставляет нужную реализацию?
я для браузера собираю
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
3bl3gamer
от хоста?.. типа, нода сама смотрит, какой wasi_* импортируется, и подставляет нужную реализацию?
я для браузера собираю
Нет, но это можно сделать. В ноде это делается так:
https://nodejs.org/api/wasi.html#wasi_webassembly_system_interface_wasi

const importObject = { wasi_snapshot_preview1: wasi.wasiImport };
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
А вообще, детектировать нет особого смысла думаю. Так ил  наче просто стараться использовать самую свещую спеку. В данном случае это wasi_snapshot_preview1.
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Потому что даже если ты распарсишь wasm-модуль, определишь, что там wasi_snapshot_preview1 или wasi_stable, то не факт, что названия методов, лайауты структур, типы и поведение у них будут одинаковыми для всех методов)
источник

Constantine ʕ◔ϖ◔ʔ🦀... in WebAssembly — русскоговорящее сообщество
3bl3gamer
так это Го, а я пытаюсь Си скомпилять
Да это я не вам, а в общем появился новый proposal связанный с WebAssembly в Go.
источник

3

3bl3gamer in WebAssembly — русскоговорящее сообщество
MaxGraey
Потому что даже если ты распарсишь wasm-модуль, определишь, что там wasi_snapshot_preview1 или wasi_stable, то не факт, что названия методов, лайауты структур, типы и поведение у них будут одинаковыми для всех методов)
хм. вобщем-то да. спасибо
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Для браузера есть кстати полифил
https://www.npmjs.com/package/@wasmer/wasi
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
вообще этих полифилов много
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
просто этот изоморфный
источник