Fork Statechart then rewrite using more recent C++ version (11, 14, 17).
Goal: Improve Compiler Error Msgs
- Using Clang
- Static Asserts? Based on most common error use cases. Which for state machine is probably “Who is your parent?” “Did you forget to specify your parent?” etc.
For use case of state not correctly listing it’s context. Static Assert? https://gracicot.github.io/tricks/2017/07/01/deleted-function-diagnostic.html
We attempted this around 12/2019, but unfortunately our changes were compiled after boost.statechart, which made our attempts futile. Anyways, we tried.
Goal: Add type checking support for SMACC Substate Objects
Also, we’ll add type checking support for Orthogonals, Clients, Client Behaviors and other SMACC Substate Objects.
- transition from an orthogonal that doesn’t exist
- transition from a client behavior that doesn’t exist
- transition from a client that doesn’t exist
- transition from a state reactor that doesn’t exist
- transition from a choice point that doesn’t exist
- cb from a client that doesn’t exist
We tried to do this (at runtime) around 12/2019 but we stopped after coming to the conclusion that the library is too immature for us to start shutting off portions of the library. So we decided to push but comment out the changes for now.
Goal: Add Performance Instrumentation
We’ll add intrumentation, via LTTng. Mainly related to low level performance.
Goal: Then make it fast
Cutting what we don’t need, custom memory allocation, etc..
Goal: Get TypeDefwalker working at compile time
This would allow us to get state diagrams at compile time, which would be huge.
Interesting Possibilities to Consider
While we’re replacing/upgrading BSC, we should look at some dream functionalities. Items to consider…
- Vectors of States
- Formulaic Transitions (beyond history)
- Passing of Parameters into States