You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ReactESP currently has no automated CI. The repo contains only a stub .travis.yml (entirely commented-out template). All toolchain coverage is implicit, performed manually by the maintainer against whatever PlatformIO environment is convenient.
This is the direct root cause of the 3.3.0 → C++14 regression fixed in #40:
The change built cleanly on the maintainer's pioarduino setup (ESP-IDF 5.x, gnu++2a).
It silently broke espressif32 @ ^6.x (ESP-IDF 4.4.x, C++14), which is what SensESP and other downstreams build against.
No CI matrix existed to catch the divergence, so 3.3.0 shipped broken on a major downstream toolchain.
The C++14 fallback added in #40 restores compilation but is equally unguarded against the next perf change that accidentally reaches for a newer-standard feature.
Proposed scope
Add a GitHub Actions workflow that builds both examples/minimal and examples/torture_test across, at minimum:
Platforms:arduino (espressif32 ^6.x — exercises the C++14 fallback) and pioarduino (newer, exercises the C++17 hot path).
Boards:esp32 and esp32c3.
Trigger on PRs and pushes to master. Failure should block merge.
Out of scope
Unit/integration tests on real hardware. CI-time compile coverage is sufficient to catch the class of regression this issue is about; runtime testing is a larger separate effort.
Replacing .travis.yml. The stub can stay or be deleted in a follow-up; not blocking.
Problem
ReactESP currently has no automated CI. The repo contains only a stub
.travis.yml(entirely commented-out template). All toolchain coverage is implicit, performed manually by the maintainer against whatever PlatformIO environment is convenient.This is the direct root cause of the 3.3.0 → C++14 regression fixed in #40:
std::set::extract()/insert(node_type)in the hot path — a C++17 construct.pioarduinosetup (ESP-IDF 5.x, gnu++2a).espressif32 @ ^6.x(ESP-IDF 4.4.x, C++14), which is what SensESP and other downstreams build against.The C++14 fallback added in #40 restores compilation but is equally unguarded against the next perf change that accidentally reaches for a newer-standard feature.
Proposed scope
Add a GitHub Actions workflow that builds both
examples/minimalandexamples/torture_testacross, at minimum:arduino(espressif32 ^6.x — exercises the C++14 fallback) andpioarduino(newer, exercises the C++17 hot path).esp32andesp32c3.Trigger on PRs and pushes to
master. Failure should block merge.Out of scope
.travis.yml. The stub can stay or be deleted in a follow-up; not blocking.Related