5 ms·
I think you misunderstand what WebAssembly is about. As I understand it, it's little more than a binary serialization of JavaScript ASTs. In which case, no, yo
by cstrahan 11y ago
I think you misunderstand what WebAssembly is about.
As I understand it, it's little more than a binary serialization of JavaScript ASTs. In which case, no, you don't need to ship your own GC with it.
I mean, you could always write a JavaScript interpreter in JavaScript, and then compile that into WASM, in which case, yes, you'd ship your own GC. I don't see why you would feel the need to do that for real world applications, though.
- Touche 11y ago> I think you misunderstand what WebAssembly is about. I don't, WebAssembly is about C++, primarily. Every design decision has been to support C++. Everything else is an afterthought that will come later. WebAssembly isn't about minifying your JS. Read this: https://github.com/WebAssembly/design/blob/master/GC.md https://github.com/WebAssembly/design/blob/master/GC.md GC, DOM access, etc. don't exist in WebAssembly code, yet.
- bpicolo 11y agoIt's C++ first as a convenience, since LLVM is best at C++ and emscripten w/asm is a solid benchmark. It is NOT primarily about C++ just because that's the v1. https://github.com/WebAssembly/design/blob/master/FAQ.md#which-compilers-can-i-use-to-build-webassembly-programs https://github.com/WebAssembly/design/blob/master/FAQ.md#whi...
- ZenoArrow 11y agoIt's not about C++ primarily, it's about building on the base which asm.js laid out. C++ would only feature in this because of Emscripten.
- AgentME 11y agoWebAssembly is a compact serialization of asm.js, not of arbitrary Javascript.
- ludamad 11y agoThis conversation was confusing until I read this point
- DonHopkins 11y agoThat's true of version 1, but supporting arbitrary JavaScript is on the roadmap (step 3, "everything else" [1]). Which will be awesome! What I'd love to be able to do with tools like Unity3D that compile C# and other CLR languages into asm.js, would be to pass JavaScript objects directly in and out of the C# code so you can manipulate the underlying JavaScript objects directly from C# with little or no overhead. Right now of course you can implement JSON libraries in C#, but it's indirectly and inefficiently layered on top of the flat memory model of asm.js. I want to be able to use the native JavaScript objects and libraries directly from other languages like C# that compile into JavaScript. That would be ideal! To do that, asm.js would need a way to store references to garbage collected JS objects somewhere, somehow, using proxies or handles represented in linear memory, opaque reference types [2], or some other magic like that, like Apple's JavaScript/Objective C bridging stuff [3]. [1] http://bytecrafter.blogspot.nl/2015/06/a-quick-overview-of-what-webassembly-is.html http://bytecrafter.blogspot.nl/2015/06/a-quick-overview-of-w... [2] https://github.com/WebAssembly/design/blob/master/GC.md https://github.com/WebAssembly/design/blob/master/GC.md [3] https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/DisplayWebContent/Tasks/JavaScriptFromObjC.html https://developer.apple.com/library/mac/documentation/Cocoa/...
- geon 11y agoInteresting. But then it wouldn't really be compilation, but parsing + serialization. I guess the distinction is rather pointless.