1. It makes sense that any language with GC-less memory management will be easier to port to WASM, because in WASM all we have is a linear array of bytes as memory.
2. But then higher languages like Kotlin have a LLVM backend, and then derive WASM binaries from LLVM IR. What makes this possible?
3. Even dynamically typed languages like Python are ported to WASM (I guess they ship the interpreter itself with the binary which will make them heavier) but I'm not sure how is it different from #2 or am I confusing two different routes?
4. What does this even mean - https://github.com/WebAssembly/gc/#gc-proposal-for-webassembly ? "GC proposal for webassembly" - how will it aid in WASM becoming friendlier with higher level languages?
5. What exactly is ahead of time compilation? What relation does it have with WASM?
All this means I have a very shallow understanding of memory management. So feel free to get as technical as possible. Thank you!
Think it like a java bytecode, but which runs inside a browser.