atomvm-cbor 0.3.1 validation report

View Source

Version 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, commit 50cae38fc0d846e41fe61c9d5d80229c6cff91f2.
  • Measured candidate source: 0.3.0 runtime commit 06333306be6d0f83d9b0b257afdc29f82bcd22ea.
  • 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.
BoardExact physical identityCPUFlash / PSRAM
ESP32-S3 N16R8QFN56 rev 0.2, MAC 1c:db:d4:5b:f5:d0, native USB identifier 1C:DB:D4:5B:F5:D0240 MHz16 MiB DIO flash / 8 MiB octal PSRAM, both 80 MHz
WaveShare N32R16VESP32-S3-DEV-KIT-N32R16V, MAC 90:e5:b1:d8:48:b0, CH340 UART serial 5B61092782240 MHz32 MiB OPI/DTR flash / 16 MiB octal PSRAM, both 80 MHz
RP2040 E462…RP2040 B2, BOOTSEL serial E0C9125B0D9B, flash ID E46254C5C32D122C133 MHz16 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.

FunctionESP32-S3 N16R8 0.2.0 µs0.3.0 µsChangeWaveShare N32R16V 0.2.0 µs0.3.0 µsChangeRP2040 E462… 0.2.0 µs0.3.0 µsChange
encode/18849.468844.020.06% faster3507.303508.000.02% slower4824.604791.260.69% faster
decode/110063.5210044.020.19% faster3931.223935.360.11% slower6082.166067.220.25% faster
partial_decode/115575.3815575.920.00% slower6325.486327.620.03% slower9261.069346.800.93% slower
partial_decode/215737.2615738.900.01% slower6373.286373.640.01% slower9275.709372.161.04% slower
partial_deep_decode/112227.0412219.280.06% faster4972.544985.380.26% slower7742.007786.840.58% slower
partial_value_bytes/11017.201011.640.55% faster451.96463.162.48% slower557.50555.890.29% faster
partial_contents/11260.141252.280.62% faster511.97522.502.06% slower498.50503.040.91% slower
partial_skip/1509.06480.235.66% faster227.07232.112.22% slower226.12221.102.22% faster
partial_type/1510.14479.825.94% faster226.62231.482.14% slower226.05221.502.01% faster
partial_count/1508.55480.305.56% faster227.51232.162.04% slower228.13221.882.74% faster
partial_tag/1554.26605.999.33% slower270.87309.8214.38% slower250.46262.504.81% slower
partial_size/1568.37618.168.76% slower285.07323.8313.60% slower263.27270.002.56% slower
partial_offset/1508.95479.535.78% faster227.21231.561.91% slower225.49223.250.99% faster
partial_length/1511.07477.456.58% faster228.18231.841.60% slower228.41224.421.75% faster

Comparable-workload totals:

ScopeFaster rowsSlower rowsNet average change
ESP32-S3 N16R8104-0.92%
WaveShare N32R16V014+3.06%
RP2040 E462…86-0.01%
All 42 board/workload results1824+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.

Workload0.2.0 baselineESP32-S3 N16R8 0.3.0 median µsWaveShare N32R16V 0.3.0 median µsRP2040 E462… 0.3.0 median µs
encode_with_size_nestedN/A8553.463487.344817.44
encode_sequence_32N/A22377.748938.2210792.68
sequence_fold_32N/A51161.9420206.1627620.30
validate_all_nestedN/A20292.087699.969819.90
partial_map_foldN/A33097.0012651.2417685.38
partial_array_foldN/A29531.6611219.8015642.32
partial_selectN/A36947.2214595.6020275.32
partial_map_findN/A36417.7214349.2819772.56
partial_array_nthN/A27372.0010498.6614340.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-256 16b762a265d73ea53a9f9491722093222b9df87c0cc62877636acbd21c35e90e), 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.

BoardFirst/late heap maximumFirst/late memory maximumRoundsResult
ESP32-S3 N16R863 / 63 words492 / 492 bytes40pass
WaveShare N32R16V63 / 63 words492 / 492 bytes40pass
RP2040 E462…63 / 63 words484 / 484 bytes40pass

Evidence identities:

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.