Skip to content

chore(serialization): bump alpaca to upstream master (portable with_version hash) - #863

Merged
finger563 merged 1 commit into
mainfrom
chore/alpaca-master
Oct 31, 2026
Merged

finger563 merged 1 commit into
mainfrom
chore/alpaca-master

Conversation

@finger563

@finger563 finger563 commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Moves the bundled alpaca (components/serialization/detail/alpaca) from 83a592f (our #51 strict merge, Sep 2024) to upstream master 8f022bd (2026-10-30). This picks up the three espp-driven upstream PRs that merged today plus upstream's own fixes from October:

The persistent_data codec / README comments that described the old sizeof-based hash are updated; its own layout fingerprint stays (it also covers enum underlying types and array lengths, and a Python reader can compute it from a field spec).

Behaviour note for downstream users (release notes; this is why the next espp release is 1.4.0, not 1.3.12): espp's SERIALIZATION_DEFAULT_OPTIONS include with_version, so the version word written in front of every payload changes for every aggregate. Data serialized with the default options by firmware built on the old pin will fail to verify (std::errc::invalid_argument) when read by firmware on this pin, and vice versa. Nothing in espp itself persists such bytes (persistent_data uses its own header), and transient uses (event_manager, button) are unaffected within one build.

Test plan

  • serialization, event_manager, button examples (the in-tree users of the default options) build for esp32 on IDF v6.1, zero warnings
  • persistent_data host test against the new alpaca: 114 checks, 0 failures
  • Host C++ library (lib/, Python off) builds at the new pin
  • CI green (the persistent_data_tests workflow builds against the submodule's alpaca)

🤖 Generated with Claude Code

https://claude.ai/code/session_01DFjjnq3XCTRAXENSxsCxJU

…ersion hash)

Moves components/serialization/detail/alpaca from 83a592f to upstream
8f022bd, picking up p-ranav/alpaca#56 (the with_version type hash no
longer includes sizeof(struct), so it verifies across a 32-bit target and
a 64-bit host), #55 (pyalpaca options; Python wrapper only), #57 (MSVC CI
fix) and upstream's October fixes (top-level containers, aggregate-arity
SFINAE and wider arity, full-range 64-bit varint decoding, pedantic
warnings). persistent_data's comments about the old sizeof-based hash are
updated; its own layout fingerprint is unchanged.

Behaviour note: SERIALIZATION_DEFAULT_OPTIONS include with_version, so
the version word changes for every aggregate; bytes serialized with the
defaults by firmware on the old pin will not verify on this one (nothing
in espp persists such bytes; persistent_data has its own header).

Verified: serialization / event_manager / button examples (esp32, IDF
v6.1, zero warnings), persistent_data host test 114/114 against the new
alpaca, host C++ library build.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DFjjnq3XCTRAXENSxsCxJU
@github-actions

Copy link
Copy Markdown

✅Static analysis result - no issues found! ✅

@finger563
finger563 merged commit 28272bf into main Oct 31, 2026
180 checks passed
@finger563
finger563 deleted the chore/alpaca-master branch October 31, 2026 02:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant