You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I've been thinking about how to implement tasking on top of wasm. Wasm coroutines are a planned feature (https://github.com/WebAssembly/design/blob/master/FutureFeatures.md#coroutines), but no work has been done toward it, as far as I can tell. I've looked at how go implements goroutines and it looks like they're just using explicitly managed stacks in linear memory (but I'll need to look into this further). That's a bit tricky, because you you can't just push a return address onto the linear stack and jump to it. Tail calls (https://github.com/WebAssembly/tail-call/blob/master/proposals/tail-call/Overview.md) may help there, but I'm not sure they're implemented yet. We'd also need an LLVM pass that splits any function at a call boundary and turns it into push return/tail call.
The text was updated successfully, but these errors were encountered:
I've been thinking about how to implement tasking on top of wasm. Wasm coroutines are a planned feature (https://github.com/WebAssembly/design/blob/master/FutureFeatures.md#coroutines), but no work has been done toward it, as far as I can tell. I've looked at how go implements goroutines and it looks like they're just using explicitly managed stacks in linear memory (but I'll need to look into this further). That's a bit tricky, because you you can't just push a return address onto the linear stack and jump to it. Tail calls (https://github.com/WebAssembly/tail-call/blob/master/proposals/tail-call/Overview.md) may help there, but I'm not sure they're implemented yet. We'd also need an LLVM pass that splits any function at a call boundary and turns it into push return/tail call.
The text was updated successfully, but these errors were encountered: