Rust will likely not support tail call optimization
Please, for the sake of $DIETY, stop calling it "Tail Call Optimization". It is not an optimization, and the wrong term causes lots of useless discussions and misunderstanding. Call it "Tail Call Elimination", because that's what it is.<p>With finite memory (that is, in the real world), a program that relies on tail recursion will blow up if TCE is not implemented even though it can run forever with TCE. Thus, it changes actual program results (rather than just runtime speed or amount of memory required), and cannot be considered just an "optimization", since it is functionally required.<p>And to future-language designers: Please, for the sake of $DIETY2, make the syntax for guaranteed-eliminated-tail-call different than a regular call: It's really a bad idea that a function such as:<p><pre><code>    def f(x):
       ...
       return 0+f(x-1)
</code></pre>
cannot in general be TCEd (adding 0 to a floating point imporper denormal will make it proper), whereas<p><pre><code>     def f(x):
        ...
        return f(x-1)
</code></pre>
can. I suggest "chain y" instead of "return y" so that the compiler can verify that a TCE can indeed happen.