Lua [http://www.lua.org] is one of the many languages with a [Tk] binding. A vaguely [C]-styled [OO] [scripting] language developed "half-open source" at a Brazilian institution, characterized by using hash tables as central data structure, even for vectors and lists. Lua's kernel is unusually compact. Lua style emphasizes [metaprogramming]. Roberto published the Lua book [http://www.inf.puc-rio.br/~roberto/book/] early in 2004. Lua has its own [Wiki] [http://lua-users.org/wiki]. Lux [http://www.equi4.com/lux] is [Jean-Claude Wippler]'s experiment at binding Lua together with more traditional scripting languages ... Max Ischenko reports success using [SWIG] to wrap Lua libraries as loadable .so-s exposed through Tcl. He even has an [incr Tcl] class he calls "LuaInterpreter". [mfi]: Yup, that was pretty simple. To compile a .so you just do: swig -tcl8 -module lua Lua.i gcc -c -fpic lua_wrap.c gcc -shared lua_wrap.o -o lua.so -llua -llualib And the abovementioned itcl class is a little more complex than this sketch: itcl::class LuaInterpreter { public { method doFile fname { return [lua_dofile $L $fname] } method doString buf { return [lua_dostring $L $buf] } method call {func {arg ""}} {} method popLast {} { set value [lua_tostring $L -1] lua_remove $L -1 return $value } method printStack {} {} } constructor {} {} destructor { lua_close $L } common call_template "return %s(%s);" } itcl::body LuaInterpreter::constructor {} { set L [lua_open 1024] L doString "function _ERRORMESSAGE(msg) print(msg) end" } itcl::body LuaInterpreter::call {func {arg ""}} { set op [format $call_template $func $arg] doString $op } I found the interface of doString, call and popLast quite sufficient for my needs. Notice also, that you can have as many instances of Lua interpreter as you want. --[mfi]. ---- Lua is quite fast: http://www.bagley.org/~doug/shootout/ but doesn't seem to have all the nifty features that other languages do. On another hand, Lua '''does''' support full [co-routines]; Roberto is a sometimes-cited theoretician of [concurrency]. ---- [CL] sometimes collects Lua references [http://www.phaseit.net/claird/comp.lang.misc/lua.html]. ---- While Lua began with an emphasis on industrial automation and allied areas, it's now so significant in game development that ''Game Scripting Mastery'' [http://notyet] and ''Game Programming with [Python], Lua, and [Ruby]'' [http://notyet] provide substantial introductions to it. ---- An article about Lua's byte code engine: http://www.osnews.com/comment.php?news_id=9817 Apparently they moved from a stack based to a register based engine and saw big performance improvements. ---- [Category Language]