diff options
author | Stefan Radomski <sradomski@mintwerk.de> | 2016-02-11 09:40:02 (GMT) |
---|---|---|
committer | Stefan Radomski <sradomski@mintwerk.de> | 2016-02-11 09:40:02 (GMT) |
commit | 7b428e5435f83a7e7db37094a9197afa2dd09bf5 (patch) | |
tree | 8e23dcc47322ddd79ada2bdbb5f0315266b1e1b4 /README.md | |
parent | 179fe8cd5cf53893ad1783ff0ff41cf94e24a59b (diff) | |
download | uscxml-7b428e5435f83a7e7db37094a9197afa2dd09bf5.zip uscxml-7b428e5435f83a7e7db37094a9197afa2dd09bf5.tar.gz uscxml-7b428e5435f83a7e7db37094a9197afa2dd09bf5.tar.bz2 |
Some tidying up of ANSI-C transformation
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 21 |
1 files changed, 12 insertions, 9 deletions
@@ -55,7 +55,7 @@ frontend. It implements the following features: * C# bindings * PHP module for apache and cli interpreter (discontinued) * <b>Interactive Debugger</b> - * Accessible via a [web-frontend](http://htmlpreview.github.io/?https://github.com/tklab-tud/uscxml/blob/master/apps/uscxml-debugger.html) + * Accessible via a [web-frontend](http://htmlpreview.github.io/?apps/uscxml-debugger.html) * Complete with user-defined breakpoints, data model inspection and stepping ### Transformer @@ -65,21 +65,24 @@ made available via the <tt>uscxml-transform</tt> binary. It is a general tool for SCXML documents and currently implements the following features: * Transformations onto - * [Flattened SCXML documents](https://github.com/tklab-tud/uscxml/blob/master/src/uscxml/transform/ChartToFlatSCXML.cpp) in which only a single state is ever active + * [Flattened SCXML documents](src/uscxml/transform/ChartToFlatSCXML.cpp) in which only a single state is ever active * Resulting documents require slight adaptations to a compliant interpreter for donedata, the <tt>In</tt> predicate and invokers. * Semantic equivalence is shown via IRP tests. - * [ANSI C native code](https://github.com/tklab-tud/uscxml/blob/master/src/uscxml/transform/ChartToC.cpp) for easy embedding of SCXML state-charts in C and C++ programs + * [ANSI C native code](src/uscxml/transform/ChartToC.cpp) for easy embedding of SCXML state-charts in C and C++ programs * No custom I/O processors implemented in scaffolding just yet. - * [PROMELA programs](https://github.com/tklab-tud/uscxml/blob/master/src/uscxml/transform/ChartToPromela.cpp) for model-checking via linear temporal logic with the SPIN model-checker. + * To get started with transforming and embedding ANSI C code, read the [inline SCXML document](docs/NATIVE_CODE.md). + * [PROMELA programs](src/uscxml/transform/ChartToPromela.cpp) for model-checking via linear temporal logic with the SPIN model-checker. * Only defined for the <tt>promela</tt> and <tt>null</tt> datamodel. - * [Minimized SCXML documents](https://github.com/tklab-tud/uscxml/blob/master/src/uscxml/transform/ChartToMinimalSCXML.cpp) with dead states and executable content removed + * [Minimized SCXML documents](src/uscxml/transform/ChartToMinimalSCXML.cpp) with dead states and executable content removed * Minimization is performed dynamically by marking elements as visited and removing unvisited elements. * Annotations of the transitions exit set entry set, priority, conflicts, domain +Currently, we support a transformation from SCXML onto ANSI C. + ### Test Reports * We continuously run the [W3C IRP tests](http://www.w3.org/Voice/2013/scxml-irp/) for SCXML. -* Some tests are [excluded](https://github.com/tklab-tud/uscxml/blob/master/test/ctest/CTestCustom.ctest.in). +* Some tests are [excluded](test/ctest/CTestCustom.ctest.in). To run the tests yourself, you need to generate the build environment and pass <tt>-DBUILD_TESTS=ON</tt> via CMake: @@ -100,14 +103,14 @@ so maybe restrict yourself to some subset. 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. +upon](docs/BUILDING.md#build-dependencies) as well. ## Performance We did some performance measurements in the scope of the C transformation. As you can see in the figure below, for most IRP tests we average to a duration of 5-20us per microstep on an early 2015 MacBook Pro 13" with 3.1GHz in the case -of [generated/compiled C](https://github.com/tklab-tud/uscxml/blob/master/test/src/test-c-machine.machine.c). For interpretation at runtime, we average at around 70-130us per +of [generated/compiled C](test/src/test-c-machine.machine.c). For interpretation at runtime, we average at around 70-130us per microstep. The generated C is rather optimized while the focus of the interpreter is more on correctness, feature completeness and extensibility. However, there are some lessons learned that are yet to be applied for the @@ -116,7 +119,7 @@ interpreter. <img src="https://raw.github.com/tklab-tud/uscxml/master/docs/Performance_Microstep.png" width="500px" /> For the tests, we took the -[highest precision timer](https://github.com/tklab-tud/uscxml/blob/master/src/uscxml/concurrency/Timer.cpp) +[highest precision timer](src/uscxml/concurrency/Timer.cpp) we could attain and measured how long the execution of a given SCXML IRP test took while subtracting initialization, tear-down and the time spent in the data-model's routines. Time is averaged over 1.000 iterations. |