Skip to content

test(bare-metal): rusty_zstd round-trips on an ESP32-S3 - #15

Merged
Ttimmahlax merged 1 commit into
mainfrom
test/esp32s3-board-proof
Sep 9, 2026
Merged

test(bare-metal): rusty_zstd round-trips on an ESP32-S3#15
Ttimmahlax merged 1 commit into
mainfrom
test/esp32s3-board-proof

Conversation

@Ttimmahlax

Copy link
Copy Markdown
Contributor

CI proves the crate compiles for Cortex-M4F and RV32. Running on a part is a
different claim, so this one was run.

census64::CENSUS_LIVE = false  (expected: Xtensa LX7 has no 64-bit atomics)
source            8260 bytes
L1  8260 ->  468 bytes  (17.65x)  round trip OK
L3  8260 ->  426 bytes  (19.39x)  round trip OK
L5  8260 ->  263 bytes  (31.41x)  round trip OK
RESULT: PASS -- compressed and decompressed on the board

Three levels because they are three different match finders: Fast, DFast and
Greedy. Each output was decompressed and compared byte for byte against the
source, on the part.

Why the S3, when neither CI target is Xtensa

It is 32-bit, so core::sync::atomic::AtomicU64 does not exist there either and
every census counter is the census64 stub. That makes the board the exact
configuration the fix created
, and the PASS is the evidence that stubbing
the instrument left the codec alone.

Shape

bare-metal/esp32s3 is excluded from the workspace and hand-run, because it
needs Espressif's Rust fork which CI does not have. A plain cargo build at the
repo root never sees it, and the workspace still resolves (verified).

Its README carries the commands, the captured output, and what the test does
not claim: no timing, no heap floor (192 KiB was enough for 8 KiB of source
at levels 1 to 5), and one part rather than three.

🤖 Generated with Claude Code

CI proves the crate COMPILES for Cortex-M4F and RV32. Running on a part is a
different claim, so this one was run.

  census64::CENSUS_LIVE = false  (expected: Xtensa LX7 has no 64-bit atomics)
  source            8260 bytes
  L1  8260 ->  468 bytes  (17.65x)  round trip OK
  L3  8260 ->  426 bytes  (19.39x)  round trip OK
  L5  8260 ->  263 bytes  (31.41x)  round trip OK
  RESULT: PASS -- compressed and decompressed on the board

Three levels because they are three different match finders: Fast, DFast and
Greedy. Each output was decompressed and compared byte for byte against the
source, on the part.

The S3 is the right board for this even though it is neither CI target: it is
32-bit, so `core::sync::atomic::AtomicU64` does not exist there either and
every census counter is the `census64` stub. That makes it the exact
configuration the previous commit created, and the PASS is the evidence that
stubbing the instrument left the codec alone.

`bare-metal/esp32s3` is excluded from the workspace and hand-run: it needs
Espressif's Rust fork, which CI does not have. A plain `cargo build` at the
root never sees it. Its README carries the commands, the captured output, and
what the test does NOT claim -- no timing, no heap floor (192 KiB was enough
for 8 KiB of source at levels 1 to 5), and one part rather than three.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Ttimmahlax
Ttimmahlax merged commit 8941050 into main Sep 9, 2026
8 checks passed
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.

2 participants