Size: a a a

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

2020 July 09

でゲソ in WebAssembly — русскоговорящее сообщество
на годболт это уже работает
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
мне нужна функция вида

fn to_wasm(rust_code: TokenStream) -> Result<Vec<u8>>

let rust_code = quote! {
 #[no_mangle]
 pub fn foo() -> i32 {
    1
 }
};

let wasm = to_wasm(rust_code)?;
источник

でゲソ in WebAssembly — русскоговорящее сообщество
учитывая сколько там промежуточных представлений это ни разу не просто
источник

でゲソ in WebAssembly — русскоговорящее сообщество
либо компилмровать функции ручками и результат в виде бинаря скармливать
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
でゲソ
либо компилмровать функции ручками и результат в виде бинаря скармливать
именно
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
godbolt также делает вроде
источник

MG

Musлим Guseinov in WebAssembly — русскоговорящее сообщество
Mikhail Voronov
мне нужна функция вида

fn to_wasm(rust_code: TokenStream) -> Result<Vec<u8>>

let rust_code = quote! {
 #[no_mangle]
 pub fn foo() -> i32 {
    1
 }
};

let wasm = to_wasm(rust_code)?;
а этим разве не watt крейт занимается?
источник

でゲソ in WebAssembly — русскоговорящее сообщество
он просто скармливает rs файл в rustc
источник

MG

Musлим Guseinov in WebAssembly — русскоговорящее сообщество
а, все, понял что нужно
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
да, он не вырезает конкретную функцию из бинаря
источник

でゲソ in WebAssembly — русскоговорящее сообщество
макрос который бы делал также едва ли сделаешь
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
でゲソ
макрос который бы делал также едва ли сделаешь
почему?
источник

でゲソ in WebAssembly — русскоговорящее сообщество
можно сделать какой-нибудь кастомный скрипт build.rs который будет находить все эти макросы, компилять их в бинарь фоном и заменять хардкодом перед непосредственной сборкой раста
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
мне нужно, чтобы это было в макросе, мне нужна функция и я согласен на много ограничений на rust_code
источник

でゲソ in WebAssembly — русскоговорящее сообщество
Mikhail Voronov
почему?
потому что макросы не компилируют а делают макроподстановки
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
вообще моя конечная задача заключается в изменении скомпилированного васм бинарника и оборачиванию некоторых функций во врапперы
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
причём я не могу делать то, что мне нужно, на этапе компиляции васма с помощью процедурных макросов
источник

でゲソ in WebAssembly — русскоговорящее сообщество
теоретически конечно можно написать статик компилятор внутри макроса, но afaik такого пока никто не делал.
источник

でゲソ in WebAssembly — русскоговорящее сообщество
1. мне кажется мы скатывается в xy проблему
2. это слабо связано с васм и тебе лучше сгонять в расточат
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
я так и не понял, какая тут проблема в раст части, это можно делать и в процедурном макросе, но мне сейчас нужна просто функция. А вопрос был изначально в том, реализовано это уже или нет
источник