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)

codec

  1. 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. FiberLocal
  5. Lock
  6. Mutex
  7. RwLock
  8. Semaphore
  9. Tasks

error

  1. Exception
  2. NoOptionalValueException
  3. RecoverableException
  4. Throwable
  5. UnrecoverableException

gfx

  1. Sampler
  2. Texture2D

hash

  1. Blake3
  2. DefaultHasher
  3. Hash
  4. MD5
  5. Sha1
  6. Sha256
  7. SipHash
  8. 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. IpAddress
  2. Server
  3. ServerBuilder
  4. SocketAddress
  5. TcpListener
  6. TcpStream
  7. UdpSocket

io / net / dns

  1. Dns

io / net / tls

  1. TlsConnection
  2. TlsListener

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. Decompressor
  3. Encoder
  4. Schema
  5. SchemaEncoder

xpu

  1. Device
  2. KernelBuffer
  3. KernelStream

xpu / mesh

  1. MeshSimplifier

XXHash3

cajeta.hash.XXHash3 — XXH3-64, the fast general-purpose 64-bit non-cryptographic hash: the default backing algorithm for compiler-synthesized Object.hash(), String.hash(), and @AutoHash. Multi-GB/s throughput, with a small-input path (the typical field-hashing case) of a handful of cycles. Pick over SipHash when the input is not attacker-controlled (~10x faster); the 128-bit hash128 family is the modern replacement for MD5-style fingerprints.

int64 h = XXHash3.hashString("hello");   // process-seeded

XXHash3 x = heap XXHash3();
x.writeInt32(7);
x.writeString("title");
int64 digest = x.finish();

Methods

Signature
One-shot statics (64-bit)
static int64 hash(int8[] data, int64 len)Hash of data[0..len) under the per-process seed
static int64 hashSeeded(int8[] data, int64 len, int64 seedArg)Hash under an explicit seedArg, for reproducible digests
static int64 hashString(String s)Hash of a String’s UTF-8 bytes under the per-process seed
static int64 hashStringSeeded(String s, int64 seedArg)Hash of a String’s UTF-8 bytes under an explicit seedArg
One-shot statics (128-bit)
static void hash128Into(int8[] data, int64 len, int64 seedArg, int8[] out16)128-bit digest under seedArg, written as 16 bytes (low64 LE, then high64 LE) into out16 — zero allocation when the buffer is reused
static #int8[] hash128(int8[] data, int64 len)128-bit digest (per-process seed) as a fresh 16-byte array (low64 LE, then high64 LE)
static int64 hash128Low(int8[] data, int64 len)Low 64 bits of the 128-bit digest
static int64 hash128High(int8[] data, int64 len)High 64 bits of the 128-bit digest
static #String hash128Hex(int8[] data, int64 len)128-bit digest as the 32-char canonical lowercase hex string (big-endian high64 then low64)
static #String hash128HexSeeded(int8[] data, int64 len, int64 seedArg)128-bit canonical hex digest under an explicit seedArg
Streaming
XXHash3()Construct a streaming hasher seeded with the per-process random seed
XXHash3(int64 seedArg)Construct with an explicit seed — for digests that reproduce across processes
void update(int8[] data, int64 len)Feed data[0..len) into the running hash state
void reset()Discard accumulated input and re-seed from the original seed
int64 finish()Finalize and return the 64-bit digest of everything written so far
Hasher typed writes
void writeBoolean(boolean v)Feed v as one byte: 1 for true, 0 for false
void writeInt8(int8 v)Append the raw byte of v
void writeInt16(int16 v)Append the 2 raw bytes of v
void writeInt32(int32 v)Append the 4 raw bytes of v
void writeInt64(int64 v)Append the 8 raw bytes of v
void writeUInt8(uint8 v)Append the raw byte of v
void writeUInt16(uint16 v)Append the 2 raw bytes of v
void writeUInt32(uint32 v)Append the 4 raw bytes of v
void writeUInt64(uint64 v)Append the 8 raw bytes of v
void writeFloat32(float32 v)Append the 4 raw bytes of v
void writeFloat64(float64 v)Append the 8 raw bytes of v
void writeBytes(int8[] data)Feed every byte of data
void writeBytesRange(int8[] data, int64 offset, int64 length)Feed length bytes of data (v1: offset is ignored)
void writeString(String s)Feed a String’s UTF-8 bytes
void writeObject(Object obj)Mix in obj.hash() as 8 bytes
SIMD long-path building blocks (public internals of the pure-cajeta long-input path; hash() routes inputs > 240 bytes here)
static #int8[] buildSecret(int64 seed)Build the 192-byte seeded secret (XXH3_initCustomSecret)
static int64 mulFold(int64 a, int64 b)64x64 → 128 multiply, folded: low64(a*b) ^ high64(a*b)
static int64 mix2(int64 a0, int64 a1, int8[] secret, int64 off)Mix two accumulator lanes against the secret
static int64 avalanche(int64 h)Final avalanche mix
static int64 hashLong(int8[] data, int64 len, int64 seed)The long-input driver — bit-identical to the native XXH3_64bits_withSeed long path
static void hashLong128Into(int8[] data, int64 len, int64 seed, int8[] out16)128-bit long-input driver, writing 16 bytes into out16

⚑ = @EntryPoint

See also

Source: docs/stdlib/hash/XXHash3.md · 3 min read · 727 words