Thanks for the link! I hadn’t heard why Chrome put TCO implementation on hold nor about their syntactic tail calls proposal. Interesting.
It’s slightly worse than that link makes it appear. There are two things that make tail-call elimination difficult to implement correctly:
In general, a language has to pick one out of tail-call elimination and stack introspection. C/C++ are in a somewhat interesting middle ground where both the mechanism for stack unwinding and the presence of tail-call elimination are both implementation defined and so any given compiler / runtime can pick the one it wants.