Changes for version 4.080_01 - 2026-09-22 (TRIAL RELEASE)
- Validate masklen and number in coalesce, croak on bad arguments (GH#40)
- Fix coalesce on subclass objects (GH#38)
- Fix coalesce to count subnet addresses, not usable hosts (GH#37)
- new6() returns compatible form for IPv4-only hosts, not mapped form (GH#64)
- Add neg and abs overloads with clear error messages (GH#67)
- Anchor bracket notation match to reject text outside brackets (GH#68)
- Fix licence metadata and restore Artistic text (GH#56)
- new6FFFF returns undef on invalid input instead of unblessed hash ref (GH#65)
- BREAKING: re() on IPv6 objects in IPv4 space no longer emits a broken regex (GH#34)
- BREAKING: re6() now returns a non-capturing group (?:...) (GH#50)
- new6() now prefers AAAA over A for dual-stack hostnames, RT#119858 (GH#32)
- Deprecate :rfc3021 tag; hostenum/hostenumref return 2 hosts for /31 and /127 unconditionally (GH#26)
- BREAKING: new(undef) returns undef instead of the default route (GH#29)
- Fix is_local for IPv4 loopback held in IPv6 objects (GH#27)
- Fix pure-Perl _bcdcheck error messages (GH#23)
- Remove dead branch in _splitplan, use named loop variable (GH#18)
- Add BCD boundary input test suite (GH#51)
- Preserve caller $@ and $SIG{__DIE__} on oversized decimal in new() (GH#59)
- Localize $SIG{__DIE__} in module load eval probes, RT#130949 (GH#30)
- Fix POD spelling mistakes: complier, alway, netowrk, occurence, RT#114239 (GH#47)
- Prevent re() from matching addresses embedded in longer dotted strings (GH#35)
- Reject cross-family and non-object arguments in within() and contains() (GH#28)
- Remove faulty _splitplan pre-check that rejected valid short plans (GH#58)
- Fix Compact merging v4 with v6 and mutating arguments (GH#15)
- Fix compactref on subclasses (GH#16)
- Reject bracket-enclosed IPv4 literals (GH#60)
- Assert mode() matches Makefile.PL build choice (GH#61)
- Reject empty string mask in constructor (GH#3)
- Croak on swapped subtraction constant - object (GH#24)
- Fix plus() alias for zero and silent no-op outside 32-bit range (GH#25)
- Detect overflow in decimal integers, return undef in constructor (GH#19)
- Support [addr]/mask URI bracket notation (GH#2)
- Fix _splitplan netlimit pre-check and croak (GH#17)
- Reject non-integer indices in nth() (GH#10)
- Fix 0b/0x literal parsing using oct() instead of string eval (GH#4)
- Reject non-ASCII digits in IP parsing
- Fix version() for large decimal integers, RT#117995 (GH#31)
- Document coalesce() behavior for equal-length masks (GH#45)
- Fix bcdn2bin length check to report digits not bytes (GH#53)
- Make Socket6 an optional recommends, not hard prereq (GH#54)
- Modernize POD: indirect object syntax and RFC 5737 doc addresses
- Bump perl requirement to 5.014 and fix Test2 imports (GH#57)
- Remove Perl 5.10 and 5.12 from CI matrix (GH#57)
- Consolidate sub-distributions into conventional Dist::Zilla layout
- Convert all test files to Test2::V1
- Fix :nofqdn import tag to actually set the flag, RT#111301 (GH#1)
Modules
Manages IPv4 and IPv6 addresses and subnets
IPv4 and IPv6 address parsing and formatting utilities
Manages IPv4 and IPv6 addresses and subnets (lightweight)
Native C and pure perl implementations of IPv4 and IPv6 address utilities
Pure perl implementations of IPv4 and IPv6 address utilities
Provides
in lib/NetAddr/IP/Util.pm