Changes in Version 2.0.4
This library contains no changes in this version.
Changes in Version 2.0.3
This library contains no changes in this version.
Changes in Version 2.0.2
Changes in Version 2.0.1
Changes in Version 2.0
Breaking changes
- removed existing direct buffer access from xentara::utils::string::BasicStaticString and replaced it with xentara::utils::string::BasicStaticString::RawData
- removed constructor xentara::utils::string::BasicFixedString::BasicFixedString(Char character = 0). To constrcut a string filled with 0s, use the default constructor. To fill the string with another character, use xentara::utils::string::BasicFixedString::BasicFixedString(FillTag tag, Char character).
- xentara::utils::chrono::toBasicString() and xentara::utils::chrono::toCompactBasicString() now format the values std::chrono::time_point::min() and std::chrono::time_point::max() as “never (-infinity)” and “never (infinity)”, respectively.
- xentara::utils::chrono::toIsoBasicString() now limits the formatted year value to a range of 0000 to 9999. Time stamps with smaller or greater years are formatted as “0000-01-01T00:00:00.000000000Z” and “9999-12-31T23:59:59.999999999Z”, respectively, to avoild extended format representations.
- xentara::utils::core::Uuid::toString(), xentara::utils::core::Uuid::toWString(), xentara::utils::core::Uuid::toU8String(), xentara::utils::core::Uuid::toU16String(), and xentara::utils::core::Uuid::toU32String() now return the appropriate specialization of xentara::utils::string::BasicFixedString instead of std::basic_string.
- xentara::utils::filesystem::replace() now moves the source file if there is no file at the target location yet, instead of reporting an error.
- xentara::utils::eh::expected::transform_or() was renamed to transform_error() to conform with C++23 std::expected.
- IPv6 sockets now always have the dual-stack option enabled by default, allowing them to support both IPv6 and IPv4.
New features
- added xentara::utils::string::maxConvertedSize() to calculate the maximum possible size of a convered string without inspecting the actual characters
- added xentara::utils::string::convertInvoke() to transcode strings without heap allocation
- added constructors, assignment oprators, and assign() methods to xentara::utils::string::BasicStaticString to make is more similar to std::basic_string
- added constructors, assignment oprators, and assign() methods to xentara::utils::string::BasicFixedString to make is more similar to std::basic_string
- added xentara::utils::io::MemoryInputStream::rawReadPosition() and xentara::utils::io::MemoryInputStream::setRawReadPosition()
- added xentara::utils::tools::InputArgumentType type trait
- added xentara::utils::tools::EqualityComparableWithExcept and xentara::utils::tools::ThreeWayComparableWithExcept concepts to aid in writing comparison operators
- added xentara::utils::iterator::TerminationSentinel
- added xentara::utils::core::StaticVector
- added xentara::utils::functional::function_ref and related classes, based on the proposed std::function_ref from P0792R13
- added xentara::utils::tparam::String, which is a type that can be used in templates parameter lists to allow string literals to be used as template parameters. Corresponding types WString, U8String, U16String, and U32String for wide and Unicode string literals were also added.
- added xentara::utils::tparam::Uuid, which is a type that can be used in templates parameter lists to allow UUID literals to be used as template parameters.
- added support for filtering members to xentara::utils::json::decoder::Object::filter()
- added xentara::utils::lockFree::LockFreeTraversableMap
- added additional functionality to xentara::utils::tools::ParameterPack
- added macro XENTARA_PATH_LITERAL
- added a backport of the <format> standard library header under Linux that allows using std::format and related functionality even on systems that use libstdc++ 12, where that functionality is not supported yet. The backport does not include formatters for std::chrono types.
- added std::formatter specializations for xentara::utils::core::Uuid, xentara::utils::tparam::Uuid, and all string-like types (xentara::utils::string::BasicStaticString, xentara::utils::string::BasicFixedString, xentara::utils::string::BasicHashKey, xentara::utils::string::BasicStringView, xentara::utils::tparam::BasicString, xentara::utils::tparam::String, xentara::utils::tparam::WString, and xentara::utils::json::decoder::Name). String-like types with character sets unsupported by std::format (xentara::utils::tparam::U8String, xentara::utils::tparam::U16String, and xentara::utils::tparam::U32String) did not get formatters.
- xentara::utils::network::Address::any() can now take a port number of 0.
- Socket bind functions can now use port 0 to allow auto-assigning a free port number.
- Added xentara::utils::json::decoder::Number and corresponding overload of xentara::utils::json::decoder::Value::asNumber() for parsing numbers of generic type from JSON documents.
- xentara::utils::numeric::IeeeFloatingPointTraits is no longer final
Bug Fixes
Known Issues
This version does not contain the bug fix listed for version 1.2.2 below
Changes in Version 1.2.2
- Note
- This version consists of backports from Xentara 2.0 and Xentara 2.0.1
- fixed a bug that could cause data corruption when reading large blocks from streams derived from xentara::utils::io::InputStream (backported from Xentara 2.0.1)
Changes in Version 1.2.1
This library contains no changes in this version.
Changes in Version 1.2
Breaking changes
New features
Changes in Version 1.1
Breaking changes
- replaced most occurrences of char8_t and char16_t with char, or with a templated char type. This includes strings and string views.
- replaced xentara::utils::string::Utf8Converter and xentara::utils::string::Utf16Converter with xentara::utils::string::Converter
- replaced xentara::utils::string::toUtf8String() and xentara::utils::string::toUtf16String() with the xentara::utils::string::convert() family of functions
- removed xentara::utils::string::fromString()
- removed xentara::utils::ios::toLocal()
- redesigned most functions and member functions that parse and generate strings
- moved xentara::utils::numeric::toString (for arithmetic types), xentara::utils::numeric::IeeeFloatingPointTraits, and xentara::utils::numeric::clamp, to the namespace xentara::utils::numeric
- moved atomic optionals to the namespace xentara::utils::atomic
- renamed xentara::utils::threads::Notification to xentara::utils::lockFree::ConditionVariable
- changed timeout parameter for xentara::utils::network::Socket::poll() from std::chrono::system_time::duration to std::chrono::nanoseconds
- lists of network addresses for hosts are now represented using std::vector<xentara::utils::network::Address> rather than std::list<xentara::utils::network::Address>
- many changes to xentara::utils::io::InputDevice, xentara::utils::io::OutputDevice, xentara::utils::io::InputStream, and xentara::utils::io::OutputStream
- replaced tryClose() function with close(std::nothrow_t) in xentara::utils::io::File, xentara::utils::io::FileInputStream, and xentara::utils::io::FileOutputStream
- replaced tryGetOption() and trySetOption() functions with getOption(std::nothrow_t) and setOption(std::nothrow_t) xentara::utils::network::Socket, xentara::utils::network::SocketDevice, and xentara::utils::network::SocketStream
New features
Bug fixes and improvements
Changes in Version 1.0
This is the initial release of xentara-utils.