Liking cljdoc? Tell your friends :D

com.vadelabs.uid.flake.core

Core implementation for high-performance unique identifiers.

Provides functions for generating and manipulating Flakes - 192-bit identifiers that combine nanosecond timestamps with high-entropy random data to ensure both uniqueness and monotonic ordering properties.

Core implementation for high-performance unique identifiers.

Provides functions for generating and manipulating Flakes - 192-bit identifiers
that combine nanosecond timestamps with high-entropy random data to ensure
both uniqueness and monotonic ordering properties.
raw docstring

com.vadelabs.uid.flake.impl

Internal implementation of high-performance time-ordered Flake IDs.

Architecture

A Flake is a 192-bit (24-byte) identifier:

  • 64-bit nanosecond-precision timestamp
  • 128-bit random component (two 64-bit longs)

Encoding

String representation uses custom base-64:

  • Alphabet: -0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
  • 24 bytes → 32 characters
  • Preserves lexical ordering
  • URL-safe (no +, / characters)

Thread Safety

  • ThreadLocal RNG for lock-free generation
  • Nanoclock provides monotonicity within thread
  • Cross-thread ordering via timestamp component

Performance

  • Generation: ~300ns (no locks, pure CPU)
  • Encoding: ~500ns (custom algorithm)
  • Parsing: ~600ns (with validation)

This is an internal namespace. Use com.vadelabs.uid.flake.core for public API.

Implementation inspired by μ/log (mulog) by Bruno Bonacci: https://github.com/BrunoBonacci/mulog/blob/master/mulog-core/src/com/brunobonacci/mulog/flakes.clj Licensed under Apache License 2.0

Internal implementation of high-performance time-ordered Flake IDs.

## Architecture

A Flake is a 192-bit (24-byte) identifier:
- 64-bit nanosecond-precision timestamp
- 128-bit random component (two 64-bit longs)

## Encoding

String representation uses custom base-64:
- Alphabet: -0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
- 24 bytes → 32 characters
- Preserves lexical ordering
- URL-safe (no +, / characters)

## Thread Safety

- ThreadLocal RNG for lock-free generation
- Nanoclock provides monotonicity within thread
- Cross-thread ordering via timestamp component

## Performance

- Generation: ~300ns (no locks, pure CPU)
- Encoding: ~500ns (custom algorithm)
- Parsing: ~600ns (with validation)

This is an internal namespace. Use com.vadelabs.uid.flake.core for public API.

Implementation inspired by μ/log (mulog) by Bruno Bonacci:
https://github.com/BrunoBonacci/mulog/blob/master/mulog-core/src/com/brunobonacci/mulog/flakes.clj
Licensed under Apache License 2.0
raw docstring

com.vadelabs.uid.flake.nanoclock

High-precision timestamp provider combining wall clock and monotonic timing.

This implementation anchors to the system wall clock at initialization, then uses monotonic timing to provide nanosecond-precision timestamps that maintain consistent intervals.

Key characteristics:

  • Nanosecond resolution for timestamp generation
  • Monotonic properties within process lifetime
  • Wall-clock anchored for cross-system compatibility
  • Single global instance for consistency

Note: This is not a high-precision wall clock replacement. While it provides nanosecond granularity, it can drift from true wall time over extended periods as monotonic clocks don't adjust for NTP synchronization.

Timestamp range extends to approximately year 2262 when using nanosecond precision in a long value.

High-precision timestamp provider combining wall clock and monotonic timing.

This implementation anchors to the system wall clock at initialization,
then uses monotonic timing to provide nanosecond-precision timestamps
that maintain consistent intervals.

Key characteristics:
- Nanosecond resolution for timestamp generation
- Monotonic properties within process lifetime
- Wall-clock anchored for cross-system compatibility
- Single global instance for consistency

Note: This is not a high-precision wall clock replacement. While it provides
nanosecond granularity, it can drift from true wall time over extended periods
as monotonic clocks don't adjust for NTP synchronization.

Timestamp range extends to approximately year 2262 when using nanosecond
precision in a long value.
raw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close