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

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

- 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

- 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

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

- 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

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

- 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.