From a555a8b4ff24dc98b3e24664fbedb3088cbd8108 Mon Sep 17 00:00:00 2001 From: JohnnyT Date: Fri, 12 Sep 2025 04:59:30 -0600 Subject: [PATCH 1/2] Releases v1.0.2 --- CHANGELOG.md | 6 +- README.md | 524 +-------------------------------------------------- mix.exs | 38 +--- 3 files changed, 10 insertions(+), 558 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 050ee84..bb721c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] - -### ⚠️ DEPRECATED +## ⚠️ DEPRECATED **This `sc` package has been renamed to `statifier`** @@ -18,6 +16,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **Deprecation Warnings**: All public functions now emit deprecation warnings - **No New Features**: All future development continues in the `statifier` package +--- + ### Added #### Phase 1 Enhanced Expression Evaluation diff --git a/README.md b/README.md index 9fee1fc..595bb34 100644 --- a/README.md +++ b/README.md @@ -1,532 +1,14 @@ -# ⚠️ DEPRECATED: SC - StateCharts for Elixir +# ⚠️ DEPRECATED: SC > **This project has been renamed to [Statifier](https://github.com/riddler/statifier)** > All active development continues at **** -> Please migrate to `{:statifier, "~> 1.1"}` for ongoing updates and support. - -[![CI](https://github.com/riddler/sc/workflows/CI/badge.svg?branch=main)](https://github.com/riddler/sc/actions) -[![Coverage](https://codecov.io/gh/riddler/sc/branch/main/graph/badge.svg)](https://codecov.io/gh/riddler/sc) +> Please migrate to `{:statifier, "~> 1.9"}` for ongoing updates and support. --- **⚠️ MIGRATION NOTICE**: This SC project has been renamed to **[Statifier](https://github.com/riddler/statifier)** for better discoverability and communication. All modules have been renamed from `SC.*` to `Statifier.*`. **New Repository**: -**New Hex Package**: `{:statifier, "~> 1.1"}` +**New Hex Package**: `{:statifier, "~> 1.9"}` --- - -An Elixir implementation of SCXML (State Chart XML) state charts with a focus on W3C compliance. - -## Features - -- ✅ **Complete SCXML Parser** - Converts XML documents to structured data with precise location tracking -- ✅ **State Chart Interpreter** - Runtime engine for executing SCXML state charts -- ✅ **Modular Validation** - Document validation with focused sub-validators for maintainability -- ✅ **Compound States** - Support for hierarchical states with automatic initial child entry -- ✅ **Initial State Elements** - Full support for `` elements with transitions (W3C compliant) -- ✅ **Parallel States** - Support for concurrent state regions with simultaneous execution -- ✅ **Eventless Transitions** - Automatic transitions without event attributes (W3C compliant) -- ✅ **Conditional Transitions** - Full support for `cond` attributes with expression evaluation -- ✅ **Assign Elements** - Complete `` element support with location-based assignment and nested property access -- ✅ **Value Evaluation** - Non-boolean expression evaluation using Predicator v3.0 for actual data values -- ✅ **Data Model Integration** - StateChart data model with dynamic variable assignment and persistence -- ✅ **O(1) Performance** - Optimized state and transition lookups via Maps -- ✅ **Event Processing** - Internal and external event queues per SCXML specification -- ✅ **Parse → Validate → Optimize Architecture** - Clean separation of concerns -- ✅ **Feature Detection** - Automatic SCXML feature detection for test validation -- ✅ **Regression Testing** - Automated tracking of passing tests to prevent regressions -- ✅ **Git Hooks** - Pre-push validation workflow to catch issues early -- ✅ **Test Infrastructure** - Compatible with SCION and W3C test suites -- ✅ **Code Quality** - Full Credo compliance with proper module aliasing - -## Current Status - -### Working Features - -- ✅ **Basic state transitions** and event-driven changes -- ✅ **Hierarchical states** with optimized O(1) state lookup and automatic initial child entry -- ✅ **Initial state elements** - Full `` element support with transitions and comprehensive validation -- ✅ **Parallel states** with concurrent execution of multiple regions and proper cross-boundary exit semantics -- ✅ **Eventless transitions** - Automatic transitions without event attributes (also called NULL transitions in SCXML spec), with cycle detection and microstep processing -- ✅ **Conditional transitions** - Full `cond` attribute support with Predicator v3.0 expression evaluation and SCXML `In()` function -- ✅ **Assign elements** - Complete `` element support with location-based assignment, nested property access, and mixed notation -- ✅ **Value evaluation system** - SC.ValueEvaluator module for non-boolean expression evaluation and data model operations -- ✅ **Enhanced expression evaluation** - Predicator v3.0 integration with deep property access and type-safe operations -- ✅ **Transition conflict resolution** - Child state transitions take priority over ancestor transitions per W3C specification -- ✅ **SCXML-compliant processing** - Proper microstep/macrostep execution model with exit set computation and LCCA algorithms -- ✅ **Modular validation** - Refactored from 386-line monolith into focused sub-validators -- ✅ **Feature detection** - Automatic SCXML feature detection prevents false positive test results -- ✅ **SAX-based XML parsing** with accurate location tracking for error reporting -- ✅ **Performance optimizations** - O(1) state/transition lookups, optimized active configuration -- ✅ **Source field optimization** - Transitions include source state for faster event processing - -### Planned Features - -- History states (``) -- Internal and targetless transitions -- More executable content (`