GNU ccScript3

From GNU Telephony


Introduction to GNU ccScript3

GNU ccScript is a C++ class framework for creating a virtual machine execution system for use with and as a scripting/assembler language for state-transition driven realtime systems. The most common example of this is as the core of the scripting engine found in GNU Bayonne.

GNU ccScript uses a class hierarchy and one extends the ScriptInterp base class to create a new dialect localized for a given applications. One then binds script keywords to method calls in the derived class. This aspect of GNU ccScript resembles in C++ the process of how one might localize tcl.

GNU ccScript is intended for use where step execution is important, and where each step is in response to a callback event or a state machine transition. It offers deterministic execution and low overhead so that many concurrent instances can be running together.

GNU ccScript can execute text files which form the basis of a script language. However, in addition to offering step machine execution, GNU ccScript loads all scripts into an active image at once. This is for performance, as all operations in the script system, to assure deterministic execution, are in memory.

GNU ccScript also offers the ability to load new scripts in-mass. Existing active sessions operate on the currently loaded scripts, and new sessions are offered the new script. When the last active session on an old script set completes, the entire script set is flushed from memory. This enables one to operate scripted servers like GNU Bayonne without downtime to rebuild script images in memory.

The current release of GNU ccScript, GNU ccScript3, is derived from and requires the use of [GNU Common CPP Framework|GNU Common C++]. It is not a stand-alone class library.

Current Status

I am looking to add more database plugin modules for GNU ccScript3. In particular I wish to add plugins for direct access to Postgres and mysql, and for sqlite, as well as the current unixODBC based plugin.

Downloading and Documentation

Current releases of GNU ccScript3 will be found on the GNU site or one of the GNU mirrors. It is also available from the Download Page.

GNU ccScript3 may be available from other sites in various "package" formats, including GNU/Linux "RPM" and "deb" packages, ".pkg" files under various Unix operating systems, etc. I do encourage people to distribute GNU ccScript3 in a package form where convenient for installation, so long as source is also made available.

Online Documentation is maintained as part of the larger class framework documentation for GNU Telephony.

Contributing to GNU ccScript3

As the current GNU ccScript maintainer, I am very open to bringing new ideas and code into GNU ccScript. In particular, I am looking for help with documentation. Anonymous cvs access is maintained for GNU ccScript thru savannah, and I would be happy to receive and evaluate patches for inclusion in future releases. A standard e-mail mailing list for GNU ccScript will be available shortly on Feel free to send any bug reports, patches, and questions to this list.