Isn't this just rewriting tail calls (http://en.wikipedia.org/wiki/Tail_call)? Am I missing something?
> It will still need a stack of return addresses
Keep reading, further down he even gets rid of the stack of return addresses.> (C, Pascal, C++, BASIC, FORTRAN, etc) didn't.
I'm not sure that's true. gcc, in optimizing modes, could do at least tail recursion elimination at least as far back as 1999, and does more now. (The earliest reference I can find refers to gcc 2.95.3, but its not clear to me if that's the first version that did it, or just the earliest version on which the writer tested and confirmed the behavior.)
Outside of a handful of languages, tail call elimination in either restrictive (e.g., tail recursion only) or general forms is an optional optimization rather than an essential behavior.