> If a runtime implements the right apis, any wasm module that uses them should be able to run
That sounds great right now, when the APIs are relatively small, but will quickly become a nightmare when they grow in complexity.
I mean, technically any browser that implements the right stuff can run any web page on earth, yet somehow we still manage to have incompatibilities even when there are only 3 implementations. Or how about POSIX? How much software needs no special casing to run on all POSIX systems?
This is the pattern: we abstract things farther with the (mistaken) belief that it will save us from having to deal with messy reality, but as soon as you try to do anything more than simple stuff you find that reality is, in fact, a mess and you have to work around your abstraction to deal with it.
Yes, agreed. It will be interesting to follow WASI for this kind of thing. I suspect it will try to rebuild POSIX like use case from the ground up. However, there are going to be so many use cases that fall outside the WASI boundary. Wasm is just getting started.
That sounds great right now, when the APIs are relatively small, but will quickly become a nightmare when they grow in complexity.
I mean, technically any browser that implements the right stuff can run any web page on earth, yet somehow we still manage to have incompatibilities even when there are only 3 implementations. Or how about POSIX? How much software needs no special casing to run on all POSIX systems?
This is the pattern: we abstract things farther with the (mistaken) belief that it will save us from having to deal with messy reality, but as soon as you try to do anything more than simple stuff you find that reality is, in fact, a mess and you have to work around your abstraction to deal with it.