Unfortunately, tail-call primitive interacts badly with the the
stack-inspection based security model.

See
http://research.microsoft.com/~adg/Publications/details.htm#stack-inspection

Personally, I think the need to do tail call optimizations is a bit
overrated. There are a few examples where you absolutely need it, but most
of the time I'm happy to just write a while loop, or only have a local set of
mutually recursive functions turned into gotos.