Also 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.
These are native instruction sets, not a VM. The parent seems to also mean runtimes, which LLVM does not provide
I 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
Dead or arrival? I'd argue Go and Rust are pretty prominent recent arrivals that have seen great uptake.
Re:Clojure for the Erlang VM
by unlinked_dll on Monday January 06, 2020 @03:21AM
(#21967512)
And none of them guarantee tail call optimization leading to trade offs in the design of particular languages that may or may not be acceptable.
Erlang guarantees tail call optimisation.
Pretty sure .Net has a TCO opcode that F# uses.
What does "guarantee" mean here? If you end a function in BEAM with another function call, it's TCO.
Tail 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.
Correct. BEAM does real TCO as far as I'm aware. LYSE has a blurb about it and seems to agree (https://learnyousomeerlang.com/recursion).
If you're making a language and not targeting one of them, you're DOA.