docs / stdlib / hash

Stdlib index
  1. Overview
  1. Captured-borrow migration worklist (3.3.3)
  2. Owned-bind migration worklist (8.2.7)
  3. Return-side title audit — the ride-through enumeration
  4. stdlib ownership audit
  5. stdlib ownership dispositions (plan 1.3.1 / 4.3.1)

aot

  1. Components
  2. Scope
  3. Scoped

codec

  1. Base32
  2. Base64

codec / csv

  1. Csv

codec / json

  1. Json

collection

  1. ArrayList
  2. BPlusTree
  3. Cache
  4. Collectors
  5. HashMap
  6. HashSet
  7. Heap
  8. ImmutableList
  9. ImmutableMap
  10. ImmutableSet
  11. LinkedList
  12. RedBlackTree
  13. Sort

collection / ltm

  1. LtmBPlusTree

concurrent

  1. AtomicInt32
  2. AtomicInt64
  3. Channel
  4. Fiber
  5. FiberLocal
  6. Lock
  7. Mutex
  8. RwLock
  9. Semaphore
  10. Tasks

error

  1. Exception
  2. NoOptionalValueException
  3. NotProvidedException
  4. RecoverableException
  5. ScopedBuildFailedException
  6. ScopeNotActiveException
  7. Throwable
  8. UnrecoverableException

gfx

  1. Sampler
  2. Texture2D

hash

  1. DefaultHasher
  2. Hash
  3. SipHash
  4. XXHash3

ifx

  1. BackendRegistry
  2. Window

io

  1. Buffer

io / file

  1. File
  2. FileInfo
  3. FileReader
  4. FileWriter
  5. Path
  6. Watcher

io / net

  1. BufferPool
  2. ByteBuffer
  3. IpAddress
  4. Server
  5. ServerBuilder
  6. SocketAddress
  7. TcpListener
  8. TcpStream
  9. UdpSocket

io / net / dns

  1. Dns

io / net / uri

  1. Uri
  2. UriBuilder

lang

  1. Guid
  2. Math
  3. Optional
  4. Pair
  5. Slice
  6. String
  7. StringBuilder

lang / stream

  1. ArrayStream
  2. Stream

math

  1. Camera
  2. Color
  3. DType
  4. Ray
  5. Rotation
  6. Tensor
  7. Transform

math / fft

  1. Fft

math / linalg

  1. LinAlg

math / npio

  1. Npy

math / poly

  1. Poly

math / random

  1. Generator

math / stats

  1. Stats

nucleo

  1. Columns — the Arrow-laid-out substrate
  2. Fused tensor expressions — Fuse
  3. Table — the lazy, typed dataframe
  4. Tape — define-by-run autograd
  5. Transform intrinsics — Grad, Vmap, Jit

process

  1. Command
  2. Process

reflect

  1. Class

search / distance

  1. Distance

search / fuzzy

  1. Matcher

search / ngram

  1. Index

session

  1. PackageInstallException
  2. Packages

time

  1. Clock
  2. DateTimeFormatter
  3. Duration
  4. Instant
  5. LocalDate
  6. LocalDateTime
  7. LocalTime
  8. Period
  9. ZonedDateTime
  10. ZoneId
  11. ZoneOffset

wire

  1. Compressor
  2. CompressStream
  3. DecompressionLimitException
  4. Decompressor
  5. Encoder
  6. Schema
  7. SchemaEncoder

xpu

  1. Device
  2. KernelBuffer
  3. KernelStream
  4. KernelTimer

xpu / mesh

  1. MeshSimplifier

DefaultHasher

cajeta.hash.DefaultHasher — the hasher the compiler-synthesized Object.hash() uses under the hood: process-seeded XXH3-64. @AutoHash field-folding routes through this same shape, and String.hash() does too. Internally it is a XXHash3 constructed with the process seed, exposed as a distinct class so the compiler couples to DefaultHasher rather than to a specific algorithm. Construct one to compose an object’s structural hash with extra context, or with an explicit seed to reproduce a digest computed in another process (get the seed from Hash.processSeed()).

DefaultHasher hasher = heap DefaultHasher();
Object order = heap Object();
hasher.writeObject(order);        // structural fold of the object
hasher.writeString("tenant-42");  // extra context
int64 digest = hasher.finish();

Methods

Signature
DefaultHasher() ⚑Construct with the per-process seed — digests match the compiler-synthesized Object.hash()
DefaultHasher(int64 seedArg) ⚑Construct with an explicit seed — pass a seed captured from Hash in another process to reproduce its digest
void writeBoolean(boolean v)Fold v into the backing XXHash3 as one byte: 1 for true, 0 for false
void writeInt8(int8 v)Fold the raw byte of v
void writeInt16(int16 v)Fold the 2 raw bytes of v
void writeInt32(int32 v)Fold the 4 raw bytes of v
void writeInt64(int64 v)Fold the 8 raw bytes of v
void writeUInt8(uint8 v)Fold the raw byte of v
void writeUInt16(uint16 v)Fold the 2 raw bytes of v
void writeUInt32(uint32 v)Fold the 4 raw bytes of v
void writeUInt64(uint64 v)Fold the 8 raw bytes of v
void writeFloat32(float32 v)Fold the 4 raw bytes of v
void writeFloat64(float64 v)Fold the 8 raw bytes of v
void writeBytes(int8[] data)Fold every byte of data
void writeBytesRange(int8[] data, int64 offset, int64 length)Fold length bytes of data
void writeString(String s)Fold the UTF-8 content of the String (same shape as String.hash())
void writeObject(Object obj)Fold the structural hash of the Object — the @AutoHash field-folding shape
int64 finish()Close the stream and return the 64-bit digest of everything written so far

⚑ = @EntryPoint

See also

Source: docs/stdlib/hash/DefaultHasher.md · 2 min read · 378 words