blob: 94e8d3b519f4bd73980391bd0f0c28dcd3bf7a35 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
# Comparison of SCXML Interpreters
In this document, I will make an attempt to compare and measure the performance
of the various, freely available SCXML interpreters. If you are the author of
one of these interpreters and feel that I misrepresented your work, please do
not hesitate to contact me and I will reevaluate / correct any factual errors.
This selection is based on the list of available implementations on the [SCXML
wiki](https://en.wikipedia.org/wiki/SCXML) page, plus a few interpreters I know
from the [W3C mailing list](https://lists.w3.org/Archives/Public/www-voice/)
and the [SCXML workshops](http://scxmlworkshop.de). I will list all
interpreters known to me, but only benchmark those that pass the W3C IRP tests
as is required for an actual SCXML interpreter.
# Methodology
The benchmarks were performed with a [huge
SCXML](https://github.com/tklab-tud/uscxml/tree/master/test/w3c/compound) file
containing all of the automatic W3C IRP tests that do not rely on timeouts to
pass.
## scxmlcc
| Platforms | Tested on | Tested | Website |
|---------------|---------------------|------------------|---------------|
| Linux only | Debian Jessie 64Bit | **No**: Subset of SCXML implemented is insufficient for SCXML IRP tests. | [http://scxmlcc.org](http://scxmlcc.org) |
### How to build
$ sudo apt-get install build-essential libboost-all-dev autorevision
$ git clone https://github.com/jp-embedded/scxmlcc.git
$ cd scxmlcc/src
$ make
### Evaluation
$ ./scxmlcc -i ./test-ecma-all.scxml |sort |uniq
warning: event asteriks not currently supported
warning: event tokens not currently supported
warning: parallel support is not fully implemented/tested
warning: unknown action type 'script'
warning: unknown item 'assign' in <onentry> or <onexit>
warning: unknown item 'assign' in <transition>
warning: unknown item 'cancel' in <transition>
warning: unknown item 'datamodel' in <state>
warning: unknown item 'donedata' in <state>
warning: unknown item 'foreach' in <onentry> or <onexit>
warning: unknown item 'if' in <onentry> or <onexit>
warning: unknown item 'invoke' in <state>
warning: unknown item 'send' in <onentry> or <onexit>
warning: unknown item 'send' in <transition>
The subset of SCXML implemented in <tt>scxmlcc</tt> is insufficient to run the
performance / compliance benchmarks.
## SCXML Lab
| Platforms | Tested on | Tested | Website |
|---------------|---------------------|-----------|---------------|
| HTML5 | Safari 9.0.3 | **No**: Subset of SCXML implemented is insufficient for SCXML IRP tests. | [http://www.ling.gu.se/~lager/Labs/SCXML-Lab/](http://www.ling.gu.se/~lager/Labs/SCXML-Lab/) |
I pasted the file above into their web-frontend and got a <tt>validation-error</tt>
Unexpected attribute 'datamodel' in <scxml>. Hint:
Valid attributes are: 'id', 'initialstate', 'version', 'xmlns'.
The <tt>datamodel</tt> is indeed not required for a compliant interpreter, but
we will not be able to pass any meaningful subset of the SCXML IRP tests
without support for a datamodel.
## Legian
| Platforms | Tested on | Tested | Website |
|---------------|---------------------|-----------|---------------|
| Java | Java(TM) SE (build 1.8.0_45-b14) | **No**: Subset of SCXML implemented is insufficient for SCXML IRP tests. | [https://github.com/pelatimtt/Legian](https://github.com/pelatimtt/Legian/) |
Does not claim W3C compliance and will, therefore, not pass the compound IRP tests.
## Qt SCXML Engine
| Platforms | Tested on | Tested | Website |
|---------------|---------------------|-----------|---------------|
| Any | Mac OSX 10.11.3 with Macports 2.3.4 | **No**: Subset of SCXML implemented is insufficient for SCXML IRP tests. | [https://qt.gitorious.org/qt-labs/scxml](https://qt.gitorious.org/qt-labs/scxml/) |
[No
support](https://qt.gitorious.org/qt-labs/scxml?p=qt-labs:scxml.git;a=blob_plain;f=doc/scxml.qdoc;hb=HEAD)
for <tt><donedata></tt>, <tt><finalize></tt>. Furthermore the
<tt>profile</tt> (now <tt>datamodel</tt> with finalized SCXML recommendation)
attribute is ignored.
|