Skip to content

Replace sulky-ulid with ulid-creator #1516

Description

@ricardozanini

Current State

  • Using de.huxhorn.sulky:de.huxhorn.sulky.ulid:8.3.0
  • Last maintained: 2021 (3+ years stale)
  • Performance: ~1.26M ops/sec, synchronized (lock contention at high concurrency)

Problem

  1. Unmaintained: No updates since 2021, maintainer unresponsive
  2. Lock contention: synchronized methods bottleneck at >16 threads
  3. Risk: Potential Java compatibility issues in future versions

Proposal

Switch to com.github.f4b6a3:ulid-creator:5.2.3

Benefits

  • ✅ Zero dependencies (same as current - no new deps)
  • ✅ 3-10x faster (4.7M-100M ops/sec depending on mode)
  • ✅ No lock contention (ThreadLocal-based, scales linearly)
  • ✅ Actively maintained (latest release: 2026)
  • ✅ Drop-in compatible (same ULID format, no breaking changes)
  • ✅ Small overhead: +12 KB (18 KB vs 6 KB jar size)

Implementation

<!-- Replace -->
<dependency>
    <groupId>de.huxhorn.sulky</groupId>
    <artifactId>de.huxhorn.sulky.ulid</artifactId>
    <version>8.3.0</version>
</dependency>

<!-- With -->
<dependency>
    <groupId>com.github.f4b6a3</groupId>
    <artifactId>ulid-creator</artifactId>
    <version>5.2.3</version>
</dependency>

Code changes minimal - both produce standard ULID format.

References

Activity

  1. self-assigned this
    on Jul 2, 2026
  2. added a commit that references this issue on Jul 6, 2026
    6a2e124
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

dependenciesPull requests that update a dependency filejavaPull requests that update java codespec:1.0.0

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions