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. 
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.1 2,402 10/16/2024
0.17.0 84 10/4/2024
0.16.0 88 9/22/2024
0.15.1 120 9/12/2024
0.15.0 111 9/9/2024
0.14.0 121 9/7/2024
0.13.2 107 9/4/2024
0.13.1 95 9/4/2024
0.13.0 106 8/30/2024
0.12.2-alpha 89 8/29/2024
0.12.1-alpha 81 8/29/2024
0.12.0-alpha 119 8/19/2024
0.11.2-alpha 122 7/6/2024
0.9.14-alpha 121 5/25/2024
0.9.13-alpha 98 5/14/2024
0.9.12-alpha 124 4/29/2024
0.9.10-alpha 149 4/24/2024
0.9.9-alpha 29,957 8/10/2023
0.9.7-alpha 157 7/25/2023
0.9.6-alpha 202 6/14/2023
0.9.5-alpha 145 5/29/2023
0.9.4-alpha-fix-2 136 5/26/2023
0.9.4-alpha 130 5/19/2023
0.9.3-alpha 285 4/30/2023
0.9.2-alpha 482 4/21/2023
0.9.1-alpha 125 4/17/2023
0.9.0-alpha 143 4/16/2023
0.8.15-alpha 138 4/15/2023
0.8.14-alpha-grammar-2 128 4/12/2023
0.8.14-alpha-grammar-1 143 4/7/2023
0.8.14-alpha 145 4/7/2023
0.8.13-alpha 161 4/4/2023
0.8.12-alpha 159 3/29/2023
0.8.11-alpha 147 3/27/2023
0.8.10-alpha 143 3/23/2023
0.8.9-alpha 162 3/21/2023
0.8.8-alpha 159 3/19/2023
0.8.7-alpha 151 3/16/2023
0.8.6-alpha 135 3/13/2023
0.8.5-alpha 142 3/12/2023
0.8.4-alpha 148 3/12/2023
0.8.3-alpha 143 3/10/2023
0.8.2-alpha 149 3/9/2023
0.8.1-alpha 207 3/8/2023
0.8.0-alpha 148 3/7/2023
0.7.16-alpha 145 2/24/2023
0.7.15-alpha 142 2/22/2023
0.7.13-alpha 151 2/14/2023
0.7.12-alpha 185 2/11/2023
0.7.11-alpha 157 2/8/2023
0.7.10-alpha 151 2/8/2023
0.7.9-alpha 144 2/8/2023
0.7.8-alpha 140 2/7/2023
0.7.7-alpha 151 2/6/2023
0.7.6-alpha 160 2/2/2023
0.7.5-alpha 154 2/1/2023
0.7.4-alpha 164 1/21/2023
0.7.3-alpha 161 1/8/2023
0.7.2-alpha 162 1/4/2023
0.7.1-alpha 152 1/3/2023
0.7.0-alpha 169 12/31/2022
0.6.1-alpha 158 12/17/2022
0.6.0-alpha 204 12/15/2022
0.5.9-alpha 182 10/10/2022
0.5.7-alpha 179 9/28/2022
0.5.6-alpha 191 9/25/2022
0.5.5-alpha 179 9/18/2022
0.5.4-alpha 181 9/16/2022
0.5.3-alpha 163 9/9/2022
0.5.2-alpha 156 9/8/2022
0.5.0-alpha 184 9/6/2022