Copyright (c) 1995-1999 by David Sugar, Tycho Softworks.
Copyright (c) 1999-2005 by Open Source Telecom Corporation.
Copyright (c) 2005-2008 by David Sugar, Tycho Softworks.

Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.

This directory contains the "4th" major release of the GNU ccScript engine.
GNU ccScript is a highly specialized embedded scripting engine and virtual
execution environment for creating script "extensible" applications.  This
system is a C++ class library which allows one to derive application specific
dialects of the core language as needed through subclassing.

Where ccScript differs from similar packages is both in determinstic
runtime, and it's use of step execution for integrating with realtime
state-transition and callback event driven systems.  That is, rather 
than invoke a function which then parses an interpreter, one executes a 
single "step" statement. This is useful when a callback service thread 
is monitoring multiple devices; each device can have a ccscript 
interpreter instance, and a single thread can dispatch events upon 
demand.

GNU ccScript is used in GNU Bayonne (the telephony application server of
the GNU project) and will likely get used in other GNUCOMM servers.  GNU
ccScript 4th release is derived from and requires GNU uCommon.

GNU ccScript is also meant to script systems without downtime.  This has
one curious effect; when ccscript is started, a core script is converted
into a reference counted object.  When an interpreter instance is connected
to process script requests, it attaches a reference.  If an active script 
is modified and reloaded, a new "image" is created, and new requests are 
then given this new image.  When the last reference against an old 
script image is terminated, the image is also purged.  This allows one 
to compile and rebuild scripts on the fly and load them into memory even 
while active interpreter instances are running.

GNU ccScript is not meant to solve the problems of traditional scripting
engines (tcl, guile, etc).  However, if you need several thousand 
instances of an interpreter running concurrently, if you are builing 
state-event systems, or if you need near real-time response through a 
script system, then GNU ccScript may be the answer for you.

