I don’t understand how it’s possible pick three here: “full-native speed”, single address space OS (everything in ring 0) and security. I believe you can only pick two.
I haven’t yet read the whole paper but in the conclusion they say that performance was a non-goal. They “also improved message-passing performance by enabling zero-copy communication through pointer passing”. Although I don’t see why zero-copy IPC can’t be implemented in a more traditional OS design.
The only (performance-related) advantage such design has in my opinion is cheaper context-switching, but I’m not convinced it’s worth it. Time (and benchmarks) will show, I guess.
When communication across processes becomes cheaper than posting a message to a queue belonging to another thread in the same process in a more traditional design, I’d say that that’s quite a monstrous “only” benefit.
I should have drawn your attention to section 2.1 in the original comment, that’s where you original query is addressed. Basically the protection comes from static analysis, a bit like the original Native Client or Java’s bytecode verifier
A bold claim that I’d be curious to hear sustantiated.
Someone on the reddit post asked much the same thing. Here’s my reply:
I’d argue that premature optimization is the root of all evils… but I have a better question.
Did you chose WebAssembly for performance, simplicity or both?
Nebulet is a great challenge to my own wisdom because of this choice: I do not like WASM.
And if it sound so much evil and disgusting to an heretic like me, it must really be a great hack! ;-)
I agree with you in most cases about premature optimizations. However, there are some parts, like in an os scheduler, that aren’t much more difficult to optimize and reap huge benefits.
I chose wasm for both of those benefits. It can reach almost native performance, but the compiler for it and the runtime around are much simpler than any other comparable isa.
Why don’t you like wasm?
From wikipedia:
Really, what can go wrong?
I grew up when the web was a public library, not a market.
I learnt my first HTML, CSS and Javascript through “view source”.
WASM is the ultimate obfuscation.
There is a huge architectural security flawn in webassembly (inherited by Javascript): you run on your pc code controlled by a third party that knows you and your location and can easily customise such code to exploit the resources of your pc.
This is actually a geopolitical scale security issue.
From a technical perspective several high level assembly exists (java byte code, clr’s IL, Inferno DIS… the first that come to mind), but deploying worldwide a new one based on the provably most insecure system existing out there is plain stupid (if not criminal).
These are in a nutshell my concerns.
But these are not concerns with your project!
It’s an interesting hack… exactly because it could prove me wrong!