
Andrey Semashev wrote:
Jurko Gospodnetić wrote:
What are the intended and actual differences from the already accepted Statechart library?
The main differences are simplicity and performance. The performance tests show difference by an order of magnitude, in the best case for Boost.Statechart. The overall design of Boost.FSM is geared more to compile-time code generation, while Boost.Statechart aims to support more scaled machines and therefore is geared towards run-time. There is a section in the docs that compares the libraries.
I can attest to the necessity of this. We have several exchange libraries that require state machines to implement their data protocols but we use a home-brewed boost::mpl::inherit_linearly implementation because the features of Boost.StateChart simply brings in to many performance penalties for our simpler usage that would fit within the Boost.FSM framework. In fact, if I remember correctly, we used a thing on Boost.Vault called "FSM" as an implementation guide.