Skip to main content

Module canon

Module canon 

Source
Expand description

Canonical, deterministic serialization for cache-key hashing.

Cache keys must be identical across processes, machines, and library versions. Ordinary serializer output is not: serde_json encodes HashMaps in random iteration order, and pickle-style formats depend on traversal order and library version. This module produces a canonical CBOR encoding (RFC 8949 §4.2 core deterministic encoding) with dCBOR-style float canonicalization:

  • map keys sorted bytewise by their encoded form (duplicates are an error)
  • a single canonical NaN bit pattern
  • -0.0 normalized to +0.0

Use canonical_bytes / hash_canonical for anything that feeds a CacheKey; never hash raw serializer output.

Functions§

canonical_bytes
Encode value to canonical CBOR bytes.
hash_canonical
Hash value’s canonical CBOR encoding.