123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- ===============
- Code generation
- ===============
- Tests currently passing (flag --rust):
- features/action_lang/test_closure.xml
- features/action_lang/test_cond.xml
- features/action_lang/test_expressions.xml
- features/action_lang/test_functions2.xml
- features/action_lang/test_guard_action.xml
- features/history/test_composite_shallow.xml
- features/history/test_default.xml
- features/history/test_shallow.xml
- features/after/test_after.xml
- features/parallel/test_parallel.xml
- day_atlee/test_01_dialer_takemany.xml
- day_atlee/test_01_dialer_takeone.xml
- day_atlee/test_02_counter_takeone.xml
- day_atlee/test_03_trafficlight_single.xml
- day_atlee/test_04_counter_single.xml
- day_atlee/test_06_counter_lifeline.xml
- day_atlee/test_21_counter_combo.xml
- semantics/priority/test_explicit_flat.xml
- semantics/priority/test_explicit_ortho.xml
- semantics/priority/test_source_child.xml
- semantics/priority/test_source_parent.xml
- semantics/event_lifeline/test_flat_nextss_takemany.xml
- semantics/event_lifeline/test_flat_nextss_takeone.xml
- semantics/event_lifeline/test_flat_remainder.xml
- semantics/event_lifeline/test_ortho_nextcs_takemany.xml
- semantics/event_lifeline/test_ortho_nextcs_takeone.xml
- semantics/event_lifeline/test_ortho_nextss.xml
- semantics/big_step_maximality/test_cross_region1.xml
- semantics/big_step_maximality/test_cross_region2.xml
- semantics/big_step_maximality/test_flat_syntactic.xml
- semantics/big_step_maximality/test_flat_takemany.xml
- semantics/big_step_maximality/test_flat_takeone.xml
- semantics/big_step_maximality/test_ortho_syntactic.xml
- semantics/big_step_maximality/test_ortho_takemany.xml
- semantics/big_step_maximality/test_ortho_takeone.xml
- xml_syntax/stateref/test_flat_absolute.xml
- xml_syntax/stateref/test_flat_relative.xml
- xml_syntax/stateref/test_nested_absolute.xml
- xml_syntax/stateref/test_nested_relative.xml
- Currently unimplemented:
- - event parameters
- - builtin functions: e.g. INSTATE (should be turned into a macro)
- - memory protocol semantics
- - 'queuing' internal event semantics
- - concurrency semantics
- Roadmap
- -------
- (DONE) Milestone 1: Initial compilation to Rust
-
- - (DONE) entering and exiting states correctly
- - (DONE) incoming event triggers the right transition
- - (DONE) a port of the Controller class to Rust
- - (DONE) one implemented action: raise output event
- - (DONE) fixed semantics (YAKINDU-like)
- - "Take One" big step maximality
- - parent-first
- - (DONE) goal: subset of SCCD tests passes:
- semantics/big_step_maximality/test_flat_takeone.xml
- semantics/big_step_maximality/test_ortho_takeone.xml
- semantics/priority/test_source_parent.xml
- semantics/priority/test_explicit_flat.xml
- semantics/priority/test_explicit_ortho.xml
- - no history
- - no action language
- - guards evals and action stmts are just logged to console
- - guards always true, actions no effect
- - no event parameters
- (DONE) Milestone 2: Minimal support for semantic variability:
- - (DONE) Priority: Child-first
- - (DONE) Big-Step Maximality: Take Many
- - (DONE) goal: following tests should pass:
- semantics/priority/test_source_child.xml
- semantics/big_step_maximality/test_flat_takemany.xml
- semantics/big_step_maximality/test_ortho_takemany.xml
- (DONE) Milestone 3: Support history
- (DONE) Milestone 4: Timers (should be easy)
- (DONE) Milestone 5: Internal Events
- (DONE) Milestone 6: Action language
- Insights
- --------
- - Rust compiler warnings are actually useful for the modeler:
- - e.g. An unexecutable transition is detected as an unreachable statement
- - e.g. An unused event is detected as an unused variable or never-constructed enum variant.
- Performance over time
- ---------------------
- for test semantics/big_step_maximality/test_ortho_takemany.xml
- commit ec39dd73ea42a9ccee6f1edc8863b36625e0721a - Dec 20, 2020 - put reusable stuff in library
- binary size, opt-level=3: 422192 bytes
- instruction count (perf stat) (opt-level=3): 571.641 instructions:u
- commit 354576dd47587fd8e6277539a26a4743b2167565 - Dec 17, 2020 - action lang working
- binary size, no opt: 513760 bytes
- binary size, opt-level=3: 421056 bytes
- binary size, opt-level=3 inline-threshold=1000: 421056 bytes
- binary size, opt-level=z: 429200 bytes
- instruction count (perf stat) (opt-level=3): 575.539 instructions:u
- commit aa6a734f7d900479de9be99a8cdf68af0d561481 - Dec 2, 2020 - implemented big-step maximality
- binary size, no opt: 478976 bytes
- binary size, opt-level=3 inline-threshold=1000: 410880 bytes
- binary size, opt-level=z: 413576 bytes
- instruction count (perf stat) (opt-level=3): 580.701 instructions:u
- Performance insights
- - instruction count improved a little over time (but could be due to non-relevant changes such as debug output)
- - binary size slightly worse when optimizing for size (opt-level=z). this means that inlining is actually reducing the binaries' size, as we would expect (lots of dead code can be eliminated)
|