|
|
|
|
|
by higherhalf
1113 days ago
|
|
Excited for threads, sockets, futexes, but not excited for fork, signals and setjmp. They didn't include POSIX stuff like shared memory, select(2), unix sockets, and had to draw a line somewhere. Why include error-prone cruft? |
|
* classical shared memory (mapped into the main address space) is very hard to do in the context of Webassembly, especially in a performant way. Not impossible, but complicated. It would be valuable to add, but there are different approaches as well (like sharing additional Webassembly-level memories between instances, for example)
* WASI already has a concept similar to select
* unix sockets would be a pretty straight-forward addition
> Why include error-prone cruft?
A big goal here is to make existing software compile to Webassembly, with only a relatively small amount of changes.
For writing new software the direction of WASI (going towards the fine-grained capability model) is a very valid approach. But that won't get you compatibility with pretty much all software in existence.
And there is space to explore both directions.