Skip to content

Releases: VladimirShaleev/ipaddress

v1.1.0

02 Jun 13:29
2242e88
Compare
Choose a tag to compare

What's Changed

Implemented Unicode support

Unicode support now includes parsing and conversion of IP addresses across various encodings (UTF-8, UTF-16, UTF-32, and wide characters).

Enhanced error messaging for invalid IP address characters, including Unicode symbols. Now, if an incoming string contains invalid IP address characters, the error message will provide a clearer description of the error cause:

try
{
    ipaddress::ipv4_address::parse(u"127.猫.\U00010348.1");
}
catch (const std::exception &exc)
{
    std::cout << exc.what() << std::endl;
    // Output: unexpected next unicode symbol {U+732b} in string 127.{U+732b}.{U+10348}.1
}

Support for C++20 modules.

#include <iostream>

import ipaddress;

int main() {
    auto ip = ipaddress::ipv4_address::parse<"127.0.0.1">();
    std::cout << ip << std::endl;
    return 0;
}

Note

The C++ module is disabled by default and is not currently available through package managers. For detailed instructions on how to use the module, please consult the documentation.

Fixed

  • Resolved constant expression issues within certain toolchains that were causing breakdowns in the constant expression evaluator for code editor hints (such as IntelliSense, etc.);
  • Whitespace characters in the scope id are now considered invalid by default.

Full Changelog: v1.0.1...v1.1.0

v1.0.1

12 Mar 22:50
73c1006
Compare
Choose a tag to compare

Fixed

  • The CMake IPADDRESS_NO_IPV6_SCOPE property had no effect;
  • Fixed overwriting of CMake properties in the ipaddress-config;
  • Fixed compilation error when scope id is disabled (IPADDRESS_NO_IPV6_SCOPE) in set_scope_id() member functions.

Full Changelog: v1.0.0...v1.0.1

v1.0.0

08 Mar 12:18
3c8e966
Compare
Choose a tag to compare

The first release

This release includes implementations for working with ipv4 and ipv6 addresses and networks, through such classes as:

  • ipv4_address, ipv6_address and ip_address;
  • ipv4_network, ipv6_network and ip_network.

Despite the fact that this library is similar in functionality to boost asio for working with ip-addresses, it provides more features for working with networks. These are such functions as:

  • enumerating addresses in a network;
  • get supernet and subnets;
  • excluding one network from another network.

The performance of parsing ipv4 and pv6 addresses exceeds the boost implementation on macOS and Windows platforms.

On Linux systems, parsing ipv4 is usually faster than in boost. But unfortunately in this release, the speed of parsing ipv6 loses to the boost implementation on Linux systems.