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.
<PackageVersion Include="StateSmith" Version="0.7.4-alpha" />
                    
Directory.Packages.props
<PackageReference Include="StateSmith" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version 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.
#addin nuget:?package=StateSmith&version=0.7.4-alpha&prerelease
                    
Install StateSmith as a Cake Addin
#tool nuget:?package=StateSmith&version=0.7.4-alpha&prerelease
                    
Install StateSmith as a Cake Tool

[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.5 62 4 days ago
0.17.4 179 8 days ago
0.17.3 127 2 months ago
0.17.2 108 3 months ago
0.17.1 5,306 6 months ago
0.17.0 103 7 months ago
0.16.0 107 7 months ago
0.15.1 136 7 months ago
0.15.0 130 7 months ago
0.14.0 142 8 months ago
0.13.2 123 8 months ago
0.13.1 113 8 months ago
0.13.0 124 8 months ago
0.12.2-alpha 97 8 months ago
0.12.1-alpha 89 8 months ago
0.12.0-alpha 126 8 months ago
0.11.2-alpha 134 10 months ago
0.9.14-alpha 127 5/25/2024
0.9.13-alpha 103 5/14/2024
0.9.12-alpha 132 4/29/2024
0.9.10-alpha 166 4/24/2024
0.9.9-alpha 30,674 8/10/2023
0.9.7-alpha 164 7/25/2023
0.9.6-alpha 215 6/14/2023
0.9.5-alpha 154 5/29/2023
0.9.4-alpha-fix-2 145 5/26/2023
0.9.4-alpha 139 5/19/2023
0.9.3-alpha 310 4/30/2023
0.9.2-alpha 498 4/21/2023
0.9.1-alpha 135 4/17/2023
0.9.0-alpha 153 4/16/2023
0.8.15-alpha 148 4/15/2023
0.8.14-alpha-grammar-2 138 4/12/2023
0.8.14-alpha-grammar-1 153 4/7/2023
0.8.14-alpha 155 4/7/2023
0.8.13-alpha 171 4/4/2023
0.8.12-alpha 170 3/29/2023
0.8.11-alpha 158 3/27/2023
0.8.10-alpha 154 3/23/2023
0.8.9-alpha 172 3/21/2023
0.8.8-alpha 169 3/19/2023
0.8.7-alpha 161 3/16/2023
0.8.6-alpha 145 3/13/2023
0.8.5-alpha 152 3/12/2023
0.8.4-alpha 158 3/12/2023
0.8.3-alpha 153 3/10/2023
0.8.2-alpha 159 3/9/2023
0.8.1-alpha 217 3/8/2023
0.8.0-alpha 158 3/7/2023
0.7.16-alpha 156 2/24/2023
0.7.15-alpha 153 2/22/2023
0.7.13-alpha 162 2/14/2023
0.7.12-alpha 196 2/11/2023
0.7.11-alpha 169 2/8/2023
0.7.10-alpha 163 2/8/2023
0.7.9-alpha 156 2/8/2023
0.7.8-alpha 152 2/7/2023
0.7.7-alpha 163 2/6/2023
0.7.6-alpha 172 2/2/2023
0.7.5-alpha 166 2/1/2023
0.7.4-alpha 176 1/21/2023
0.7.3-alpha 174 1/8/2023
0.7.2-alpha 175 1/4/2023
0.7.1-alpha 165 1/3/2023
0.7.0-alpha 183 12/31/2022
0.6.1-alpha 171 12/17/2022
0.6.0-alpha 235 12/15/2022
0.5.9-alpha 196 10/10/2022
0.5.7-alpha 194 9/28/2022
0.5.6-alpha 207 9/25/2022
0.5.5-alpha 194 9/18/2022
0.5.4-alpha 196 9/16/2022
0.5.3-alpha 178 9/9/2022
0.5.2-alpha 171 9/8/2022
0.5.0-alpha 210 9/6/2022