а как? Если setjump/longjump позволяет передать управления через несколько функций, call_indirect - это же call с сохранением адреса возврата на стек, который не operand stack и которым мы не можем управлять (т.е. не можем там делать push/pop)
а вообще было бы интересно подумать над какими-то дополнительными инструкциями wasm, которые позволили бы обрабатывать исключения. Не было случайно пропозалов на эту тему?
Народ, не подскажите ссылку на источник, где статья была о том как использовать Rust в Node.js через wasm, там было момент про передачи строк параметрами, рассказывалось про то что строку переданную из javascript необходимо сконвертить в utf-8?
а есть способ написать на Rust код, который и в wasm без биндингов может собираться, и в wasm с биндингами для js, и желательно еще и в системную библиотеку?
ну setjmp можно придумать как сделать с небольшой помощью компилятора. Главное чтобы хост мог ловить исключения. В setjmp в try блоке вызывается continuation. Потом в этом continuation васмом вызывается longjmp который throw’ает и катчится в setjmp и вызывается continuation с нулем