diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e0537f2..8989cbb 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -19,12 +19,12 @@ jobs: - uses: actions/checkout@v4 with: repository: Flowduino/ESPressio-Timing - ref: 2.2.3 + ref: 2.2.4 path: ESPressio_Timing - uses: actions/checkout@v4 with: repository: Flowduino/ESPressio-Units - ref: 0.2.2 + ref: 0.2.3 path: ESPressio-Units - name: Configure run: cmake -S ESPressio-Event/tests -B build @@ -47,22 +47,22 @@ jobs: - uses: actions/checkout@v4 with: repository: Flowduino/ESPressio-Units - ref: 0.2.2 + ref: 0.2.3 path: project/dependencies/ESPressio-Units - uses: actions/checkout@v4 with: repository: Flowduino/ESPressio-Timing - ref: 2.2.3 + ref: 2.2.4 path: project/dependencies/ESPressio-Timing - uses: actions/checkout@v4 with: repository: Flowduino/ESPressio-Threads - ref: 3.1.3 + ref: 3.1.4 path: project/dependencies/ESPressio-Threads - uses: actions/checkout@v4 with: repository: Flowduino/ESPressio-Serializable - ref: 0.10.1 + ref: 0.10.2 path: project/dependencies/ESPressio-Serializable - uses: actions/checkout@v4 with: @@ -82,7 +82,7 @@ jobs: - uses: actions/checkout@v4 with: repository: Flowduino/ESPressio-ESP-Now - ref: 0.5.1 + ref: 0.5.2 path: project/dependencies/ESPressio-ESP-Now - uses: actions/setup-python@v5 with: diff --git a/CHANGELOG.md b/CHANGELOG.md index bb2b15a..9ceaa24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## 5.8.2 — 2026-08-21 + +### Changed +- Raised the required ESPressio Threads baseline from 3.1.3 to 3.1.4. +- Raised the required ESPressio Timing baseline from 2.2.3 to 2.2.4. +- Raised the optional ESPressio Serializable baseline from 0.10.1 to 0.10.2 for Serializable Events, runtime construction and Event Transport integrations. +- Preserved the required ESPressio Observable baseline at `>=3.0.1 <4.0.0`. +- Updated package, ESP-IDF component, README and dependency documentation for Event 5.8.2. +- Preserved Security, Command, Sockets and ESP-Now as opt-in bridge dependencies and did not strengthen the existing Event↔ESP-Now or Event↔Sockets reciprocal optional relationships. + +### Compatibility +- No Event, EventThread, listener, Observer, Event Transport, routing, bridge or wire-format API changes are introduced by this dependency-maintenance release. +- Event Transport continues to use the existing ESPB v2 payload representation. + ## 5.8.1 — 2026-08-20 ### Changed diff --git a/ESPRESSIO_DEPENDENCY_CHART.md b/ESPRESSIO_DEPENDENCY_CHART.md index 1696337..816d8fc 100644 --- a/ESPRESSIO_DEPENDENCY_CHART.md +++ b/ESPRESSIO_DEPENDENCY_CHART.md @@ -1,26 +1,26 @@ -# ESPressio Dependency Chart — Event 5.8.1 +# ESPressio Dependency Chart — Event 5.8.2 ![ESPressio Library Dependency Chart](ESPRESSIO_DEPENDENCY_CHART.png) ## Required dependencies ```text -ESPressio Event 5.8.1 - -> ESPressio Threads >= 3.1.3 < 4.0.0 - -> ESPressio Timing >= 2.2.3 < 3.0.0 +ESPressio Event 5.8.2 + -> ESPressio Threads >= 3.1.4 < 4.0.0 + -> ESPressio Timing >= 2.2.4 < 3.0.0 -> ESPressio Observable >= 3.0.1 < 4.0.0 ``` The transitive required chain is: ```text -Event 5.8.1 - -> Threads 3.1.3 - -> Timing 2.2.3 - -> Units 0.2.2 +Event 5.8.2 + -> Threads 3.1.4 + -> Timing 2.2.4 + -> Units 0.2.3 -> Observable 3.0.1 - -> Timing 2.2.3 - -> Units 0.2.2 + -> Timing 2.2.4 + -> Units 0.2.3 -> Observable 3.0.1 -> Observable 3.0.1 ``` @@ -31,11 +31,12 @@ Ordinary local Event use does not require Serializable. Serializable Events, runtime Serializable Event construction, and Event Transport require: ```text -ESPressio Serializable >= 0.10.1 < 1.0.0 +ESPressio Serializable >= 0.10.2 < 1.0.0 ``` -Serializable 0.10.1 preserves the ESPB v2 wire representation while adding -bounded/allocation-free inspection facilities. Event's transport wire format is +Serializable 0.10.2 preserves the ESPB v2 wire representation while retaining +bounded/allocation-free inspection facilities and correcting the strict-build +warning exposed by downstream consumers. Event's transport wire format is unchanged by this dependency refresh. ## Optional Observer-to-Event bridges @@ -57,31 +58,32 @@ do not become mandatory Event dependencies merely because bridge headers exist. ```text FOUNDATIONAL ├── Observable 3.0.1 -├── Serializable 0.10.1 -├── Units 0.2.2 +├── Serializable 0.10.2 +├── Units 0.2.3 ├── Security 0.2.0 └── Command 0.3.0 RUNTIME -└── Timing 2.2.3 +└── Timing 2.2.4 EXECUTION -└── Threads 3.1.3 +└── Threads 3.1.4 TRANSPORT / INTEGRATION ├── Sockets 0.5.0 -└── ESP-Now 0.5.1 +└── ESP-Now 0.5.2 EVENT -└── Event 5.8.1 +└── Event 5.8.2 DIAGNOSTICS / OPERATOR -└── Serial 0.5.1 +└── Serial 0.5.1 (release candidate) ``` ## Circular-dependency audit -There is one currently known reciprocal optional relationship: +There are two reciprocal optional relationships that should be removed in a +future architecture cleanup: ```text ESP-Now - - -> Event @@ -91,14 +93,25 @@ Event - - -> ESP-Now ESPNowTransportEventBridge ``` -Although neither edge is mandatory, this violates the desired dependency rule: -integration dependencies should cascade downstream and must not point back into -a consumer that already depends on the abstraction. +and: + +```text +Sockets - - -> Event + socket Event transports + +Event - - -> Sockets + SocketWorkerEventBridge + SocketSecuritySessionEventBridge +``` + +Although none of these edges is mandatory, each pair violates the desired +dependency rule: integration dependencies should cascade downstream and must not +point back into a consumer that already depends on the abstraction. ### Preferred resolution -Event should remain the upstream, transport-neutral abstraction. The -ESP-Now-specific Observer-to-Event bridge should move downstream: +Event should remain the upstream, transport-neutral abstraction. Transport- +specific Observer-to-Event bridges should move downstream: ```text Event @@ -109,14 +122,19 @@ Event ESP-Now Event integration ├── ESPNowEventTransport └── ESPNowTransportEventBridge + +Sockets Event integration + ├── socket Event transports + ├── SocketWorkerEventBridge + └── SocketSecuritySessionEventBridge ``` -A dedicated integration package would also be valid if keeping both libraries -completely unaware of one another is preferable. +Dedicated integration packages would also be valid if keeping the core +libraries completely unaware of one another is preferable. -Until that relocation occurs, Event 5.8.1 does not add or strengthen any new -Event -> ESP-Now package-level dependency. The existing bridge remains available -for compatibility only. +Until those relocations occur, Event 5.8.2 does not add or strengthen any new +Event -> ESP-Now or Event -> Sockets package-level dependency. Existing bridge +headers remain available for compatibility only. ## Dependency-direction rule diff --git a/README.md b/README.md index 73da903..006e30b 100644 --- a/README.md +++ b/README.md @@ -10,20 +10,20 @@ queues, listener/observer registration, priority dispatch, high-resolution Event timing, optional Observer-to-Event bridges, and optional transport-neutral Serializable Event routing. -## Current Version — 5.8.1 +## Current Version — 5.8.2 -ESPressio Event **5.8.1** is a dependency-maintenance patch over 5.8.0. It retains the expanded Observable-to-Event bridge surface while refreshing the validated upstream dependency baselines. +ESPressio Event **5.8.2** is a dependency-maintenance patch over 5.8.0. It retains the expanded Observable-to-Event bridge surface while refreshing the validated upstream dependency baselines. Current dependency model: ```text Required - ESPressio Threads >= 3.1.3 < 4.0.0 - ESPressio Timing >= 2.2.3 < 3.0.0 + ESPressio Threads >= 3.1.4 < 4.0.0 + ESPressio Timing >= 2.2.4 < 3.0.0 ESPressio Observable >= 3.0.1 < 4.0.0 Optional Serializable Event / Event Transport - ESPressio Serializable >= 0.10.1 < 1.0.0 + ESPressio Serializable >= 0.10.2 < 1.0.0 Optional observer bridge sources ESPressio Security >= 0.2.0 < 1.0.0 @@ -34,7 +34,7 @@ Optional observer bridge sources Security and Command remain valid one-way bridge dependencies: those libraries expose synchronous Observable contracts and do not depend back upon Event. -The dependency audit for 5.8.1 identifies two reciprocal optional relationships that should not be strengthened: +The dependency audit for 5.8.2 identifies two reciprocal optional relationships that should not be strengthened: ```text Sockets -> Event concrete socket Event transports @@ -235,22 +235,22 @@ library: ``` ini lib_deps = - flowduino/ESPressio-Event@^5.8.1 + flowduino/ESPressio-Event@^5.8.2 ``` The mandatory dependency graph is: ``` text -ESPressio Event 5.8.1 +ESPressio Event 5.8.2 | - +-- ESPressio Threads >= 3.1.3 < 4.0.0 + +-- ESPressio Threads >= 3.1.4 < 4.0.0 | +-- ESPressio Observable >= 3.0.1 < 4.0.0 | - +-- ESPressio Timing >= 2.2.3 < 3.0.0 + +-- ESPressio Timing >= 2.2.4 < 3.0.0 ``` -ESPressio Units 0.2.2 is carried by the Timing dependency stack. +ESPressio Units 0.2.3 is carried by the Timing dependency stack. **ESPressio Serializable is not a mandatory Event dependency.** It is required only when an application explicitly opts into Serializable @@ -258,10 +258,10 @@ Events, runtime Serializable Event construction, or Event Transport. The validated current baseline is: ```text -ESPressio Serializable >= 0.10.1 < 1.0.0 +ESPressio Serializable >= 0.10.2 < 1.0.0 ``` -Security, Command, Sockets and ESP-Now remain optional bridge dependencies only. Event 5.8.1 introduces no new mandatory dependency on any of them. +Security, Command, Sockets and ESP-Now remain optional bridge dependencies only. Event 5.8.2 introduces no new mandatory dependency on any of them. ### Dependency direction and transport-specific bridges @@ -392,7 +392,7 @@ directly: the originating libraries expose synchronous Observer notifications, while ESPressio Event can optionally convert those notifications into asynchronous Events. -Event 5.8 extends the same model to Security, Command, Sockets, and ESP-Now. The 5.8.1 dependency audit additionally distinguishes valid one-way bridges from transport-specific bridges that should ultimately move downstream to avoid reciprocal optional dependency edges. +Event 5.8 extends the same model to Security, Command, Sockets, and ESP-Now. The 5.8.2 dependency audit additionally distinguishes valid one-way bridges from transport-specific bridges that should ultimately move downstream to avoid reciprocal optional dependency edges. ------------------------------------------------------------------------ @@ -1091,8 +1091,8 @@ Serializable explicitly: ``` ini lib_deps = - flowduino/ESPressio-Event@^5.8.1 - flowduino/ESPressio-Serializable@^0.10.1 + flowduino/ESPressio-Event@^5.8.2 + flowduino/ESPressio-Serializable@^0.10.2 ``` ## `SerializableEvent` @@ -1478,7 +1478,7 @@ payload length ``` The payload uses the ESPressio Serializable **ESPB v2 binary wire format**. -Event 5.8.1 validates against Serializable 0.10.1 while preserving the existing wire representation and direct binary transport path, with the archive path retained for compatibility/schema-migration cases. +Event 5.8.2 validates against Serializable 0.10.2 while preserving the existing wire representation and direct binary transport path, with the archive path retained for compatibility/schema-migration cases. ## EventTransportManager observation diff --git a/component.mk b/component.mk index 5674c90..c13d9a2 100644 --- a/component.mk +++ b/component.mk @@ -5,7 +5,7 @@ COMPONENT_REQUIRES := ESPressio_Threads ESPressio_Observable ESPressio_Timing CXXFLAGS += -DESPRESSIO_EVENT CXXFLAGS += -DESPRESSIO_EVENT_VERSION_MAJOR=5 CXXFLAGS += -DESPRESSIO_EVENT_VERSION_MINOR=8 -CXXFLAGS += -DESPRESSIO_EVENT_VERSION_PATCH=1 -CXXFLAGS += -DESPRESSIO_EVENT_VERSION_STRING=\"5.8.1\" +CXXFLAGS += -DESPRESSIO_EVENT_VERSION_PATCH=2 +CXXFLAGS += -DESPRESSIO_EVENT_VERSION_STRING=\"5.8.2\" CXXFLAGS += -std=gnu++17 diff --git a/library.json b/library.json index 8ced8db..f75f71c 100644 --- a/library.json +++ b/library.json @@ -21,14 +21,14 @@ "type": "git", "url": "https://github.com/Flowduino/ESPressio-Event.git" }, - "version": "5.8.1", + "version": "5.8.2", "license": "Apache-2.0", "frameworks": "arduino", "platforms": "espressif32", "dependencies": [ { "name": "ESPressio-Threads", - "version": ">=3.1.3 <4.0.0", + "version": ">=3.1.4 <4.0.0", "url": "https://github.com/Flowduino/ESPressio-Threads.git", "platforms": "espressif32" }, @@ -41,7 +41,7 @@ { "owner": "flowduino", "name": "ESPressio-Timing", - "version": ">=2.2.3 <3.0.0" + "version": ">=2.2.4 <3.0.0" } ] } diff --git a/library.properties b/library.properties index 28088b0..e8a3233 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=Flowduino ESPressio-Event -version=5.8.1 +version=5.8.2 author=Simon J. Stuart maintainer=Flowduino.com sentence=Event-driven development library for ESP32 microcontrollers @@ -8,4 +8,4 @@ category=Communication url=https://github.com/Flowduino/ESPressio-Event architectures=esp32 includes=ESPressio_Event.hpp,ESPressio_EventThread.hpp,ESPressio_PrecisionEventThread.hpp -depends=ESPressio-Threads (>=3.1.3 && <4.0.0),Flowduino ESPressio-Observable (>=3.0.1 && <4.0.0),Flowduino ESPressio-Timing (>=2.2.3 && <3.0.0) +depends=ESPressio-Threads (>=3.1.4 && <4.0.0),Flowduino ESPressio-Observable (>=3.0.1 && <4.0.0),Flowduino ESPressio-Timing (>=2.2.4 && <3.0.0)