Changes for version 4.080_02 - 2026-09-25 (TRIAL RELEASE)

Changes for version 4.080_01 - 2026-09-22 (TRIAL RELEASE)

  • Fix re6() to support compressed IPv6 addresses (::) and shortened groups (GH#14)
  • Fix bcd2bin/bcdn2bin error messages to show correct function name (GH#78)
  • Add :all export tag to NetAddr::IP::Constants (GH#81)
  • Fix SYNOPSIS in IP.pm and Lite.pm (GH#74 items 3-9):
    • Fix within() example, consolidate my $ip declarations
    • Fix prose indentation, typo "Domanin" -> "Domain"
    • Fix unbalanced parenthesis, fix Zeros/Ones/V4mask/V4net description
  • Fix comment in Lite.pm: 0xfffffffe is 2**32 - 2, not 2**32 - 1 (GH#79)
  • Fix module load without resolver: replace inet_aton('255.0.0.0') with pack() (GH#69)
  • Fix Storable hooks: install at file scope, :old_storable is sticky (GH#8)
  • Re-enable tail-call goto dispatches removed in commit 9743c94:
    • IP.pm: splitref/rsplitref -> goto &_splitref
    • UtilPP.pm: addconst/add128/sub128 -> goto &slowadd128
    • UtilPP.pm: bcd2bin -> &_bcdcheck; goto &_bcd2bin
    • UtilPP.pm: bin2bcdn -> goto &_bin2bcdn
    • UtilPP.pm: comp128 restored to return ~ $_[0]
  • Convert @ISA + require Exporter to use parent in all modules
  • Replace use vars with our declarations, consolidate declaration + init
  • Convert tabs to spaces and fix POD indentation in IP.pm and Lite.pm
  • 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
Magic number constants for NetAddr::IP
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