Exception handling is necessary to efficiently support languages that need it without giving them direct control over the stack. I'd prefer if exception handling was provided with a more general abstraction though.
GC is necessary for the same reasons, to prevent each language from bringing it's own GC and to enable cross-language interop.
JIT is already implied by the very nature of Webassembly being an architecture independent stack machine, so every runtime has to already be a JIT compiler anyway (except interpreters). Exposing JITing to Wasm code is a natural progression and very valuable.
Not that the WASM spec work doesn't have problems (looking in as an outsider), but the existence of these features are not my complaints.
Compiling to JS is a good option, with the caveat that it will never deliver consistent performance. JS engine vendors place less importance on optimizing for JS transpilers now that the future is WebAssembly.
GC is necessary for the same reasons, to prevent each language from bringing it's own GC and to enable cross-language interop.
JIT is already implied by the very nature of Webassembly being an architecture independent stack machine, so every runtime has to already be a JIT compiler anyway (except interpreters). Exposing JITing to Wasm code is a natural progression and very valuable.
Not that the WASM spec work doesn't have problems (looking in as an outsider), but the existence of these features are not my complaints.