NewYour coding agent can read the release notes before it upgrades.Set up the MCP server β
Go modules
Go modules, #2953 by repository stars
Latest stable
v0.16.1
Last release 1 months ago
08 Oct 2026
Ships fairly regularly
a new release about every 3 months
Some releases are documented
notes for 10 of 27 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
45 releases Β· first in 2020
Drag across the ruler to compare, or tap a release to open it.
Nothing published for this version
Deprecate spoofable RealIP rate-limiting; add LimitBy + KeyFromContext and modernize the key API by @VojtechVitek in #61
Full Changelog: v0.15.0...v0.16.0
Your coding agent can read these notes before it upgrades. Set up the MCP server β
Nothing published for this version
Nothing published for this version
Nothing published for this version
upgrade to xxhash v3
Nothing published for this version
Useful to create compounds with a custom prefix
Useful to create compounds with a custom prefix
Nothing published for this version
Implement rate-limiting from HTTP handler (e.g. by request payload) by @VojtechVitek in #42
// Rate-limiter for login endpoint.
loginRateLimiter := httprate.NewRateLimiter(5, time.Minute)
r.Post("/login", func(w http.ResponseWriter, r *http.Request) {
var payload struct {
Username string `json:"username"`
Password string `json:"password"`
}
err := json.NewDecoder(r.Body).Decode(&payload)
if err != nil || payload.Username == "" || payload.Password == "" {
w.WriteHeader(400)
return
}
// Rate-limit login at 5 req/min.
if loginRateLimiter.RespondOnLimit(w, r, payload.Username) {
return
}
w.Write([]byte("login at 5 req/min\n"))
})Full Changelog: v0.12.1...v0.14.0
Nothing published for this version
Export http.RateLimiter type by @VojtechVitek in #43 so users can pass *http.RateLimiter (or save in their server struct) and use the new .OnLimit() f
*http.RateLimiter (or save in their server struct) and use the new .OnLimit() feature from #42.Full Changelog: v0.13.0...v0.13.1
Add support to rate-limit by custom key from HTTP handler (e.g. by request payload fields)
Full Changelog: v0.13.0...v0.13.0
// Rate-limiter for login endpoint.
loginRateLimiter := httprate.NewRateLimiter(5, time.Minute)
r.Post("/login", func(w http.ResponseWriter, r *http.Request) {
var payload struct {
Username string `json:"username"`
Password string `json:"password"`
}
err := json.NewDecoder(r.Body).Decode(&payload)
if err != nil || payload.Username == "" || payload.Password == "" {
w.WriteHeader(400)
return
}
// Rate-limit login at 5 req/min.
if loginRateLimiter.OnLimit(w, r, payload.Username) {
return
}
w.Write([]byte("login at 5 req/min\n"))
})Implement httprate.WithErrorHandler() by @VojtechVitek in #41
Full Changelog: v0.12.0...v0.12.1
Nothing published for this version
Nothing published for this version
Remove unused func argument by @VojtechVitek in #36
Full Changelog: v0.11.0...v0.12.0
Nothing published for this version
Reduces memory footprint and allocations by 2x π
$ benchstat old.txt new.txt
goos: darwin
goarch: arm64
pkg: github.com/go-chi/httprate
β old.txt β new.txt β
β sec/op β sec/op vs base β
LocalCounter-8 34.65m Β± 3% 13.50m Β± 2% -61.04% (p=0.000 n=10)
β old.txt β new.txt β
β B/op β B/op vs base β
LocalCounter-8 4.384Mi Β± 0% 2.846Mi Β± 0% -35.07% (p=0.000 n=10)
β old.txt β new.txt β
β allocs/op β allocs/op vs base β
LocalCounter-8 253.9k Β± 0% 121.6k Β± 0% -52.12% (p=0.000 n=10)
Add tests for X-RateLimit-* headers, Fix X-RateLimit-Remaining headerβ¦
Add tests for X-RateLimit-* headers, Fix X-RateLimit-Remaining headerβ¦
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.