Вон в rust считают, что не нужна:
- Tail calls «play badly» with deterministic destruction. Including deterministic drop of ~ boxes. Not to say that they're not composable, but the options for composing them are UI-awkward, performance-penalizing, semantics-complicating or all of the above.
- Tail calls also «play badly» with assumptions in C tools, including platform ABIs and dynamic linking.
- Tail calls require a calling convention that is a performance hit relative to the C convention.
- We find most cases of tail _recursion_ convert reasonably well to loops, and most cases of non-recursive tail calls encode state machines that convert reasonably well to loops wrapped around enums. Neither of these are _quite_ as pretty as the tail-call-using variants, but they do work and are «as fast»*, as well as idiomatic for C and C++ programmers (who are our primary audience).