2 ms·
It's fun to argue what-if's, up to a point. But I see a couple of factual problems: 1. JS via asm.js paved the way for WebAssembly, and asm.js (https://asmjs.o
by BrendanEich 3y ago
It's fun to argue what-if's, up to a point. But I see a couple of factual problems:
1. JS via asm.js paved the way for WebAssembly, and asm.js (https://asmjs.org/ https://asmjs.org/) like Wasm is statically typed. Scheme is dynamic. So there would have to be an asm.scm or similar evolutionary path, in order to get to something like Wasm even if in addition to Scheme rather than JS, for the needed win.
Polymorphic inline caching etc. is not enough to compete with native, e.g., to run Unreal Engine 5:
https://x.com/spatialweeb/status/1757581115609817236 https://x.com/spatialweeb/status/1757581115609817236
Static typing matters beyond raw CPU perf, in order to prove memory safety with definite allocation -- no touching the GC or 30fps gameplay falls over.
2. Wasm is binary, and this matters too: while transport compression helps JS on the wire, or under the alternative, would help Scheme on the wire, the memory cost (plus CPU of LZ) blowing out the compressed payload into source form for parsing is too much for mobile, or for any head to head competition with the likes of PNaCl (which ~2012 era Google was flogging in vain -- no way it would get into Safari or other browsers).
Yes, binary syntaxes for Lisps exist, but it's not the case that everything can be done "with just lisp".
Please use factual yardsticks and apples-to-apples even for counterfactuals that would have to survive in the same ecosystem.