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