Current section
Files
Jump to
Current section
Files
global_rate_limiter
CHANGELOG.md
CHANGELOG.md
# Changelog
## 0.2.0 - 2026-07-30
`global_rate_limiter` continues the library previously published as
`dist_limiter`. It intentionally does not provide compatibility modules for the
old package or namespace.
- Rename the package and module namespace to `global_rate_limiter` and
`GlobalRateLimiter`.
- Replace `uni_pg` and `gen_state_machine` with the OTP-provided `:pg` and
`:gen_statem`.
- Make distributed consumption atomic across connected nodes.
- Introduce `GlobalRateLimiter.Limit` and expose `try_consume/2`, `consume/3`,
and `remaining/1` operating on limit values built with
`GlobalRateLimiter.Limit.new/2`.
- Add monitored waiting with local FIFO ordering and caller-owned timeouts,
handled by one waiter process per limit per node that stops when its queue
empties.
- Return millisecond retry hints with `:rate_limited` rejections.
- Distinguish permanently impossible counts from temporary rate-limit
exhaustion.
- Require Elixir 1.18 or later and Erlang/OTP 25 or later.
- Add current CI coverage, package usage rules, and expanded operational
documentation.