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.