Jon and I released the first release of ChaiScript earlier today. ChaiScript is designed to make it trivially easy to use scripting in your C++ application and to expose your C++ to the scripting system.

ChaiScript is a header only implementation. It requires no external libraries and is distributed under the BSD license, making it free and easy to distribute. So, how easy is easy, really? How does 3 lines of code sound for a classic hello world example?

#include <iostream>  
#include <chaiscript/chaiscript.hpp>    

int main(int argc, char *argv[])  {   
  chaiscript::ChaiScript_Engine chai;   
  chai.evaluate_string("print('Hello World');"); 
}

Of course, this example is quite limited in usefulness. But I want to keep this article short and not get into too much detail. So, I will provide on more example that shows how to expose a C++ function to ChaiScript.

#include <iostream>  
#include <chaiscript/chaiscript.hpp>  

std::string get_message() {   
  return "Hello World"; 
}    

int main(int argc, char *argv[])  {   
  chaiscript::ChaiScript_Engine chai;   
  dispatchkit::register_function(chai.get_eval_engine(), &get_message, "get_message");   
  chai.evaluate_string("print(get_message());"); 
}

ChaiScript never gets much more difficult than that. Stay tuned for more ideas, or check out the The Book of ChaiScript for more information.