Repository navigation
chore(serialization): bump alpaca to upstream master (portable with_version hash) - #863
Merged
Merged
Conversation
…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
|
✅Static analysis result - no issues found! ✅ |
4 of 5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Moves the bundled alpaca (
components/serialization/detail/alpaca) from83a592f(our #51strictmerge, Sep 2024) to upstream master8f022bd(2026-10-30). This picks up the three espp-driven upstream PRs that merged today plus upstream's own fixes from October:with_versionhash. The type hash no longer foldssizeof(struct)in, so bytes serialized withwith_versionverify across platforms (a 32-bit ESP32 and a 64-bit host used to compute different hashes for the same struct).optionsargument, byte-identical container sizes, proper errors, tests and CI (Python wrapper only; the espp build does not compile it).windows-2019runner.aggregate_aritySFINAE for non-aggregates (Controller component #22), wider aggregate arity (MCP23x17 Component (GPIO expander) #16/RangeMapper API Update #28), varint decoding of full-range 64-bit values (CodeQL analysis doesn't seem to be working #23/Feature/vector assignment #35), pedantic-mode warning fixes (bugfix(socket): added missing include #54).The
persistent_datacodec / README comments that described the oldsizeof-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_OPTIONSincludewith_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_datauses its own header), and transient uses (event_manager, button) are unaffected within one build.Test plan
serialization,event_manager,buttonexamples (the in-tree users of the default options) build for esp32 on IDF v6.1, zero warningspersistent_datahost test against the new alpaca: 114 checks, 0 failureslib/, Python off) builds at the new pinpersistent_data_testsworkflow builds against the submodule's alpaca)🤖 Generated with Claude Code
https://claude.ai/code/session_01DFjjnq3XCTRAXENSxsCxJU