I was watching a Jonathan Blow clip recently where he was bemoaning all the layers of abstraction we've put over executables, which are all x86 (or ARM etc) at the end of the day.

It got me wondering if it would be feasible to have a single executable format that works across OSes. My OS knowledge is pretty rusty. What are the main roadblocks? Will we always have to have at least some runtime layer like WebAssembly?

CloudABI (https://github.com/NuxiNL/cloudabi) was an interesting attempt at doing just that. However it seems it didn't gain enough traction and people involved veered towards wasm/wasi which also abstracts over the instruction set (at the expense of performance, unless I'm missing some development on the AOT front)