StateSmith 0.7.4-alpha

This is a prerelease version of StateSmith.
There is a newer version of this package available.
See the version list below for details.
dotnet add package StateSmith --version 0.7.4-alpha                
NuGet\Install-Package StateSmith -Version 0.7.4-alpha                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="StateSmith" Version="0.7.4-alpha" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add StateSmith --version 0.7.4-alpha                
#r "nuget: StateSmith, 0.7.4-alpha"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install StateSmith as a Cake Addin
#addin nuget:?package=StateSmith&version=0.7.4-alpha&prerelease

// Install StateSmith as a Cake Tool
#tool nuget:?package=StateSmith&version=0.7.4-alpha&prerelease                

[0.7.4-alpha]

Added


[0.7.3-alpha]

Added

  • draw.io - add support for draw.io plugin and new drawing style where a state can have its text event handlers as a child text node instead of its label #77.

[0.7.2-alpha]

Added

  • draw.io - embedded images inside of a draw.io diagram are now ignored. Issue #77.
    • images are sometimes embedded in state machine diagrams for documentation purposes.
  • draw.io - treat null labels as blank instead of throwing exception. Null labels don't normally occur. Issue #77.
  • improved $notes validations.

[0.7.1-alpha]

Added

  • Add initial support for draw.io files as alternative to yEd files. https://github.com/StateSmith/StateSmith/issues/77
    • Supported file extensions:
      • .drawio.svg Recommended as design file is a valid svg image that can be used in markdown and other files!
      • .drawio
      • .dio

[0.7.0-alpha]

Changed

  • Generated .h file now automatically includes <stdint.h> (required for history states).

Added

Fixed

  • Pseudo state transition de-duplication now considers initial state parent incoming transition count too.
  • Improved exit handling optimization.

[0.6.1-alpha]

Added

  • Improve generated code clarity by showing step 1,2,3... and other small things.
  • Improve generated code clarity by removing if (true) for behaviors with no guard clause.
  • Improve generated code by nulling ancestor_event_handler only when actually needed. https://github.com/StateSmith/StateSmith/issues/14
  • Throw helpful exception message when duplicate state name used. Previously relied on c compiler and user to catch the problem.
VertexValidationException: Duplicate state name `OPTION` also used by state `Statemachine{LaserTagMenu1Sm}.State{MENUS_GROUP}.State{MAIN_MENU}.State{OPTION}`.
    Vertex
    Path: Statemachine{LaserTagMenu1Sm}.State{MENUS_GROUP}.State{MM_SHOW_INFO}.State{OPTION}
    Diagram Id: n0::n3::n2::n2
    Children count: 0
    Behaviors count: 3
    Incoming transitions count: 2

[0.6.0-alpha]

Fixed

Changed

Added

  • Support $choice pseudo states/points https://github.com/StateSmith/StateSmith/issues/40
    • supported in PlantUML as well.
  • Support multiple transitions for initial states, entry points, exit points. https://github.com/StateSmith/StateSmith/issues/40
    • Allow multiple transitions from initial state.
    • Initial state must have a default transition (always true).
    • Allow incoming transitions to initial state.
    • Allow multiple transitions from entry point.
    • Entry point must have a default transition (always true).
    • Allow incoming transitions to entry point.
    • Allow multiple transitions from exit point.
    • Exit point must have a default transition (always true).
  • Allow specifying else on transitions https://github.com/StateSmith/StateSmith/issues/59
  • Optimize pseudo state transitions to avoid code duplication.
    • Especially important for when History states are eventually implemented as the code de-duplication savings can rack up big there.
  • Improve entry and exit point validations.
    • Detect duplicate labels in the same scope.
    • Allow exit points to target parent state. Same as a self transition on parent.
  • grammar - support backtick strings and other ASCII symbols https://github.com/StateSmith/StateSmith/issues/42

[0.5.9-alpha]

Added

  • Runner - set process exit code to -1 on failure.
  • Runner - output additional exception details to <diagram_file_path>.err.txt. This is useful for generic assert like exceptions that don't yet have useful error messages. https://github.com/StateSmith/StateSmith/issues/38
  • validation - new exception: State machines must have exactly 1 initial state. Actual count: 0.
  • validation - helpful error messages for when state machine design is not found.
  • Add Describe() methods for Behavior and Vertex.
  • Add TracingModder class and experimental Runner.postParentAliasValidation() callback that allows graph modification.

Fixed


[0.5.7-alpha]

Added

Fixed


[0.5.6-alpha]

Added


[0.5.5-alpha]

Fixed

  • Fix generated comment regarding marking event as handled when not for a transition

[0.5.4-alpha]

Added


[0.5.3-alpha]

Fixed

  • Fix generated comment about exiting to LCA name
  • Fix FinishCodeBlock() when BracesOnNewLines = false;
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on StateSmith:

Repository Stars
StateSmith/StateSmith
A state machine code generation tool suitable for bare metal, embedded and more.
Version Downloads Last updated
0.17.3 97 2/22/2025
0.17.2 98 1/8/2025
0.17.1 5,003 10/16/2024
0.17.0 95 10/4/2024
0.16.0 100 9/22/2024
0.15.1 130 9/12/2024
0.15.0 123 9/9/2024
0.14.0 135 9/7/2024
0.13.2 117 9/4/2024
0.13.1 107 9/4/2024
0.13.0 118 8/30/2024
0.12.2-alpha 93 8/29/2024
0.12.1-alpha 87 8/29/2024
0.12.0-alpha 124 8/19/2024
0.11.2-alpha 129 7/6/2024
0.9.14-alpha 125 5/25/2024
0.9.13-alpha 102 5/14/2024
0.9.12-alpha 131 4/29/2024
0.9.10-alpha 164 4/24/2024
0.9.9-alpha 30,564 8/10/2023
0.9.7-alpha 163 7/25/2023
0.9.6-alpha 211 6/14/2023
0.9.5-alpha 152 5/29/2023
0.9.4-alpha-fix-2 143 5/26/2023
0.9.4-alpha 137 5/19/2023
0.9.3-alpha 307 4/30/2023
0.9.2-alpha 492 4/21/2023
0.9.1-alpha 133 4/17/2023
0.9.0-alpha 151 4/16/2023
0.8.15-alpha 146 4/15/2023
0.8.14-alpha-grammar-2 136 4/12/2023
0.8.14-alpha-grammar-1 151 4/7/2023
0.8.14-alpha 153 4/7/2023
0.8.13-alpha 169 4/4/2023
0.8.12-alpha 168 3/29/2023
0.8.11-alpha 156 3/27/2023
0.8.10-alpha 152 3/23/2023
0.8.9-alpha 170 3/21/2023
0.8.8-alpha 167 3/19/2023
0.8.7-alpha 159 3/16/2023
0.8.6-alpha 143 3/13/2023
0.8.5-alpha 150 3/12/2023
0.8.4-alpha 156 3/12/2023
0.8.3-alpha 151 3/10/2023
0.8.2-alpha 157 3/9/2023
0.8.1-alpha 215 3/8/2023
0.8.0-alpha 156 3/7/2023
0.7.16-alpha 154 2/24/2023
0.7.15-alpha 151 2/22/2023
0.7.13-alpha 160 2/14/2023
0.7.12-alpha 194 2/11/2023
0.7.11-alpha 166 2/8/2023
0.7.10-alpha 160 2/8/2023
0.7.9-alpha 153 2/8/2023
0.7.8-alpha 149 2/7/2023
0.7.7-alpha 160 2/6/2023
0.7.6-alpha 169 2/2/2023
0.7.5-alpha 163 2/1/2023
0.7.4-alpha 173 1/21/2023
0.7.3-alpha 170 1/8/2023
0.7.2-alpha 171 1/4/2023
0.7.1-alpha 161 1/3/2023
0.7.0-alpha 179 12/31/2022
0.6.1-alpha 167 12/17/2022
0.6.0-alpha 223 12/15/2022
0.5.9-alpha 191 10/10/2022
0.5.7-alpha 188 9/28/2022
0.5.6-alpha 201 9/25/2022
0.5.5-alpha 188 9/18/2022
0.5.4-alpha 190 9/16/2022
0.5.3-alpha 172 9/9/2022
0.5.2-alpha 165 9/8/2022
0.5.0-alpha 198 9/6/2022