* 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> |
||
|---|---|---|
| .. | ||
| advice.md | ||
| allow.txt | ||
| candidate.patterns | ||
| excludes.txt | ||
| expect.txt | ||
| line_forbidden.patterns | ||
| patterns.txt | ||
| README.md | ||
| reject.txt | ||
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.