4 ms·
Calling it “politics” is a disservice. PNaCL was closely tied to Chrome (+ PPAPI), but it paved the way for WASM. Mozilla’s asm.js was a different step leading
by klodolph 7y ago
Calling it “politics” is a disservice. PNaCL was closely tied to Chrome (+ PPAPI), but it paved the way for WASM. Mozilla’s asm.js was a different step leading in the same direction.
- pjmlp 7y agoYes it was politics, it was open source and others were invited to contribute, instead Mozilla came up with convoluted asm.js as alternative. And it remains to be seen when WASM will reach parity with PNaCL features, most likely 5 more years or so. It is incredible how politics slow down innovation.
- flohofwoe 7y agoEh, PNaCl had its own share of problems (the only feature it had even over asm.js was pthread-style threading, but performance was about even and first time upstart speed for a new code blob was a lot slower both than asm.js and Wasm). But as the "whole developer package", PNaCl quickly fell behind emscripten: The whole feature area of interacting with the Javascript and web-API side was basically non-existant, or at best difficult (it felt more like JNI in the Android SDK/NDK), while emscripten treated this as important feature to get right from the start. Emscripten realized early how important it is to support porting existing code bases and added shims for quite a few popular cross-platform APIs. Working with the PNaCl SDK was just barely better than the Android NDK (which is pretty much the yardstick for the worst developer experience possible), and development just wasn't as fast and "pragmatic" than emscripten and asm.js (despite emscripten basically being a "one man show" for a long time). TL;DR: PNaCl nostalgia considered harmful ;)
- pjmlp 7y agoWebAssembly hype is also considered harmful. "Not So Fast: Analyzing the Performance of WebAssembly vs. Native Code" https://www.usenix.org/system/files/atc19-jangda.pdf https://www.usenix.org/system/files/atc19-jangda.pdf SIMD in PNaCL https://developer.chrome.com/native-client/reference/pnacl-c-cpp-language-support#portable-simd-vectors https://developer.chrome.com/native-client/reference/pnacl-c... Currently at phase 3 on WebAssembly GC in PNaCL, https://chromium.googlesource.com/native_client/pnacl-llvm/+/upstream/master/docs/GarbageCollection.rst https://chromium.googlesource.com/native_client/pnacl-llvm/+... Currently at phase 1, on hold due to reference types, and still remains to be seen how to proceed. Tail Calls in PNaCL https://developer.chrome.com/native-client/reference/pnacl-bitcode-manual#direct-procedure-call https://developer.chrome.com/native-client/reference/pnacl-b... Currently at phase 3. WebAssembly is so much better than the migration documentation from PNaCL into WebAssembly is full of "Not Implemented", "In future HTML 5 API", "Being worked on", .... https://developer.chrome.com/native-client/migration https://developer.chrome.com/native-client/migration The irony of all of this, it that Chrome and Safari (mostly due to iOS) are what most developers nowadays care about, so we might end up with WebAssembly that works best on Chrome, coming full circle. And the current WebAssembly development experience is also not something to be proud of, see Ashley Williams talk at WebAssembly Summit. I do agree about the sore state of Android NDK, despite many improvements in the last 10 years, to the point that I think by making it such an unbearable experience to use C and C++, it is one of the mechanisms Google uses to improve Android's security.
- flohofwoe 7y agoI actually agree that WebAssembly is currently overhyped ;) But I guess that's one of the side effects of being a 'web technology'. (e.g. the difference of code size and performance to plain old asm.js isn't by far as big as many people think). > such an unbearable experience to use C and C++, it is one of the mechanisms Google uses to improve Android's security. ...as if Android has a spectacular security track record vs iOS ;)
- pjmlp 7y agoI guess many just aren't paying attention to iOS land: https://support.apple.com/en-us/HT210918 https://support.apple.com/en-us/HT210918