I hope WebAssembly will not only be a web technology, but the de-facto format for cross-platform high-performance embedding. Such as for plugins, scripting and extensions.
Something you could send over the wire to the remote application and it could execute it with high performance and reasonable security. Cryptographic signatures can be used for more security sensitive contexts.
So one thing I'm really hoping no matter what happens to WebAssembly, that the external interface and requirements are kept simple.
Minimal required dependencies, no built-in class library, etc. It'd be ideal if WASM runtime environment is very lightweight, preferably just 100s of kB. The smaller, the better. Especially some kind of dependency for Javascript would be disastrous.
It'd be amazing if it was possible to run small ~10 kB WASM modules remotely on a microcontroller, like Cortex M4+ or such, with say 64 kB of RAM. You could add a lot of flexibility in some applications.
It actually looks very interesting for cross-platform "scripting", once there's a good cross-platform optimizing compiler library for it.
From where I stand, currently the most interesting proposals of the listed ones:
0) High-performance non-web "embeddability" with low memory requirements. (Not actually listed, but very much desirable.)
1) Threading. Would greatly help performance and portability in some cases. I'm a bit sceptical whether there's a way to add this after CPU speculative attacks (Spectre, etc.) became known.
2) SIMD. Lots of filtering and data processing algorithms can greatly benefit from this.
3) Tail calls / bulk memory ops.
4) Export / import mutable globals (and good module support in general)
5) Exceptions. (Minor, portability).
> 4) Export / import mutable globals (and good module support in general)
Already done (at least at the spec level), ref: https://github.com/WebAssembly/spec/pull/814. I'm currently implementing it in my non-web WASM backend now :-)
What is your non-web WASM backend?