Skip to content

Releases

v0.5.0

Choose a tag to compare

@bakhod1r bakhod1r released this 29 Sep 06:38

Core (stdlib only):

  • sqlip: database/sql Scanner/Valuer — Addr, Prefix (Postgres inet/cidr, text), BinaryAddr (MySQL VARBINARY(16))
  • cloud: fetch AWS / Google Cloud / Cloudflare published ranges, Index.Lookup → provider/region/service
  • httpip.Resolve: transport-agnostic client IP resolution
  • Fix: ParseHost rejected peers with port 0 (in-memory/unix listeners)

New modules (separate go.mod, core stays dependency-free), tagged integrations/<name>/v0.1.0:

  • integrations/ginipx, integrations/echoipx, integrations/fiberipx (Fiber v3): ClientIP, Restrict, FromContext
  • integrations/geoip: MaxMind MMDB Country, ASN, Lookup (databases not bundled)

100% statement coverage in every package and module, enforced in CI.

🤖 Generated with Claude Code

v0.4.0

Choose a tag to compare

@bakhod1r bakhod1r released this 29 Sep 05:46
  • FindOverlaps, BuildTree: overlap report and containment hierarchy
  • RFC2317Zone, RFC2317CNAMEs: classless reverse delegation
  • IPSet.ContainsBatch, Table.LookupBatch
  • New ipx/k8s package: cluster network validation, node podCIDRs, service IPs (stdlib only)
  • IPSet.Contains 2x faster (on par with netipx); Range.Prefixes 26% faster than netipx
  • bench/ module comparing with go4.org/netipx
  • 100% statement coverage in all packages, enforced in CI

🤖 Generated with Claude Code

v0.3.0

Choose a tag to compare

@bakhod1r bakhod1r released this 29 Sep 05:02
  • CLI: ipx plan <prefix> <len|hosts:N>... (VLSM), ipx alloc <prefix> <n> [--reserve ip]...
  • CLI: --json output for every command
  • golangci-lint v2 config + CI lint job

🤖 Generated with Claude Code

v0.2.1

Choose a tag to compare

@bakhod1r bakhod1r released this 29 Sep 04:46
  • Allocator: O(log n) scan via sorted taken ranges (near-full pools no longer walk every address)
  • Table.Lookup: precomputed node masks (~92→86 ns/op, 0 allocs)
  • MIT license
  • Pages workflow no longer cancels in-progress deploys

🤖 Generated with Claude Code

v0.2.0

Choose a tag to compare

@bakhod1r bakhod1r released this 29 Sep 04:41
  • SafeDialer: SSRF-safe DialContext — checks every resolved IP, dials the checked IP (no DNS rebinding)
  • Table: path-compressed trie, collapses on delete (fuzzed against linear scan)
  • IsInternal / IsCloudMetadata: zero allocations
  • IPSet.ContainsRange O(log n); IPSet Text/JSON; Range binary encoding
  • Testable examples, CI (race + fuzz), website: https://bakhod1r.github.io/ipx/

🤖 Generated with Claude Code

v0.1.0

Choose a tag to compare

@bakhod1r bakhod1r released this 29 Sep 04:28

Initial release.

  • Parsing/validation, IANA special-purpose classification
  • 128-bit arithmetic, CIDR/subnet math, VLSM planning
  • Range, immutable IPSet algebra, aggregation/subtraction
  • LPM Table/SyncTable, ACL, Allocator
  • Reverse DNS, endpoints, SSRF checks (IsInternal)
  • httpip: trusted-proxy client IP + middleware
  • ipx CLI
go get github.com/bakhod1r/ipx@v0.1.0
go install github.com/bakhod1r/ipx/cmd/ipx@v0.1.0

🤖 Generated with Claude Code

integrations/ginipx v0.1.1

Choose a tag to compare

@bakhod1r bakhod1r released this 29 Sep 07:02
6ba00c6
  • Bump indirect deps: golang.org/x/crypto 0.52.0, x/net 0.54.0, x/sys 0.45.0, x/text 0.37.0 (#1)
go get github.com/bakhod1r/ipx/integrations/ginipx@v0.1.1

🤖 Generated with Claude Code