4 ms·
There are 4 relevant VMs: .net, java, js and erlang. If you're making a language and not targeting one of them, you're DOA.
by BoiledCabbage 7y ago
There are 4 relevant VMs: .net, java, js and erlang.
If you're making a language and not targeting one of them, you're DOA.
- kragen 7y agoAlso LLVM, wasm, amd64, ARM, aarch64, RISC-V, Vulkan, Radeon, NVIDIA, Gen, and iCE40. Instruction sets are more exciting than they have been since the 1980s.
- dhash 7y agoThese are native instruction sets, not a VM. The parent seems to also mean runtimes, which LLVM does not provide
- kragen 7y agoI think all of those have software implementations ("VMs")†, although it's true that some of them have hardware implementations as well ("native instruction sets"). Since the IBM 360, though, the distinction has been very fuzzy. † although Intel Gen, RADEON, and the NVIDIA GPU ones might be an exception
- unlinked_dll 7y agoAnd none of them guarantee tail call optimization leading to trade offs in the design of particular languages that may or may not be acceptable.
- wues 7y agoErlang guarantees tail call optimisation.
- weavie 7y agoPretty sure .Net has a TCO opcode that F# uses.
- sb8244 7y agoWhat does "guarantee" mean here? If you end a function in BEAM with another function call, it's TCO.
- bad_login 7y agoTail Call Optimization is an optimization done by the compile/vm that replace (in assembly terms) a CALL by a JMP. Therefore removing a call stack.
- sb8244 7y agoCorrect. BEAM does real TCO as far as I'm aware. LYSE has a blurb about it and seems to agree (https://learnyousomeerlang.com/recursion https://learnyousomeerlang.com/recursion).
- kjeetgill 7y agoDead or arrival? I'd argue Go and Rust are pretty prominent recent arrivals that have seen great uptake.