(no title)
eugeneionesco | 8 years ago
I really hope people don't think webassembly is the fault for this, this vulnerability is no different from any other memory corruption vulnerability you would find in the js interpreter or the css parser or whatever.
standupstandup|8 years ago
As for the rest, well, it'd be nice if there was any sort of plan to make Blink safer. I know about oilpan but what Mozilla is doing with Rust is impressive. The JVM guys are working on rewriting the JVM in Java. What's Blink's plan to make its own code safer? Sandboxing alone?
pjmlp|8 years ago
https://www.infoq.com/articles/virtual-panel-dotnet-future
And the D guys have been rewriting dmd, the reference compiler, into D.
steveklabnik|8 years ago
The ones you call out in this post don’t have the same impact as native, even when it’s C or C++ compiled to wasm.
pjmlp|8 years ago
"Automated Testing of Graphics Shader Compilers"
http://multicore.doc.ic.ac.uk/publications/oopsla-17.html
kodablah|8 years ago
Nah, I think it's pretty clear GP meant "when you insist on writing interpreters/compilers in C++" not that C++ was compiled into wasm.
kevingadd|8 years ago
Most (all?) browser wasm backends function by just generating the internal IR used by the existing JS runtime, so it's not especially necessary to write the loader/generator in C++. The generated native module(s) are often cached, also, which diminishes the importance of making the generator fast at the cost of safety.
I wrote all the original encoder and decoder prototypes in JS for this reason - you can make it fast enough, and the browser already has a high-performance environment in which you can run that decoder. When the result is already being cached I think writing this in C++ is a dangerous premature optimization.
Similarly it's common to write decoders as a bunch of switch statements and bitpacking, which creates a lot of duplication and space for bugs to hide. You can build these things generally out of a smaller set of robust primitives to limit attack surface, but that wasn't done here either, despite my best efforts.