diff --git a/DesignGoals.md b/DesignGoals.md new file mode 100644 index 0000000..c997155 --- /dev/null +++ b/DesignGoals.md @@ -0,0 +1,28 @@ +# Introduction + +This document outlines the principles that drive the development of ChaiScript. ChaiScript does not intent to be the perfect tool for *every* situation, but it does intend to be a good general purpose tool for *most* situations. + +# Goals + +1. Trivially easy to integrate with C++ projects +2. 0 external depenencies +3. "Perfect" integration with C++ + * Direct mapping between ChaiScript objects and C++ objects + * Direct mapping between ChaiScript functions and C++ functions + * Direct mapping between ChaiScript exceptions and C++ exceptions +3. Never surprise the C++ developer + * Object lifetimes managed by the stack + * Familiar syntax to C++ developers +4. Perform "well enough" to not get in the way + + +# Alternatives + +## Sol2 + +If you are looking for the fastest performing scripting language and don't mind Lua, you might want to consider [sol2](https://github.com/ThePhD/sol2). + +## SWIG + +If you are looking for the most flexible solution to be able to support multiple target languages, consider [SWIG](http://swig.org) +