iprange (2.0.0) - 2026-04-04

 - feature: full IPv6 support with --ipv4/-4 and --ipv6/-6 family flags
 - feature: IPv4 input normalized to ::ffff:x.x.x.x in IPv6 mode
 - feature: IPv4-mapped IPv6 converted back to IPv4 in IPv4 mode
 - feature: IPv6 DNS resolution (both AAAA and A records)
 - feature: IPv6 binary format v2.0 with family-aware header
 - feature: --has-ipv6 feature detection flag
 - feature: @filename file list and @directory loading
 - feature: --has-filelist-loading and --has-directory-loading flags
 - feature: -O3 and LTO enabled for GCC builds
 - bugfix: UINT32_MAX boundary overflow in ipset_added_entry() and
   ipset_optimize() — ranges at 255.255.255.255 no longer incorrectly
   merge with ranges at 0.0.0.0 (#28)
 - bugfix: IPv6 diff algorithm stale variables at address space boundary
 - bugfix: strict numeric parsing for --ipset-reduce value (#24)
 - refactor: DNS thread pool extracted into ipset_dns.c/h (IPv4) and
   ipset6_dns.c/h (IPv6)
 - refactor: load files are now pure text parsers
 - docs: comprehensive README, wiki pages for every operation with
   verified examples
 - tests: 93 CLI tests (22 new IPv6), 7 build, 5 sanitizer, 6 unit, 1 TSAN

iprange (1.0.4) - 2017-09-16

 - bugfix: fix invalid size of ipset while reducing non-optimized ipsets #18

iprange (1.0.3) - 2016-10-16

 - speedup: used high speed mutex instead of read/write locks, for speed

iprange (1.0.2) - 2015-12-23

 - bugfix: last batch of dns host resolutions were being lost from results

iprange (1.0.1) - 2015-11-28

 - resolved a case with dns resolution, where all threads were waiting
   without resolving the IPs
 - packaging improvements

iprange (1.0.0) - 2015-11-15

2015-11-12 Costa Tsaousis (costa@tsaousis.gr)
 - added logic to retry temporary DNS failures
2015-11-11 Costa Tsaousis (costa@tsaousis.gr)
 - added --diff to find the differences between ipsets
2015-11-05 Costa Tsaousis (costa@tsaousis.gr)
 - added threaded DNS resolution of hostnames
2015-11-05 Costa Tsaousis (costa@tsaousis.gr)
 - better error handling when parsing input files
 - optimized printing using internal ip2str() implementation
 - added DNS resolution of hostnames
2015-06-06 Costa Tsaousis (costa@tsaousis.gr)
 - added support for loading multiple sets
 - added support for merging multiple files
 - added support for comparing ipsets (all-to-all, one-to-all)
 - added support for parsing IP ranges from the input file
   (much like -s did for a single range)
 - added support for parsing netmasks
 - added support for min prefix generated
 - added support for generated only specific prefixes
 - added support for reducing the prefixes for iptables ipsets
 - the output is now always optimized (reduced / merged)
 - removed option -s (convert a single IP range to CIDR)
 - added support for finding the common IPs in multiple files
 - added timings
 - added verbose output
2015-05-31 Costa Tsaousis (costa@tsaousis.gr)
 - added -C option to report count of unique IPs
 - some optimizations to speed it up by 10% - 20%
2004-10-16 Paul Townsend (alpha alpha beta at purdue dot edu)
 - more general input/output formatting
2003 Gabriel L. Somlo, the original author of iprange.c core
 - found at http://www.cs.colostate.edu/~somlo/iprange.c
