I have used Lua for some projects, basically for adding a scripting interface to an existing application.
May last work was
DogLua, a plugin to implement scriptable capabilities for
Project Dogwaffle, a paint and animation program (inspired by the work done with
gluas for
The GIMP).
I find Lua an amazing tool for this kind of things. It build from the ground up to be an light-weight extension language. so it feets very well. You can expose a C (or other compiler language, I have used PowerBASIC for example) function to the embedded Lua environment simply "registering" it, that is passing a pointer to the code and a name to identify the function in Lua. The parameters passing is made very easy trough a virtual task, so you can pass and return any number of parameters.
A note on LuaC; what you get isn't really compiled code, but just a bytecode, that's the exact same that is always executed by Lua. Passing a compiled chunk instead of a source to Lua you just skip the parsing step (very fast, anyway).
Recently Mike Pall has made available
LuaJIT, that as the name suggest is Just-In-Time "real" compiler for Lua code. I used it in the last version of DogLua, and the speedup from the standard vanilla version was about 3-6x depending on the situations. An incredible good job!
Bye!