Original Post
Ive written an embedded extensible scripting language compiler and VM which I intend to open source (by 1st of Jan). It is designed with real time agent systems in mind, and so is ideal for game development. It is fast and memory efficient and out performs all the non commercial scripting languages benchmarked on http://shootout.alioth.debian.org/ (haven’t tried the commercial ones). I am looking for people to test it before release. If you are interested in testing or just want to take a look at it please respond to this thread. Here is a review of features: • Ability to script in any LALR parsable language given a grammer and rules file for the language. This implies the ability to design your own scripting language for use with the compiler and VM. Presently comes with C/C++ definitions. • Link time type checking and function call resolution. • Ability to run script in different languages on same VM and process. • Function visability privileges allowing for inter-script/inter-function restricted access. • Seamless extendibility and integration of VM into c++ engine allowing for; c++ engine functions and object member functions to be called from scripts, scripts and functions to be called from c++, c++ engine classes to be used in scripts, c++ engine member variables to be accessable in scripts, and c++ class data variables to be exchanged between the engine and scripts with ability to integrate with engine reference counting garbage collection. • Scriptable classes with single inheritance, public and protected interfaces, and virtual functions. • Integral single dimension array data type for all soft and hard data types. • Pointers to objects (no pointer arithmetic). • Function pointers. • User definable integral number data type optimised for speed. Define int, double or even a class as your integral data type so it performs faster than ordinary data types registered with the vm. • Variant data type. • Explicit casting between c++ engine types used in script. • Explicit data passing in function calls as well as pointer passing. • Type registering to allow consistent exchange of data between VMs and engines. • Uses VM processes to run script function call threads so can have multiple processes operating on the same code and data. • Optional time slicing of processes to manage time allocation spent on each process. • Ability to perform pre-emptive multi tasking. • Yeilding feature to halt a VM process update until a callback is received. • Optional instruction count overflow catching to stop infinite loops. • Thread safe VM so can distribute updating of VM processes on different threads and processors. • Relative addressing of all data so data can be moved or resized at runtime. • Uses true stack so garbage collection only required for heap newed data. • Reference counted garbage collection so no garbage collection phase. • Self regulating memory manager cache.