Changelog

View Source

0.3.1

Fixed

  • Replaced the README Mermaid benchmark charts with deterministic static SVG assets so the current-release comparison renders on Hex.pm as well as GitHub.
  • Reuse the previous exact SemVer performance evidence when runtime and benchmark-harness sources are byte-identical; any changed byte continues through the unchanged 5% measurement gate.

Compatibility

  • Runtime code, public APIs, package behavior, supported runtimes, benchmark values, and validation thresholds are unchanged from 0.3.0.

0.3.0

Added

  • partial_map_fold/3 and partial_array_fold/3 for bounded, single-pass traversal of opaque container descriptors with explicit early termination.
  • partial_select/2, partial_map_find/2, and partial_array_nth/2 for selective map and array access without deep-decoding unselected values.
  • encode_with_size/1,2 for returning the encoded binary and its exact size from one encode operation.
  • encode_sequence/1,2 and sequence_fold/3 for bounded RFC 8742 sequence production and consumption without requiring a result list.
  • validate_all/1,2 for validating exactly one complete CBOR item without materializing its nested Erlang value.

Fixed

  • Forged array and map descriptors whose stored count is absent now return the established structured error instead of allowing arithmetic exceptions in traversal helpers.

Compatibility

  • Existing term representations, continuation decoding, options, resource limits, and structured error contracts remain compatible.
  • No runtime dependency, NIF, port, or transport API was added.

0.2.0

First Hex.pm release of package atomvm_cbor and OTP application avm_cbor.

Added

  • Partial/deferred decode and opaque descriptor accessors.
  • Deterministic encode and strict deterministic decode validation.
  • Preferred-serialization checks and output selection.
  • Global node and cumulative string-byte budgets.
  • Duplicate-map-key and encoded-key-order validation.
  • Pull-based decode_start/2 and budgeted decode_continue/2 with an opaque explicit-frame continuation and no decoder-internal sleeps or yields.
  • Public RFC, malformed-input, resource-bound, property, coverage, AtomVM, and benchmark runners.

Improved

  • Options are normalized once into fixed tuple/record state instead of repeatedly scanning recursive proplists.
  • Malformed and truncated payloads return structured errors across full and partial paths.
  • Large fixed-cost scalar containers use an independently capped native path; caller-raised limits cannot enlarge its speculative allocation, and every other representation retains the general bounded decoder.
  • Host workloads and three of four attached-device common paths improved against the public v0.1.1 baseline; ESP32-S3 decode/1 measured 2.05% slower.
  • Public term representations remain compatible with the historical API.

Packaging

  • Added Rebar3/Hex metadata for public package atomvm_cbor.
  • Added ExDoc/HexDocs generation with source links targeting tag 0.2.0.
  • The pre-Hex Git revisions were never published to Hex.

v0.1.1 (2026-06-27)

  • Added a dependency-free benchmark runner and initial public benchmark policy.
  • Added public release-check helpers and documentation.

Initial pre-Hex revision (2026-06-27)

Initial public Git source baseline. This version was not published to Hex.pm.