Changelog
Changelog
Notable changes to distkit, newest first.
A high-level history of distkit releases. For the full commit log, see the GitHub releases.
0.7.0 — 2026-08-08
- Breaking: upgraded the optional
distkit::trypemare-export from Trypema 1 to Trypema 2. The monolithicRateLimiterand option structs are replaced by independently constructedLocalRateLimiterProvider,RedisRateLimiterProvider, andHybridRateLimiterProvidervalues using the sharedRateLimiterBuildertrait. - Configuration now uses semantic, unit-aware types:
WindowSize,BucketSize,SuppressionFactorCachePeriod, andSyncIntervalreplace their unit-suffixed v1 counterparts. RateLimitnow uses constructors such asper_second, and rejected decisions exposeretry_after: Durationinstead ofretry_after_ms.- The
trypemafeature name anddistkit::trypemamodule path are unchanged. See the rate-limiting migration guide.
0.6.0 — 2026-06-26
- Breaking: the guard inspectors
get_stateandget_on_attemptare no longerasync. Both only read locally cached state (anAtomicBooland a storedusize) and never touched Redis, so theasyncwas unnecessary. Drop the.awaitat call sites:guard.get_state()andguard.get_on_attempt(). AffectsMutexGuard,RwLockReadGuard, andRwLockWriteGuard.
0.5.3 — 2026-06-17
- New bounded acquisition methods that source the poll interval from the lock's configured
retry_intervalinstead of taking it per call:try_lock_with_timeout/try_read_with_timeout/try_write_with_timeouttake only atimeoutand returnLockError::Timeoutif the deadline passes.try_lock_with_retries/try_read_with_retries/try_write_with_retriesbound by attempt count instead of time:max_retriesretries after the initial attempt, returning the newLockError::RetriesExhausted { retries }when every attempt fails.
- Deprecated
try_lock_for/try_read_for/try_write_for(the(timeout, retry_interval)forms) in favor of the*_with_timeoutmethods.
0.5.2 — 2026-06-17
- Lock guards now expose
get_on_attempt: the zero-based acquire poll that obtained the lock —0when the first poll succeeded, higher when the acquire waited through contention (a one-shottry_*is always0). Available onMutexGuard,RwLockReadGuard, andRwLockWriteGuard. Useful for contention metrics and backoff tuning.
0.5.1 — 2026-06-16
- Documentation updates.
0.5.0 — 2026-06-15
The distributed locks release.
- New
lockfeature: Redis-backedMutexand a writer-preferringRwLock, mirroringtokio::sync. - RAII guards with background lease renewal (every
ttl/3) and an awaitablerelease(). - Unified
LockGuardState(Acquired/Lost/Released) across all guard types. - TTL and owner are validated up front before any Redis operation.
- Added lock benchmarks.
0.4.0 — 2026-04-13
- Stability and internal refinements across counters and instance-aware counters.
0.3.0 — 2026-04-13
- Continued hardening of the counter and instance-aware counter paths.
0.2.3 — 2026-04-08
- Added the
fullfeature flag to enable every primitive at once.
0.2.0 — 2026-04-03
- Added instance-aware counters (
StrictInstanceAwareCounter,LaxInstanceAwareCounter) with automatic dead-instance cleanup. - Added the
trypemafeature: sliding-window rate limiting re-exported underdistkit::trypema. counterandinstance-aware-counterare the default features.
0.1.0 — 2026-03-29
- Initial release: distributed
StrictCounterandLaxCounter, backed by Redis.

