atomvm-cbor 0.3.1 validation report
View SourceVersion 0.3.1 is a documentation-compatibility patch. It replaces README Mermaid source blocks with deterministic static SVG charts so the same current release comparison renders on GitHub and Hex.pm. Runtime code, public APIs, benchmark values, supported runtimes, and validation thresholds are unchanged from 0.3.0.
No host or attached-device benchmark was repeated for this patch. The tables below are regenerated from the retained structured 0.3.0 evidence manifest, copied byte-for-byte except for its 0.3.1 package-release identity. The original full methodology and evidence narrative remains in the 0.3.0 validation report.
Evidence identity and targets
- Performance baseline: public
0.2.0, commit50cae38fc0d846e41fe61c9d5d80229c6cff91f2. - Measured candidate source:
0.3.0runtime commit06333306be6d0f83d9b0b257afdc29f82bcd22ea. - Published 0.3.0 release commit:
950b0374360c7f40cde97dadfddb5a0cd44e34e0. - 0.3.1 changes only versioned documentation and static chart assets; the benchmark and runtime source inputs are unchanged.
| Board | Exact physical identity | CPU | Flash / PSRAM |
|---|---|---|---|
| ESP32-S3 N16R8 | QFN56 rev 0.2, MAC 1c:db:d4:5b:f5:d0, native USB identifier 1C:DB:D4:5B:F5:D0 | 240 MHz | 16 MiB DIO flash / 8 MiB octal PSRAM, both 80 MHz |
| WaveShare N32R16V | ESP32-S3-DEV-KIT-N32R16V, MAC 90:e5:b1:d8:48:b0, CH340 UART serial 5B61092782 | 240 MHz | 32 MiB OPI/DTR flash / 16 MiB octal PSRAM, both 80 MHz |
| RP2040 E462… | RP2040 B2, BOOTSEL serial E0C9125B0D9B, flash ID E46254C5C32D122C | 133 MHz | 16 MiB flash / 264 KiB SRAM |
Attached-device comparison: 0.2.0 to 0.3.0
Lower timings are better. Negative signed net averages mean faster overall; positive signed net averages mean slower overall.
| Function | ESP32-S3 N16R8 0.2.0 µs | 0.3.0 µs | Change | WaveShare N32R16V 0.2.0 µs | 0.3.0 µs | Change | RP2040 E462… 0.2.0 µs | 0.3.0 µs | Change |
|---|---|---|---|---|---|---|---|---|---|
encode/1 | 8849.46 | 8844.02 | 0.06% faster | 3507.30 | 3508.00 | 0.02% slower | 4824.60 | 4791.26 | 0.69% faster |
decode/1 | 10063.52 | 10044.02 | 0.19% faster | 3931.22 | 3935.36 | 0.11% slower | 6082.16 | 6067.22 | 0.25% faster |
partial_decode/1 | 15575.38 | 15575.92 | 0.00% slower | 6325.48 | 6327.62 | 0.03% slower | 9261.06 | 9346.80 | 0.93% slower |
partial_decode/2 | 15737.26 | 15738.90 | 0.01% slower | 6373.28 | 6373.64 | 0.01% slower | 9275.70 | 9372.16 | 1.04% slower |
partial_deep_decode/1 | 12227.04 | 12219.28 | 0.06% faster | 4972.54 | 4985.38 | 0.26% slower | 7742.00 | 7786.84 | 0.58% slower |
partial_value_bytes/1 | 1017.20 | 1011.64 | 0.55% faster | 451.96 | 463.16 | 2.48% slower | 557.50 | 555.89 | 0.29% faster |
partial_contents/1 | 1260.14 | 1252.28 | 0.62% faster | 511.97 | 522.50 | 2.06% slower | 498.50 | 503.04 | 0.91% slower |
partial_skip/1 | 509.06 | 480.23 | 5.66% faster | 227.07 | 232.11 | 2.22% slower | 226.12 | 221.10 | 2.22% faster |
partial_type/1 | 510.14 | 479.82 | 5.94% faster | 226.62 | 231.48 | 2.14% slower | 226.05 | 221.50 | 2.01% faster |
partial_count/1 | 508.55 | 480.30 | 5.56% faster | 227.51 | 232.16 | 2.04% slower | 228.13 | 221.88 | 2.74% faster |
partial_tag/1 | 554.26 | 605.99 | 9.33% slower | 270.87 | 309.82 | 14.38% slower | 250.46 | 262.50 | 4.81% slower |
partial_size/1 | 568.37 | 618.16 | 8.76% slower | 285.07 | 323.83 | 13.60% slower | 263.27 | 270.00 | 2.56% slower |
partial_offset/1 | 508.95 | 479.53 | 5.78% faster | 227.21 | 231.56 | 1.91% slower | 225.49 | 223.25 | 0.99% faster |
partial_length/1 | 511.07 | 477.45 | 6.58% faster | 228.18 | 231.84 | 1.60% slower | 228.41 | 224.42 | 1.75% faster |
Comparable-workload totals:
| Scope | Faster rows | Slower rows | Net average change |
|---|---|---|---|
| ESP32-S3 N16R8 | 10 | 4 | -0.92% |
| WaveShare N32R16V | 0 | 14 | +3.06% |
| RP2040 E462… | 8 | 6 | -0.01% |
| All 42 board/workload results | 18 | 24 | +0.71% |
The net average is the unweighted arithmetic mean of the signed per-row changes in this exact comparison matrix. Negative is faster; positive is slower. Current-only workloads with an N/A baseline are excluded.
New 0.3.0 attached-device workloads
These APIs do not exist in 0.2.0, so the baseline and percentage are N/A.
Measured 0.3.0 candidate values remain present for every maintained target.
| Workload | 0.2.0 baseline | ESP32-S3 N16R8 0.3.0 median µs | WaveShare N32R16V 0.3.0 median µs | RP2040 E462… 0.3.0 median µs |
|---|---|---|---|---|
encode_with_size_nested | N/A | 8553.46 | 3487.34 | 4817.44 |
encode_sequence_32 | N/A | 22377.74 | 8938.22 | 10792.68 |
sequence_fold_32 | N/A | 51161.94 | 20206.16 | 27620.30 |
validate_all_nested | N/A | 20292.08 | 7699.96 | 9819.90 |
partial_map_fold | N/A | 33097.00 | 12651.24 | 17685.38 |
partial_array_fold | N/A | 29531.66 | 11219.80 | 15642.32 |
partial_select | N/A | 36947.22 | 14595.60 | 20275.32 |
partial_map_find | N/A | 36417.72 | 14349.28 | 19772.56 |
partial_array_nth | N/A | 27372.00 | 10498.66 | 14340.08 |
Evidence identities:
- Candidate-only harness SHA-256:
299fec5a1782c62e6afd03ab134b8a9711c4dff465cfdf3e054095aaa1234d65. - Candidate-only pack SHA-256:
a92c4b93d3ce03f64529c18be63b9b42f1034fc55add0d108df6b51a14b21e59. - Evidence bundle:
candidate-api-three-targets-06333306be6d0f83d9b0b257afdc29f82bcd22ea.tar.gz(SHA-25616b762a265d73ea53a9f9491722093222b9df87c0cc62877636acbd21c35e90e), Dell operator evidence: results/candidate-api/. - ESP32-S3 N16R8: 5 captures, log-set SHA-256
8ebad927d7bce1e592a50425205e80bf50355dec469b1d13ac49557b21ed6ab4; Dell operator evidence: results/candidate-api/esp32-s3-n16r8-candidate-api-run[1-5].log. - WaveShare N32R16V: 5 captures, log-set SHA-256
f7d4255126b375f76ff872806b77af8d2c97c9c90c124d0ce8f15a5ebdd799a4; Dell operator evidence: results/candidate-api/waveshare-n32r16v-candidate-api-run[1-5].log. - RP2040 E462…: 5 captures, log-set SHA-256
789e570e4622f75e27da6497d88fc434cfa6ec0415095fdacb71a133f317ce9d; Dell operator evidence: results/candidate-api/rp2040-candidate-api-run[1-5].log.
Manifest: docs/benchmarks/data/0.3.1.json (SHA-256 bdec66e487ad59e2eec6a030b36072beafe3c67d1c1827d780ac986c444eaf9b).
Retained functional and bounded-soak evidence
Functional and soak evidence is distinct from performance evidence. All three named targets retain their exact successful 40-round result and evidence identity; no soak was rerun for this documentation-only patch.
| Board | First/late heap maximum | First/late memory maximum | Rounds | Result |
|---|---|---|---|---|
| ESP32-S3 N16R8 | 63 / 63 words | 492 / 492 bytes | 40 | pass |
| WaveShare N32R16V | 63 / 63 words | 492 / 492 bytes | 40 | pass |
| RP2040 E462… | 63 / 63 words | 484 / 484 bytes | 40 | pass |
Evidence identities:
- ESP32-S3 N16R8: Dell exact-tag supplemental functional/soak capture, 2026-08-23, source
06333306be6d0f83d9b0b257afdc29f82bcd22ea,esp32-s3-n16r8-functional-soak-06333306be6d0f83d9b0b257afdc29f82bcd22ea.tar.gz(SHA-2567e138061ae7dcf7452bfd5e2410731d300516a0c85d0356f051fc48212449ac7). - WaveShare N32R16V: retained release-candidate run 32586422115, ESP job 97064781219, source
12903636339edb1172167d3905907ff583ffd7d2,esp32-s3-hardware-results-12903636339edb1172167d3905907ff583ffd7d2.tar.gz(SHA-25651203bb68c0fd89f9b9ff909e6fa97b96a906b0db74dfb5a16311cab49ed1572). - RP2040 E462…: retained release-candidate run 32586422115, RP2040 job 97064781214, source
12903636339edb1172167d3905907ff583ffd7d2,rp2040-hardware-results-12903636339edb1172167d3905907ff583ffd7d2.tar.gz(SHA-2560bd6594e9012bc967985fcf7fdd35f7ea4e5a470c928f29e3866896a98fcb238). <!-- release-evidence:report-soak:end -->
Reproduction and policy
The structured source for this report is
data/0.3.1.json. It retains the exact 0.3.0 measurements;
only its package-release field is 0.3.1. Regenerate and verify the report and
SVG assets with:
python3 scripts/release-evidence.py --write
python3 scripts/release-evidence.py
Valid exact evidence is reused. Documentation regeneration is never a reason to repeat host or physical-device benchmarks.