GNU ccScript


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 application. 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.

This library 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 is derived from and requires the use of GNU uCommon C++. It is not a standalone class library.


[2017] – The latest release is ccScript 5.1.0.

[2014] – I am looking to add more database plugin modules for GNU ccScript. 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.


Current releases of GNU ccScript are found on the GNU FTP site or one of its mirrors. Please use a nearby mirror if you can.

GNU ccScript may be available from other sites in various package formats, including GNU/Linux RPM and Debian 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.


Class documentation can be generated from sources by Doxygen. It is also available online for

Several versions of the Scripting Guide are available online:


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. The source code repositories can be accessed anonymously through the GNU ccScript project on Savannah; I would be happy to receive and evaluate patches for inclusion in future releases.

The ccScript mailing list is <>. It has a web interface for subscribing, modifying subscription options and searching the list archives. Feel free to send any bug reports, patches, and questions to this list.

This page was retrieved from the Wayback Machine archive of the GNU Telephony website (licensed under the Free Documentation License 1.3), and slightly edited.