pugixml 1.16









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

Buy reliable hosting for sites with DDoS protection, VPS VDS servers πŸ”₯ Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster