0.22 2016-08-21 - Added a Net::Works::Network->is_single_address method. This returns true if the network contains just one single address. Requested byAlexander Hartmaier. GH #17. 0.21 2015-04-30 - `new_from_integer` will now accept a `Math::BigInt` in addition to a `Math::UInt128` or a standard Perl integer. 0.20 2014-10-16 - Added numeric & string comparison overloading to Net::Works::Network. - Added string comparison overloading to Net::Works::Address. 0.19 2014-08-27 - Fixed validation when a string with more than one slash (/) is passed to Net::Works::Network->new_from_string. 0.18 2014-07-08 - Fixed warnings that would happen when trying to validate some bad data. This could happen if you passed a string with no slash (/) to Net::Works::Network->new_from_string. - Make all errors call Carp::confess instead of die for consistency. 0.17 2014-07-03 - The mask_length attribute (and related methods) in Net::Works::Network has been renamed to prefix_length, which is more correct and consistent with the terminology used for IPv6. The old names (and methods) are still available, but will probably start warning in a future release. Fixes GH #8. - Require namespace::autoclean 0.16+ so our classes are not inflated from Moo to Moose classes. Fixes GH #6. 0.16 2013-12-25 - The last address in the ::0/0 network was being returned as ::0 instead of ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff. - The IPv6 address ::0 is now always stringified as "::0", not "::". However, either will be parsed correctly when giving an address as a string to a constructor. 0.15 2013-12-23 - If you passed a Math::Int128 number to Net::Works::Network->new_from_integer and specified the ip version as 4, the object would still stringify as IPv6. 0.14 2013-12-17 - Docs were changed to only use IPv4 and IPv6 addresses from the documentation address space in the docs. (Alexander Hartmaier) - Net::Works::Network objects now overload stringification. (Alexander Hartmaier) - Added more reserved IPv4 and IPv6 networks to be removed from a given IP range and included a list of all such networks in the docs. 0.13 2013-08-22 - Added two new Net::Works::Network methods: $network->contains() and $network->split(). 0.12 2013-07-10 - Converted to use Moo instead of Moose. - Switched bugtracker to GitHub. 0.11 2013-06-24 - Added $network->first_as_integer() and ->last_as_integer() methods. This is an optimization so you don't have to write $network->first()->as_integer(). Internally, the latter just turns an integer into a Net::Works::Address object that you then get the same integer out of. 0.10 2013-06-20 - The Net::Works::Network->range_as_subnets() method now takes a version parameter so you can explicitly ask for IPv4 or IPv6. - Also fixed the license in the docs to match the LICENSE file in the repo (same as Perl 5). 0.09 2013-02-06 - Documentation fixes 0.08 2013-02-04 - Fixed type constraints so they inline. 0.07 2012-12-11 - Removed all use of Data::Validate::IP and NetAddr::IP::Util. - Validate all data passed to the constructor. 0.06 2012-12-07 - Require Socket 1.99+. This fixes test failures with old version of Socket that don't provide inet_ntop or inet_pton. 0.05 2012-12-07 - More internals rewrites for the sake of speed. We now use Math::Int128 instead of Math::BigInt. The former is way faster. - Net::Works::Network now has two constructors, new_from_string() and new_from_integer(), just like Net::Works::Address. The new() method should no longer be used. 0.04 2012-12-04 - Speed improvements for Net::Works::Network->range_as_subnets(). For most use cases this won't matter but for our use at MaxMind we end up calling this a lot so making it faster is a big win. 0.03 2012-12-04 - Work around a bug in Data::Validate::IP's is_ipv6 sub. It doesn't think '::' is a valid IPv6 address. If you created a Net::Works::Network object with this address it would treat it as an IPv4 address unless you explicitly specified the version. 0.02 2012-12-03 - All changes in this release come from Greg Oschwald. - Major internals rewrite to speed things up. We no longer wrap NetAddr::IP objects (but we do use NetAddr::IP::Util). - Net::Works::Network->mask_length() now returns the mask as passed to the constructor, not the number of bits in the mask. The ->bits method returns the number of bits in the mask (32 or 128). - The Network->netmask_as_integer() method no longer exists (use mask_length() instead). The ->max_netmask_as_integer() method has been renamed to ->max_mask_length(). - Added Net::Works::Address->mask_length() and ->bits() (which always return the same thing). - We use Socket::inet_ntop to stringify addresses. 0.01 2012-11-28 - First release upon an unsuspecting world.