Repository navigation
v0.3.0
Release Highlights
pyfcstm v0.3.0 is a substantial upgrade over v0.2.1 and marks a clear expansion of the project from a DSL parser and code generation framework into a more complete finite state machine engineering toolkit. This release improves the FCSTM language itself, adds a practical simulation and analysis stack, significantly expands editor and visualization support, and rounds out the developer workflow with stronger documentation, testing, and tooling.
Compared with the previous released version, v0.3.0 makes pyfcstm much better suited for real-world FSM authoring and validation workflows. Authors can now write richer and more maintainable DSL definitions, model behavior with a more capable expression system, explore state machines through improved model APIs, visualize machines with more configurable PlantUML output, simulate runtime behavior directly from Python or the CLI, and even perform symbolic reasoning with the new Z3-based solver utilities. Editor support also takes a large step forward through syntax highlighting improvements and a full VSCode extension, making .fcstm authoring, review, and collaboration much smoother.
New Features
- Added
refsupport for lifecycle action reuse across states, making it easier to share and reuseenter/during/exitlogic without duplicating DSL code. - Added named state syntax, allowing state definitions to carry clearer display-oriented names while preserving structural modeling capabilities.
- Added explicit event statements with named display-name support, improving event declaration clarity and making diagrams and tooling outputs easier to read.
- Expanded the model layer with state machine traversal methods and additional model functions, making programmatic inspection and transformation workflows more practical.
- Added comprehensive FCSTM syntax highlighting support for Pygments and TextMate, improving documentation rendering and editor-side readability.
- Added improved language detection for highlighting workflows, helping
.fcstmcontent integrate more cleanly into docs and editor tooling. - Added substantially improved DSL error reporting with actionable suggestions and cascading error handling, making authoring mistakes easier to diagnose and fix.
- Added rich PlantUML rendering configuration options, giving users more control over lifecycle action visibility, event display, structure detail, legend behavior, formatting, and diagram presentation.
- Added project logos and integrated them into the build and project presentation workflow.
- Added a Python FSM simulation runtime, enabling FCSTM models to be executed directly for behavior validation before code generation.
- Added an interactive CLI simulator with a full REPL experience, making it easier to inspect state, trigger events, replay behavior, and test models from the command line.
- Added hot-start support to the simulation runtime, improving repeatability and enabling more flexible simulation workflows.
- Added expression parsing enhancements and operator overloading support, making the expression subsystem more powerful and natural to use in model logic.
- Added a Z3-based constraint solving module, enabling symbolic analysis and solver-backed workflows on top of pyfcstm expressions and operations.
- Added fixed-width integer utility types together with Z3 BitVec-verified tests, strengthening the foundation for precise numeric modeling and future symbolic workflows.
- Added VSCode extension install/uninstall Makefile targets to simplify local editor integration for contributors and users.
- Added a full VSCode extension with ANTLR-based language support, providing a significantly better editing experience for FCSTM development inside Visual Studio Code.
Other Improvements
- Refactored sample test generation and added coverage for
list_on_enters, improving confidence in model behavior. - Upgraded to
hbutils>=0.14.0, bringing the project onto an improved logging foundation. - Optimized PyInstaller-based CLI builds and added broader CLI test coverage.
- Expanded and reorganized project documentation across README, CONTRIBUTING, API docs, DSL tutorials, CLI guides, grammar development guides, and bilingual materials.
- Added Chinese translations and bilingual documentation guidance for major tutorial areas.
- Clarified lifecycle execution order and composite-state
duringtrigger conditions in the docs. - Corrected Sphinx “Edit on GitHub” links and fixed reStructuredText inline literal rendering issues in Chinese docs.
- Updated VSCode extension build dependencies, including the
esbuildbump from0.20.2to0.25.0.
What's Changed
- feat(dsl): add ref support for lifecycle action reuse across states by @HansBug in #13
- test(model): refactor sample test generator and add list_on_enters coverage by @HansBug in #14
- feat(dsl): add named state syntax and fix during-aspect PlantUML output by @HansBug in #16
- feat(dsl): add explicit event statement with named display name support by @HansBug in #17
- chore(deps): upgrade to hbutils>=0.14.0 for improved logging system by @HansBug in #22
- feat(model): add state machine traversal methods and expand model functions by @HansBug in #23
- docs: expand CONTRIBUTING.md and README.md with comprehensive guidelines by @HansBug in #26
- docs(claude): clarify composite state during before/after trigger conditions by @HansBug in #27
- docs(claude): enhance execution order clarification with detailed phase breakdown by @HansBug in #28
- docs(tutorials): add comprehensive DSL tutorial with event scoping and expressions by @HansBug in #29
- docs(i18n): add Chinese translation for DSL tutorial and bilingual documentation guidelines by @HansBug in #30
- feat(highlight): add comprehensive FCSTM syntax highlighting with Pygments and TextMate by @HansBug in #31
- docs: overhaul API docs with LLM-based generation and reST docstring standardization by @HansBug in #32
- docs(cli): enhance CLI documentation with comprehensive examples and Chinese translation by @HansBug in #33
- docs(grammar): add bilingual grammar development tutorial and GitHub Linguist config by @HansBug in #34
- feat(highlight): add VSCode extension and enhance Pygments language detection by @HansBug in #35
- chore(editors): move generated syntax file to gitignore by @HansBug in #36
- feat(dsl): enhance error reporting with actionable suggestions and cascading handling by @HansBug in #37
- build(cli): optimize PyInstaller build and add comprehensive CLI tests by @HansBug in #38
- docs(dsl): add explicit event definition documentation to DSL tutorial by @HansBug in #39
- feat(plantuml): enhance PlantUML rendering with rich configuration options by @HansBug in #40
- feat(vscode): implement full VSCode extension with ANTLR-based language support by @HansBug in #41
- fix(docs): correct Edit on GitHub links in Sphinx configuration by @HansBug in #44
- build(deps): bump esbuild from 0.20.2 to 0.25.0 in VSCode extension by @dependabot[bot] in #43
- feat(logos): add project logos and integrate into build system by @HansBug in #45
- feat(simulate): implement FSM simulation runtime module by @HansBug in #42
- feat(simulate): implement interactive CLI simulator with full REPL by @HansBug in #46
- feat(simulate): add hot start feature for simulation runtime by @HansBug in #47
- feat(model/expr): add expression parsing and operator overloading by @HansBug in #48
- feat(solver): add Z3-based constraint solving module by @HansBug in #49
- feat(makefile): add VSCode extension install/uninstall targets by @HansBug in #51
- feat(utils): add fixed-width integer types with Z3 BitVec-verified tests by @HansBug in #52
- docs: define FCSTM naming in top-level docs by @HansBug in #53
- docs: fix reST inline literal parsing in zh docs by @HansBug in #54
Full Changelog: v0.2.1...v0.3.0