Latest News

November 2025 | New version 7.0

SysML v2 is here — and it’s announced as major leap forward in systems modeling. I've taken a first deep dive into the new modelling language, exploring its strengths, potential, and some early tooling support. The latest version 7.0 supports the generation of CPPX code from a SysML v2 textual model. With the help of a small framework the generated parts and state-machine code can be easily be executed and tested.

July 2025 | SysML v2.0 - First Experiments

We explored the current status of SysML v2. Read more in this article.

February 2025 | New version 6.5.2

This new version is recommended to all users. Core modules were refactored for better maintainability and consistency and improved test coverage. Improved CPPX code generation to eliminate unnecessary dynamic memory allocations.

February 2025 | New version 6.5.1

Beside several improvements support for additional command-line parameters when using ’-l cppx’ was added. You can now optionally specify -std with additional information to enable all necessary parameters for the corresponding language features either for either version 11 or 14. This simplifies configuration for new users. For more details, see section “Generating CPP Code”.

September 2024 | New version 6.4

Since version 6.4 the handling of history states has been changed. It is now possible to end a transition in a history state. Only if a transition ends in a history state will the previous history be taken into account when entering the state set. Otherwise the default entry chain is used. The new parameter TransitionsCanEndInHistoryStates has been added to enable this feature. This new feature makes history state handling more powerful and the designer's intent clearer than before. An example of the new possibilities is shown in the following figure. State machine with the new history state option

August 2024 | New version 6.3.4

This release adds another way to influence the signature of the processEvent() method in C++.

June 2024 | New version 6.3.3

This version provides some small updates for the Python backend and fixes an issue with the C Sharp backend.

18. Feb. 2024 | New version 6.3.2.1

Bugfix in the C++ backend. Relevant for users who have state machines with regions and do not want event handler parameters. With previous version a msg parameter of the region code was generated. In the previous version, a msg parameter was incorrectly generated for the region handler code. This has now been corrected.

18. Feb. 2024 | New version 6.3.2

A state machine with regions can be in more than one state at a time. Previously the getInnermostActiveState() function only returned the topmost state the state machine was in. With this release, some backends can return more states to reflect the real situation.

Improvements in the JS backend. IsIn() and getInnermostActiveStates() works now with regions.

Improvements in the C++11 backend. IsIn() and getInnermostActiveStates() works now with regions (cpp-11 only).

In the case of C++11, the generated function has this signature:

auto oven::getInnermostActiveStates() const -> std::forward_list<oven::States>{ std::forward_list<oven::States> stateList; ... return stateList; }

22. Jan. 2024 | New version 6.3

JavaScript is now supported as new target language for the code generator

20. Nov. 2023 | New version 6.2

Go is now supported as new target language for the code generator

26. Sep. 2023 | New version 6.1

Changes:

Bugfixes and improvements in the built in state-diagram editor

Use of a project specific configuration file in the graphical editor

New C-backend related parameters to generate code following the opaque object pattern (https://en.wikipedia.org/wiki/Opaque_pointer) to hide the state machine implementation from other user code and thereof reduce dependencies.

Improvements in the section about the c-backend and reorganization of the examples folder in the download.

New features:

Experimental parsing for the DrawIO Editor added

Events marked external are now exported in a separate file to allow further external processing. This allows to generate one file containing all state machine events (only with events as defines possible). Designs with a global event bus where all machines always receive all events could benefit from this feature.

12. Aug. 2023 | New version 6.0.5

Experimental support for DrawIO added

29. July 2023 | New version 6.0.4

Small bug-fixes and several improvements in the built-in graphical state diagram editor.

5. July 2023 | New version 6.0.3

Only available as jar download. Small bug-fixes in the built-in graphical state diagram editor as well as small improvements in the C-backend. It is better taking care of C89 only compilers.

3. June 2023 | New version 6.0.2

Several minor improvements especially for the cbackend. With some new configuration parameters, the generated code now passes the clang-tidy checks for c++11 with ''modernise-'' checks enabled. A new example has been added to the examples folder to show how to set the parameters in a sensible way. === 1. March 2023 New version 6.0 === This major release fixes many small issues and adds support for generating code from Eclipse Papyrus™. There is a step by step introduction video available. === 27. Jan 2023 | New version 5.5.6.3515 === This version fixes a bug in handling config files. Recommended for all users. === 21. Jan 2023 | New version 5.5.6.3490 === This version adds many small improvements to the integrated state diagram editor. * Code editor window is not always on top * A larger font in the state diagram used by default. The size can be configured in the configuration file. * Improved layout (larger distance between states) to increase readably of transition texts * The configuration file is now searched locally and then in the users home directory. If the location was given as command line it has always priority. * Display of an error symbol in correct line of the output window in the case when the model check returns an error. * Some IDEs do treat files ending in cfg in a special way. Therefore the codegen configuration file can also be named codegen.cf optionally. * Many more … === Dec 2022 | New version 5.5.5.5 === This new version adds Rust as a language backend. === June 2022 | New version 5.5.5.1 === This new version fixed several issues related to misra 2012 rules. As a result also some recommended parameter settings are published here to get you started. Recommended for all C/C++ users.

May 2022 | New version 5.5.5

This new version improved region handling for own instance data types. Recommended update for all C backend users. Additionally it improves XMI parsing of attributes and methods for the various supported UML tools.

January 2022 | New version 5.5.4

This new version brings Ctemplate parameters to the event handler method. As well as the option to hand over a user defined parameter to the event handler method in C#. Both increases flexibility to hand over data together with the event to the state machine. === January 2022 New version 5.5.2 === This new version allows to add attributes and operations to EA/UModel class diagrams. They are added to the generated code. An example about the creation of signal forming function blocks shows the new possibilities in detail. For users of the built-in state machine editor and the C-backend a new dialog shows all the configuration parameters and how they influence the signature of the generated state machine handler. === October 2021 | New version 5.4.1 === New Windows/Mac installer (thanks to Java 17) makes life easier for users who are not at ease with the command line. C++ backend now supports the ValidationCall parameter.

August 2021 | New version 5.3

Several usability improvements, bug fixes and new functions esp. in the built-in editor. Recommended for all users. A detailed change log is available in the Codegen Manual.

Jan.2021 | New version 5.2

| The first diagram with an init state, a normal state, a final state and a choice. . Complete rewritten built-in editor. Generate state diagram within minutes. Editor has full support for regions.

15.02.2020 | New version 4.1

This new version provides a backend for Lua. It is the first state machine code generator from UML state diagrams/machines to Lua. Lua is a lightweight, embeddable scripting language. It follows the approach described by Roberto Ierusalimschy in his book. More information is available here.

17.6.2019 | New version 3.7.4

This is a bug-fix version and recommended for all users. For users of the Cadifra tool connection points were added to keep oversight in complex diagrams more easy. Connection points are a well known concept in circuit diagram drawing tools. More details can be found in the sinelabore manual (Cadifra part).

2.5.2019 | New example for PIC users

This tutorial explains the use of state machines with the PIC16F18446 Curiosity Nano board. Go on reading ...

29.12.2017 | Sparx new EA Version

Tests of new EA version 13 were successful. If you find any flaws using the codegen with the new version send a bug report please.

20.9.2017 | QuickStart tutorial on how to use the code generator with Energia on GitHub

Energia is based on the Arduino IDE and is a great IDE for processors form Texas Instruments. The new example on GitHub shows the integration of code generated from the sinelabore code generator into the Energia IDE. What does the demo do: The flash frequency of the green LED on the MSP430FR5969 LaunchPad can be controlled. A minimal timer and queueing lib is used as basis to be prepared for much more challenging tasks. You will see the benefit of state machine modeling over direct coding. Take a look at the state diagrams and the generated code here! Or download the example and try it out yourself.

9.4.2017 | New version 3.7.1 with some small improvements

Recommended for all C# users and those who use the built in editor/simulator.

6.11.2016 | Code Generator Features for High-Availability and Safety Systems

There is a new article in the “Designers Toolbox” explaining the special features for for High-Availability and Safety Systems offered from the C-backend.

16.10.2016 | Generate Python Code from State Diagrams

With version 3.7 is is now possible to generate Python code. The state machine code is generated as a Python class. All relevant state machine features are available. Look into the manual for details. The fully working microwave oven code is available in the examples folder. It contains a TKinter GUI wich makes simulation and testing of the generated state machine even simpler.