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_limiterandGlobalRateLimiter. - Replace
uni_pgandgen_state_machinewith the OTP-provided:pgand:gen_statem. - Make distributed consumption atomic across connected nodes.
- Introduce
GlobalRateLimiter.Limitand exposetry_consume/2,consume/3, andremaining/1operating on limit values built withGlobalRateLimiter.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_limitedrejections. - 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.