Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/dependency-refresh-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Dependency Refresh Tests
on:
push:
branches:
- feature/45-timing-2.2.3-dependency-refresh
- feature/47-timing-2.2.4-dependency-refresh
pull_request:
branches:
- main
Expand All @@ -18,12 +18,12 @@ jobs:
- 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-Units
ref: 0.2.2
ref: 0.2.3
path: project/dependencies/ESPressio-Units
- uses: actions/checkout@v4
with:
Expand Down Expand Up @@ -65,5 +65,5 @@ jobs:
void setup() {}
void loop() {}
EOF
- name: Compile Threads against released Timing 2.2.3
- name: Compile Threads against released Timing 2.2.4
run: pio run -d project/compile
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,20 @@ Versioning](https://semver.org/).
> had little or no release-note detail, the entry is intentionally terse
> rather than inferring unsupported intent.

## [3.1.4] - 2026-08-21

### Changed

- Raised the required ESPressio Timing baseline from 2.2.3 to 2.2.4, carrying the Units 0.2.3 / Serializable 0.10.2 dependency refresh downstream.
- Preserved the direct ESPressio Observable baseline at `>=3.0.1 <4.0.0`.
- Updated package and ESP-IDF component version metadata for Threads 3.1.4.
- Updated README and current dependency documentation to the 3.1.4 dependency generation.
- Preserved the dependency direction `Threads -> Timing -> Units -> optional Serializable`; Threads does not acquire a direct Serializable dependency.

### Compatibility

- No public Threads interfaces or runtime semantics changed.

## [3.1.3] - 2026-08-20

### Changed
Expand Down
54 changes: 33 additions & 21 deletions ESPRESSIO_DEPENDENCY_CHART.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

![ESPressio Library Dependency Chart](ESPRESSIO_DEPENDENCY_CHART.png)

## ESPressio Threads 3.1.3
## ESPressio Threads 3.1.4

Threads has two required ESPressio dependencies:

```text
ESPressio Threads 3.1.3
-> ESPressio Timing >= 2.2.3 < 3.0.0
ESPressio Threads 3.1.4
-> ESPressio Timing >= 2.2.4 < 3.0.0
-> ESPressio Observable >= 3.0.1 < 4.0.0
```

Expand All @@ -17,9 +17,9 @@ Units dependency:

```text
Threads
-> Timing 2.2.3
-> Units 0.2.2
- - -> Serializable 0.10.1
-> Timing 2.2.4
-> Units 0.2.3
- - -> Serializable 0.10.2
only when Serializable Unit types are selected
```

Expand All @@ -30,34 +30,34 @@ Threads therefore does **not** acquire a direct Serializable dependency.
```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
├── Units >= 0.2.2 < 1.0.0
└── Timing 2.2.4
├── Units >= 0.2.3 < 1.0.0
└── Observable >= 3.0.1 < 4.0.0

EXECUTION
└── Threads 3.1.3
├── Timing >= 2.2.3 < 3.0.0
└── Threads 3.1.4
├── Timing >= 2.2.4 < 3.0.0
└── Observable >= 3.0.1 < 4.0.0

TRANSPORT / EVENT
├── Sockets 0.5.0
├── ESP-Now 0.5.1
└── Event 5.8.1
├── ESP-Now 0.5.2 (planned downstream refresh)
└── Event 5.8.2 (planned downstream convergence)

DIAGNOSTICS / OPERATOR
└── Serial 0.5.1
└── Serial 0.5.1 (release candidate)
```

## Downstream consumers

Event 5.8.1 consumes Threads 3.1.3 as a required dependency. Serial 0.5.1 may
consume Threads directly only through its opt-in diagnostic integration.
Event 5.8.2 will consume Threads 3.1.4 as a required dependency. Serial 0.5.1
may consume Threads directly only through its opt-in diagnostic integration.

Threads itself remains independent of Event and Serial.

Expand All @@ -66,8 +66,8 @@ Threads itself remains independent of Event and Serial.
Dependency changes cascade downstream. An upstream runtime library should not
depend back on a downstream integration merely to host adapter code.

The currently known reciprocal optional Event/ESP-Now relationship is an
architectural exception:
The currently known reciprocal optional relationships are architectural
exceptions:

```text
ESP-Now - - -> Event
Expand All @@ -77,8 +77,20 @@ Event - - -> ESP-Now
ESPNowTransportEventBridge
```

and:

```text
Sockets - - -> Event
socket Event transports

Event - - -> Sockets
SocketWorkerEventBridge
SocketSecuritySessionEventBridge
```

The preferred resolution is to keep Event upstream and transport-neutral and
move the ESP-Now-specific Observer-to-Event bridge downstream into ESP-Now's
Event integration (or a dedicated downstream integration package).
move transport-specific Observer-to-Event bridges downstream alongside each
transport library's Event integration (or a dedicated downstream integration
package).

No new reciprocal dependency should be introduced.
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,24 @@ Threading Components of the Flowduino ESPressio Development Platform.
Light-weight and easy-to-use Threading for your Microcontroller development work.

## Current Source Version
This source tree is version **3.1.3**.
This source tree is version **3.1.4**.

Refer to the GitHub Releases page for the latest published release/tag.

Current required ESPressio baselines:

```text
Timing >= 2.2.3 < 3.0.0
Timing >= 2.2.4 < 3.0.0
Observable >= 3.0.1 < 4.0.0
```

Timing 2.2.3 carries Units 0.2.2 downstream; Serializable remains optional through Serializable Unit representations rather than becoming a direct Threads dependency.
Timing 2.2.4 carries Units 0.2.3 and optional Serializable 0.10.2 downstream; Serializable remains optional through Serializable Unit representations rather than becoming a direct Threads dependency.

## Compatibility

ESPressio Threads `3.1.3` targets the **ESP32 family under Arduino-ESP32**. This includes classic ESP32 and current single- and multi-core variants such as ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C6, ESP32-H2, and ESP32-P4 when supported by the installed Arduino-ESP32/framework version. Single-core devices use CPU 0; multiple hardware cores are not required.
ESPressio Threads `3.1.4` targets the **ESP32 family under Arduino-ESP32**. This includes classic ESP32 and current single- and multi-core variants such as ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C6, ESP32-H2, and ESP32-P4 when supported by the installed Arduino-ESP32/framework version. Single-core devices use CPU 0; multiple hardware cores are not required.

The implementation directly uses ESP-IDF FreeRTOS task, queue, semaphore, and task-local-storage APIs through Arduino-ESP32. The source architecture remains intentionally close to ESP-IDF and the repository retains its CMake/component files, but the `3.1.3` PlatformIO package does **not currently advertise pure ESP-IDF framework support** because the published ESPressio Timing/Units dependency chain does not yet advertise the same framework compatibility.
The implementation directly uses ESP-IDF FreeRTOS task, queue, semaphore, and task-local-storage APIs through Arduino-ESP32. The source architecture remains intentionally close to ESP-IDF and the repository retains its CMake/component files, but the `3.1.4` PlatformIO package does **not currently advertise pure ESP-IDF framework support** because the published ESPressio Timing/Units dependency chain does not yet advertise the same framework compatibility.

The library is not compatible with ESP8266 or non-ESP32 families such as AVR, SAMD, RP2040, STM32, or Renesas merely because another FreeRTOS port is available there.

Expand Down
4 changes: 2 additions & 2 deletions component.mk
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ COMPONENT_REQUIRES := ESPressio_Timing ESPressio_Observable
CXXFLAGS += -DESPRESSIO_THREADS
CXXFLAGS += -DESPRESSIO_THREADS_VERSION_MAJOR=3
CXXFLAGS += -DESPRESSIO_THREADS_VERSION_MINOR=1
CXXFLAGS += -DESPRESSIO_THREADS_VERSION_PATCH=3
CXXFLAGS += -DESPRESSIO_THREADS_VERSION_STRING=\"3.1.3\"
CXXFLAGS += -DESPRESSIO_THREADS_VERSION_PATCH=4
CXXFLAGS += -DESPRESSIO_THREADS_VERSION_STRING=\"3.1.4\"
4 changes: 2 additions & 2 deletions library.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"type": "git",
"url": "https://github.com/Flowduino/ESPressio-Threads.git"
},
"version": "3.1.3",
"version": "3.1.4",
"license": "Apache-2.0",
"frameworks": [
"arduino"
Expand All @@ -21,7 +21,7 @@
"dependencies": [
{
"name": "Flowduino ESPressio-Timing",
"version": ">=2.2.3 <3.0.0",
"version": ">=2.2.4 <3.0.0",
"url": "https://github.com/Flowduino/ESPressio-Timing.git"
},
{
Expand Down
4 changes: 2 additions & 2 deletions library.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name=ESPressio-Threads
version=3.1.3
version=3.1.4
author=Simon J. Stuart
maintainer=Flowduino.com
sentence=Threading library for single- and multi-core ESP32 microcontrollers
Expand All @@ -8,4 +8,4 @@ category=Data Processing
url=https://github.com/Flowduino/ESPressio-Threads
architectures=esp32
includes=ESPressio_Thread.hpp,ESPressio_PrecisionThread.hpp
depends=Flowduino ESPressio-Timing (>=2.2.3 && <3.0.0),Flowduino ESPressio-Observable (>=3.0.1 && <4.0.0)
depends=Flowduino ESPressio-Timing (>=2.2.4 && <3.0.0),Flowduino ESPressio-Observable (>=3.0.1 && <4.0.0)
Loading