Why Lua?
Not criicizing lua, but worth comparing to guile.<p>> Integration with C (and C++ for that matter)<p>Guile does it better. You can use shared memory threads in guile without any penalty. Atmost you have to allow for the garbage collector to run when inside FFI functions. But that is  a small price to pay in case you need to use multiple parallel-concurrent threads with a single heap.<p>Guile was built with FFI in mind and has an impressive history. Just take a look at guile gnome bindings.<p>> Speed and Simplicity<p>Guile 2 is extremely fast. Not as fast as LuaJIT, but it no reason it won't get there. As for simplicity, take a look at the partial evaluator in trunk of guile 2.<p>> Education<p>Guile is good old scheme.<p>> Functional<p>Can't get more functional than scheme :)<p>> Everything is a Table<p>Well, almost everything is a pair in guile. Vectors and hash-tables are trivially available. Though I recommend to sticking to functional programming in scheme style.<p>> Consistent<p>As before, can't get more consistent than scheme.<p>> Portable<p>Guile is available on n900. So there.<p>To continue, guile has continuations (delimited or otherwise), and macros (hygienic or otherwise), both of which are effectively missing in lua.<p>And guile offers all of this while supporting native threading with a single heap. Sweeet.