yasmine

yasmine is a C++ state machine framework developed by Seadex. The latest stable version is 1.1.0.

The very first beta version (0.1.0) was released on June 20, 2016. Originally only supporting C++11 support for C++03 was added with Beta 6 (0.6.0). Version 1.0.0, the first stable version, was released January 20, 2017.

yasmine is not just yet another state machine framework! It is an easy to use high level UML state machine abstraction that nicely integrates with modern object oriented C++ code.

We created her, because we often use state machines in the projects we work on. And using existing solutions was not quite satisfying. Some didn't feel like they integrated into modern C++ code nicely (coded in C, switch case based, ...), others required the overhead of big frameworks. Then in some cases pulling in closed source libraries is a problem, because risk assessment is tricky (medical applications). And then there are solutions that seem quite nice, but never matured, are not maintained or poorly maintained, or poorly documented.

yasmine adheres as closely as possible to the UML state machine semantics. Key features are hierarchical states, orthogonal regions, and the support of run-to-completion semantics. For detailed information read more about her features in the documentation. We are planning to create a whole ecosystem around the core library, that makes creating and maintaining state machine easier and more comfortable.

The library itself is free for commercial and non-commercial use (see License for details). Commercial support by Seadex is available.

You can also visit our forums at http://seadex.de/forums and post there if you have a suggestion, a question or want to give us any other kind of feedback. Also if you find yasmine useful, we would be glad if you would show your appreciation!

Credit goes to Jonathon Reach for his effort of reading the entire documentation and for supplying us with lots of suggestions. This helped to improve these pages a lot. Thanks!

Advantages of using yasmine

  • She provides a complete implementation of UML state machine semantics (which extend FSM (Finite State Machine) semantics significantly).

  • yasmine is a modern C++ implementation using C++11 (C++03 support is available, too).

  • Because it's C++ (and not C) the code integrates nicely into OO code.

  • She's well documented (If you think something is missing or unclear), please let us know.

  • Because she is open source you can check her implementation out. Also this guarantees long term usability and availability.

  • You can get support from Seadex. We appreciate your feedback and are open for feature requests and glad about bug reports.

  • The library enables you to create state machines at runtime.

  • yasmine will keep improving. The ecosystem around yasmine will grow, we will add even more tests, and also add to the documentation.

  • No additional dependencies are introduced in an C++11 environment. yasmine only uses the C++11 standard library - nothing else.
    If you need support for C++03, then Boost is required to bridge some of the gaps the lacking C++11 support causes.

What yasmine is not

She's not a minimum foot print library that prioritizes on running on every system no matter how few resources are available. yasmine is not resource hungry, but she cannot (and does not want to) compete with switch-case-based bare-metal no-abstraction libraries.

News

  • 06.03.2017 Version 1.1.0 of yasmine is ready for download. This version contains new features and a new example. You can see the entire changelog here.

  • 08.02.2017 Version 1.0.1 of yasmine is ready for download. This version contains a bug fix. The changelog can be seen here.

  • 20.01.2017 We are glad to announce the first stable release of yasmine - version 1.0.0. The new features of this version can be found in the changelog.

  • 12.12.2016 yasmine 0.6.1 (Beta 7) was released (download). The changelog can be found here.

  • 09.12.2016 yasmine 0.6.0 (Beta 6) is available for download. Compatibility with C++03 is most noticeable change of this release. Also support for events with parameters was improved. The entire changelog is located here. There are also new examples available.

  • 07.11.2016 Version 0.5.0 (Beta 5) is online. CMake support was added to ease building on Non-Windows platforms (e.g. Linux). You can see the entire changelog here.

  • 07.10.2016 The 5th release of yasmine - version 0.4.0 (Beta 4) is available for download. The changelog can be found here.

  • 19.09.2016 As for today yasmine is also available on GitHub.

  • 16.09.2016 A new version of yasmine is available for download: yasmine 0.3.0 (Beta 3). The changelog can be found here.

  • 19.08.2016 yasmine 0.2.0 (Beta 2) was released (download).

  • 04.08.2016 2nd license update. For details please refer to our License page.

  • 22.07.2016 New release of yamine is available (0.1.1 (Beta 1)) (download).

  • 20.07.2016 License update: We have changed our licenses. They are now even less restrictive! For details please read our License page.

  • 20.06.2016 First release of yamine 0.1.0 (Beta 0) (download)!