Muesli is a C library that provides a common API for several scripting languages, allowing scripted applications to leave the choice of scripting language until runtime. It currently handles Scheme, Lua, Python, JavaScript, Tcl, and Octave through their APIs, and has partial interfaces to Lisp and Haskell. You can call eval_in_language(language, script_fragment) from C, which is also packaged up as a native function in each of the supported languages so they can call each other. You can also get an "evaluator" structure by name, and use its eval_string function directly.