Releases: VladimirShaleev/ipaddress
v1.1.0
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
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
The first release
This release includes implementations for working with ipv4 and ipv6 addresses and networks, through such classes as:
ipv4_address
,ipv6_address
andip_address
;ipv4_network
,ipv6_network
andip_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.