gleamunison/identity
Types
Opaque hash type. No access to the inner bytes outside this module.
pub opaque type Hash
Values
pub fn hash_bytes(contents: BitArray) -> Hash
Compute a SHA-256 hash from arbitrary bytes.
pub fn hash_from_bytes(contents: BitArray) -> Hash
pub fn hash_to_bytes(h: Hash) -> BitArray
pub fn hash_to_debug_string(h: Hash) -> String
Produce a hex string for display/debugging.
pub fn hash_to_short_string(h: Hash) -> String
Produce a short hash prefix for display.
pub fn name_ref(name: String) -> DefinitionRef
The ref a name derives to: the SHA-256 of its UTF-8 bytes. Elaboration wires intra-batch references this way, so every layer that resolves a name to a ref must agree on these bytes - changing the derivation orphans every definition already stored under the old one.
This lives with the other hash authorities rather than in the REPL evaluator, where it grew first and which the read model, the index and the db layer were importing purely to hash a name.
pub fn parse_ref_hex(
hex: String,
) -> Result(DefinitionRef, String)
Parse an external SHA-256 reference before it reaches storage or transport.
pub fn ref_hex(ref: DefinitionRef) -> String
The canonical external representation of a definition reference.
pub fn runtime_module_name(ref: DefinitionRef) -> String
Runtime module identity: “m_” plus the final eight hash digits.
pub fn short_hash_hex(hex: String) -> String
Shorten an already-rendered hash without reparsing display data.
pub fn short_ref_hex(ref: DefinitionRef) -> String
The canonical short display of a definition reference.