16 июня, после почти полутора лет разработки, состоялся выпуск 1.16 pugixml — быстрой кроссплатформенной библиотеки для парсинга и обработки XML (лицензия MIT).
Библиотека предоставляет DOM-подобный интерфейс с возможностями обхода узлов документа и их изменения. Также поддерживается XPath 1.0 и полная поддержка Юникода (UTF-8, UTF-16 (BE/LE), UTF-32 (BE/LE) и UCS-2), с автоматическим преобразованием кодировок.
Поддерживается использование без стандартной библиотеки и исключений C++, и режим «только заголовочные файлы».
Это юбилейный выпуск — в этом году проекту исполнится 20 лет! Подробнее об истории создания и развития библиотеки можно прочитать на pugixml.org, GitHub или в первой редакции новости.
- Изменения поведения
- элементы c одним пустым дочерним элементом PCDATA теперь выводятся с пустыми тегами (если не используется параметр format_no_empty_element_tags).
- Gwelliannau
- добавлена опция PUGIXML_CHARCONV_FLOAT для преобразования чисел с плавающей запятой, используя <charconv>; для этого требуется C++17, что делает преобразования независимыми от локали и может повысить производительность;
- добавлены функции xml_node::ensure_child и xml_node::ensure_attribute, возвращающие дочерний элемент или атрибут с указанным именем, добавляя его, если он отсутсвовал;
- улучшена производительность поиска узлов и атрибутов по имени;
- загрузка документа из пустого буфера больше не приводит к выделению памяти.
- Улучшения XPath
- улучшена производительность запросов, в которых выполняется вычисление или сравнение значений атрибутов, например @attr > 5;
- улучшена производительность запросов, выбирающих узлы и атрибуты по имени.
- Atgyweiriadau byg
- исправлено переполнение стека при удалении поддеревьев с очень глубоким уровнем вложения;
- исправлены целочисленные переполнения, которые могли приводить к сбоям при загрузке очень больших (> 1ГБ) документов на 32-разрядных платформах в режиме PUGIXML_WCHAR_MODE;
- исправлена ошибка разыменования нулевого указателя при копировании объектов xpath_variable_set со строковыми переменными с неприсвоенными значениями.
- Улучшения поддержки CMake
- улучшена поддержка опции PUGIXML_BUILD_APPLE_FRAMEWORK;
- добавлена опция CMake PUGIXML_INSTALL_SOURCE для инсталляции pugixml.cpp (полезно при работе в режиме «только заголовки»).
- Улучшения совместимости
- добавлены файлы проекта и пакеты NuGet для Visual Studio 2026;
- исправлена проблема совместимости с модулями C++20 при включении файла pugixml.hpp во фрагмент глобального модуля;
- исправлены предупреждения Clang и GCC -Wextra-semi-stmt, -Wsign-conversion и -Wuninitialized (GCC 16);
- исправлена ошибка компиляции с Embarcadero C++ XE5;
- устранены несколько ложных срабатываний статического анализа.
Ffynhonnell: linux.org.ru




