v1.4.0
Changes since v1.3.1
2b6c917 docs: fix v1.4.0 release-record gaps found in review
c51586e chore(release): date-stamp v1.4.0 changelog (2026-06-27)
fb5e324 docs: complete v1.4.0 changelog, fix doc refs, revalidate perf at HEAD
12d6a80 docs(wing): note per-IP cap must key on socket peer, not XFF
ddc48b0 feat(resource): input validation + OpenAPI 3.1 for auto-CRUD
2e67c20 fix(prometheus): defer in-flight gauge Dec so a panic can't leak it
1b282e4 fix(middleware): Logger records real latency (was always 0)
2ba7676 feat(wing): accept-side DoS limits — connection cap, per-IP, accept-rate
8b02738 test(bench): obs enabled-path A/B + HPA note; drop dead response-side traceparent inject (D3)
f124309 fix(wing): close takeover File on shutdown to prevent fd double-close
927c066 fix(wing): shared takeover body budget + pipelined-after-body byte preservation
8c77fc4 feat: typed-handler test client + OpenAPI 3.1 polish (D4)
1348c4e feat: turnkey observability (contrib/observability) + WithLogEnricher core seam
88acc18 fix(wing): XFF dedicated fields and segmentation-independent 431
3fe1fc2 Wing: enforce request-size contract (BodyLimit/HeaderLimit/TrustProxy + 413/431/501)
4e9d300 ci: enforce doc correctness for exported APIs and current guides
1eed571 bench: add realistic API profile route across kruda/fiber/actix
c57decb feat: opt-in RFC 9457 problem+json error responses
Performance
Run benchmarks: go test -bench=. -benchmem -count=5 -tags kruda_stdjson ./bench/...
What's Changed
- feat: opt-in RFC 9457 problem+json error responses by @wtigero in #131
- bench: add realistic API profile route across kruda/fiber/actix by @wtigero in #132
- ci: enforce doc correctness for exported APIs and current guides by @wtigero in #133
- Wing: enforce request-size contract (BodyLimit/HeaderLimit/TrustProxy + 413/431/501) by @wtigero in #134
- Wing: X-Forwarded-For/X-Real-IP dedicated fields + 431 for oversized header line by @wtigero in #135
- feat: turnkey observability (contrib/observability) + WithLogEnricher core seam by @wtigero in #136
- feat: typed-handler test client + OpenAPI 3.1 polish (D4) by @wtigero in #137
- Wing: shared takeover body budget + pipelined-after-body byte preservation by @wtigero in #138
- fix(wing): close takeover File on shutdown to prevent fd double-close by @wtigero in #139
- test(bench): observability enabled-path A/B + quantified HPA note (D3) by @wtigero in #140
- feat(wing): accept-side DoS limits (connection cap, per-IP, accept-rate) by @wtigero in #141
- fix(middleware): Logger records real latency (was always 0) by @wtigero in #142
- fix(prometheus): defer in-flight gauge Dec so a panic can't leak it by @wtigero in #143
- feat(resource): input validation + OpenAPI 3.1 for auto-CRUD by @wtigero in #144
- docs(wing): note per-IP cap must key on socket peer, not XFF by @wtigero in #145
- docs(changelog): complete v1.4.0 entries + fix stale counts and tag refs by @wtigero in #146
- chore(release): date-stamp v1.4.0 changelog by @wtigero in #147
- docs: fix v1.4.0 release-record gaps found in review by @wtigero in #148
Full Changelog: v1.3.1...v1.4.0