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

Metadata

Metadata

Assignees

Labels

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

Type

Fields

No fields configured for Task.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions