pugixml 1.16









June 16, 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 capabilities for traversing and modifying 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 conversions.

It supports usage without the standard library and C++ exceptions, and a 'header-only' mode.

This is a landmark release—this year the project turns 20! You can read more about the history and development of the library at pugixml.org, GitHub or in the first release notes.

  • Behavior changes
    • elements with one empty child element PCDATA are now output with empty tags (unless the format_no_empty_element_tags parameter is used).
  • Improvements
    • an option PUGIXML_CHARCONV_FLOAT has been added for converting floating-point numbers using ; C++17 is required for this, making conversions locale-independent and potentially improving performance;
    • functions xml_node::ensure_child and xml_node::ensure_attribute have been added, returning the child element or attribute with the specified name, creating it if it was absent;
    • search performance for nodes and attributes by name has been improved;
    • loading a document from an empty buffer no longer causes memory allocation.
  • XPath Improvements
    • performance of queries that perform calculations or comparisons on attribute values, such as @attr > 5, has been improved;
    • performance of queries selecting nodes and attributes by name has been improved.
  • Bug Fixes
    • stack overflow when removing subtrees with very deep nesting has been fixed;
    • integer overflows that could lead to crashes when loading very large (> 1GB) documents on 32-bit platforms in PUGIXML_WCHAR_MODE have been fixed;
    • fixed a null pointer dereference when copying xpath_variable_set objects with string variables that had unassigned values.
  • CMake Support Improvements
    • support for the PUGIXML_BUILD_APPLE_FRAMEWORK option has been improved;
    • a CMake option PUGIXML_INSTALL_SOURCE has been added for installing pugixml.cpp (useful for working in header-only mode).
  • Compatibility Improvements
    • Project files and NuGet packages for Visual Studio 2026 have been added;
    • Fixed compatibility issues with C++20 modules when including pugixml.hpp in the global module fragment;
    • Warnings from Clang and GCC regarding -Wextra-semi-stmt, -Wsign-conversion, and -Wuninitialized (GCC 16) have been resolved;
    • Compilation error with Embarcadero C++ XE5 has been fixed;
    • Several false positives in static analysis have been eliminated.

Source: linux.org.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster