Escript:About
From Escript
E is a scripting language designed to be embedded in C++ application to provide both extensible and data driven application development. After trying to use Lua, Squirrel and the binding libraries they came with, and having many problems with things like having to cart around Boost with LuaBind (yuck - no offence Boost but its just way too big to be portable), I decided to bite the bullet and develop a language and API(and learn everything about making one) designed specifically to be easily embedded in C++ applications.
It's a lot like C++ with some differences that make it a lot safer than Lua and C++. For example, due to the strict type system functions do not need to have checks for different types and don't have to 'assume' that they're being sent the right type of variable (as in Lua). Alternatively, the reference system in E only performs operations on valid references, depending on execution settings. This means any null reference activity will simply be ignored if the application uses this option.
While it does provide a referencing system, they are not as 'automatic' as languages such as Lua, Squirrel and Angelscript. Their is no automatic garbage collection system. One of the major goals I want out of this is a FAST scripting language, C++ vs Java style fast. E provides new and delete operators as well as the ability to disable 'new' and 'delete' for different types. One example of its use could be in host deallocated classes such as 'entities' or other game classes which may be able to be created by a script but not deleted by the script, for activities such as 'getting' an entity from the system.
Another major difference to Lua is that bytecode does not need to do rigorous type checks on every operation since the type activities are created at compile-time, not on the fly.
Oh and it also supports full integer operations (including bitwise operations).