On June 16th, after almost a year and a half of development, version 1.16 was released. pugixml β a fast cross-platform library for parsing and processing XML (MIT license).
The library provides a DOM-like interface with the ability to traverse and modify document nodes. It also supports XPath 1.0 and full Unicode support (UTF-8, UTF-16 (BE/LE), UTF-32 (BE/LE), and UCS-2), with automatic encoding conversion.
Supported usage includes the C++ standard library and exceptions, and the "header files only" mode.
This is a milestone editionβthe project turns 20 this year! You can read more about the library's history and development at pugixml.org, GitHub or in the first edition of the news.
- Behavioral changes
- Elements with one empty PCDATA child element are now output with empty tags (unless the format_no_empty_element_tags parameter is used).
- Improvements
- Added option PUGIXML_CHARCONV_FLOAT to convert floating point numbers using ; this requires C++17, which makes the conversions locale-independent and can improve performance;
- added functions xml_node::ensure_child and xml_node::ensure_attribute, which return a child element or attribute with the specified name, adding it if it was missing;
- Improved performance of searching for nodes and attributes by name;
- Loading a document from an empty buffer no longer results in memory allocation.
- XPath Improvements
- Improved performance of queries that calculate or compare attribute values, such as @attr > 5;
- Improved performance of queries that select nodes and attributes by name.
- Bug fixes
- Fixed stack overflow when deleting subtrees with very deep nesting levels;
- Fixed integer overflows that could cause crashes when loading very large (> 1GB) documents on 32-bit platforms in PUGIXML_WCHAR_MODE;
- Fixed a null pointer dereference error when copying xpath_variable_set objects with string variables with unassigned values.
- CMake support improvements
- Improved support for the PUGIXML_BUILD_APPLE_FRAMEWORK option;
- Added CMake option PUGIXML_INSTALL_SOURCE for installing pugixml.cpp (useful when working in "headers only" mode).
- Compatibility improvements
- Added project files and NuGet packages for Visual Studio 2026;
- Fixed a compatibility issue with C++20 modules when including the pugixml.hpp file in a global module fragment;
- fixed Clang and GCC warnings -Wextra-semi-stmt, -Wsign-conversion and -Wuninitialized (GCC 16);
- Fixed compilation error with Embarcadero C++ XE5;
- Several static analysis false positives have been fixed.
Source: linux.org.ru




