< obelus> if lua is written in C, how can it support things that C does not, like closures, tail call eliminations, etc.?