# uSCXML ReadMe uSCXML is a SCXML interpreter written in C/C++. It is mostly feature-complete and [standards compliant](https://github.com/tklab-tud/uscxml#test-reports) to a large extend. It runs on Linux, Windows and MacOSX, each 32- as well as 64Bits. There are still a few rough edges, especially with the plugins and custom extensions. The latest release will also compile for iOS using the toolchain files in contrib/cmake/ but does not feature the ecmascript nor the prolog datamodel. I will work on the Android version as soon as I have some time at my hands. * Datamodels * Full [ECMAScript datamodel](https://github.com/tklab-tud/uscxml/tree/master/src/uscxml/plugins/datamodel/ecmascript) using Google's v8 and JavaScriptCore (JSC is incomplete) * Full [NULL datamodel](https://github.com/tklab-tud/uscxml/tree/master/src/uscxml/plugins/datamodel/null) with required In predicate * Early [Prolog datamodel](https://github.com/tklab-tud/uscxml/tree/master/src/uscxml/plugins/datamodel/prolog/swi) using SWI prolog * Rudimentary support for [XPath datamodel](https://github.com/tklab-tud/uscxml/tree/master/src/uscxml/plugins/datamodel/xpath) * Invokers * scxml: Invoke a nested scxml interpreter * dirmon: Watches a directory for changes to files * scenegraph: Simplified 3D scenegraphs with custom markup * heartbeat: Periodically sends events * umundo: Subscribe to channels and publish events * DOM * DOM Core Level 2 + XPath extensions available for ecmascript datamodel * Namespace aware to embed custom markup for special invokers * Communication * Features the standard basichttp io-processor * Features the required SCXML io-processor * No DOM io-processor * Can actually respond to HTTP requests with data via <response> * Language Bindings * PHP module for apache and cli interpreter ## Test Reports * We continuously run the [W3C IRP tests](http://www.w3.org/Voice/2013/scxml-irp/) for SCXML. * Have a look at the [result](http://uscxml.tk.informatik.tu-darmstadt.de/cdash/index.php?project=uscxml) for the various platforms. * The manual tests are [excluded](https://github.com/tklab-tud/uscxml/blob/master/contrib/ctest/CTestCustom.ctest.in). uSCXML still fails the following ecmascript tests:
Test#StatusDescriptionComment
301 Failed "the processor should reject this document because it can't download the script" uSCXML continues processing as if there was no <script> element.
329 Failed "test that none of the system variables can be modified" uSCXML allows writing to _event. This is very useful to have a scope that vanishes when processing an event is finished. I raised the issue on the ML and it might make it into a later draft
346 Failed "test that any attempt to change the value of a system variable causes error.execution to be raised" Same issue as above: we allow writing to _event.
## License uSCXML itself is distributed under the Simplified BSD license as in, do not sue us and do not misrepresent authorship. Please have a look at the licenses of the [libraries we depend upon](https://github.com/tklab-tud/uscxml/blob/master/docs/BUILDING.md#build-dependencies) as well. ## Download We do not yet feature installers. Please download the source and have a look at the [build instructions](https://github.com/tklab-tud/uscxml/blob/master/docs/BUILDING.md).