nuke/test
Jason Cameron b2b2679bae
perf: replace cidranger with bart for significant performance improvements (#675)
* feat: replace cidranger with bart improving performance by 3-20x

Signed-off-by: Jason Cameron <git@jasoncameron.dev>

* perf: replace cidranger with bart for IP range checking

- Replace cidranger.Ranger with bart.Lite in RemoteAddrChecker
- Use netip.ParsePrefix instead of net.ParseCIDR for modern IP handling
- Improve performance: 3-20x faster lookups with zero heap allocations
- Update imports to use github.com/gaissmai/bart and net/netip
- Remove cidranger dependency from go.mod

Benchmark results:
- IPv4 lookups: 4x faster (15.58ns vs 63.25ns, 0 vs 2 allocs)
- IPv6 lookups: 3x faster (26.51ns vs 76.96ns, 0 vs 2 allocs)
- Insertions: 20x faster (976ns vs 19,191ns)
- Large tables: 14x faster (5.2ns vs 74.85ns)

* docs: clarify CHANGELOG to not give false impressions

Signed-off-by: Jason Cameron <git@jasoncameron.dev>

* perf: optimize string concatenation in RemoteAddrChecker hash generation

Replace fmt.Fprintln with strings.Join for 7x faster performance:
- Before: 935.1 ns/op, 784 B/op, 22 allocs/op
- After: 133.2 ns/op, 192 B/op, 1 alloc/op

The hash is used for JWT cookie validation and error code generation.
Comma separation provides the same deterministic uniqueness as newlines
but with significantly better performance during policy initialization.

* chore: remove accidentally commited string benchmark

Signed-off-by: Jason Cameron <git@jasoncameron.dev>

* style: apply Copilot suggestions

Signed-off-by: Jason Cameron <git@jasoncameron.dev>

* fix: reference the right var name

i cannot write a merge commit

Signed-off-by: Jason Cameron <git@jasoncameron.dev>

---------

Signed-off-by: Jason Cameron <git@jasoncameron.dev>
2025-06-17 11:57:55 -04:00
..
anubis_configs feat(config): add ability to customize HTTP status codes Anubis returns (#393) 2025-04-29 15:13:44 -04:00
caddy docs: add caddy docs (#423) 2025-05-02 19:15:05 +00:00
cmd feat: more elaborate XFF compute (#350) 2025-04-25 11:59:55 +00:00
k8s Add check endpoint which can be used with nginx' auth_request function (#266) 2025-04-25 17:38:02 +00:00
nginx-external-auth Add check endpoint which can be used with nginx' auth_request function (#266) 2025-04-25 17:38:02 +00:00
pki Add check endpoint which can be used with nginx' auth_request function (#266) 2025-04-25 17:38:02 +00:00
shared/www Add check endpoint which can be used with nginx' auth_request function (#266) 2025-04-25 17:38:02 +00:00
ssh-ci test: introduce SSH based CI for non-native test hosts (#644) 2025-06-11 12:50:01 -04:00
unix-socket-xff feat(config): add ability to customize HTTP status codes Anubis returns (#393) 2025-04-29 15:13:44 -04:00
.gitignore feat: more elaborate XFF compute (#350) 2025-04-25 11:59:55 +00:00
go.mod perf: replace cidranger with bart for significant performance improvements (#675) 2025-06-17 11:57:55 -04:00
go.sum perf: replace cidranger with bart for significant performance improvements (#675) 2025-06-17 11:57:55 -04:00