nuke/.github/actions/spelling
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
..
advice.md ci: add check-spelling (#462) 2025-05-09 17:02:41 +00:00
allow.txt perf: replace cidranger with bart for significant performance improvements (#675) 2025-06-17 11:57:55 -04:00
candidate.patterns ci: add check-spelling (#462) 2025-05-09 17:02:41 +00:00
excludes.txt perf: replace cidranger with bart for significant performance improvements (#675) 2025-06-17 11:57:55 -04:00
expect.txt perf: Replace internal SHA256 hashing with xxhash for 4-6x performance improvement (#676) 2025-06-16 22:53:53 -04:00
line_forbidden.patterns Bump AI-robots.txt rules to version 1.31 (#538) 2025-05-23 16:15:12 +00:00
patterns.txt perf: replace cidranger with bart for significant performance improvements (#675) 2025-06-17 11:57:55 -04:00
README.md ci: add check-spelling (#462) 2025-05-09 17:02:41 +00:00
reject.txt ci: add check-spelling (#462) 2025-05-09 17:02:41 +00:00

check-spelling/check-spelling configuration

File Purpose Format Info
dictionary.txt Replacement dictionary (creating this file will override the default dictionary) one word per line dictionary
allow.txt Add words to the dictionary one word per line (only letters and 's allowed) allow
reject.txt Remove words from the dictionary (after allow) grep pattern matching whole dictionary words reject
excludes.txt Files to ignore entirely perl regular expression excludes
only.txt Only check matching files (applied after excludes) perl regular expression only
patterns.txt Patterns to ignore from checked lines perl regular expression (order matters, first match wins) patterns
candidate.patterns Patterns that might be worth adding to patterns.txt perl regular expression with optional comment block introductions (all matches will be suggested) candidates
line_forbidden.patterns Patterns to flag in checked lines perl regular expression (order matters, first match wins) patterns
expect.txt Expected words that aren't in the dictionary one word per line (sorted, alphabetically) expect
advice.md Supplement for GitHub comment when unrecognized words are found GitHub Markdown advice

Note: you can replace any of these files with a directory by the same name (minus the suffix) and then include multiple files inside that directory (with that suffix) to merge multiple files together.