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 или в първото издание на новината.
- Промени в поведението
- елементите с един празен дочерен елемент PCDATA сега се извеждат с празни тагове (ако не се използва параметъра format_no_empty_element_tags).
- Подобрения
- добавена опция PUGIXML_CHARCONV_FLOAT за преобразуване на числа с плаваща запетая, използвайки ; за това е необходим C++17, което прави преобразуванията независими от локалността и може да подобри производителността;
- добавени функции xml_node::ensure_child и xml_node::ensure_attribute, които връщат дочерен елемент или атрибут с указаното име, добавяйки го, ако го няма;
- подобрена производителността на търсене на възли и атрибути по име;
- зареждането на документ от празен буфер вече не води до заделяне на памет.
- Подобрения в XPath
- подобрена производителността на заявките, в които се извършва изчисление или сравнение на стойности на атрибути, например @attr > 5;
- подобрена производителността на заявките, които избират възли и атрибути по име.
- Поправки на грешки
- отстранено преливането на стека при изтриване на подпевра с много дълбоко ниво на вложеност;
- отстранени цели преливания, които могат да доведат до сривове при зареждане на много големи (> 1ГБ) документи на 32-битови платформи в режим PUGIXML_WCHAR_MODE;
- отстранена грешка при разименоване на нулев указател при копиране на обекти xpath_variable_set с текстови променливи без зададени стойности.
- Подобрения в поддръжката на CMake
- подобренa поддръжка на опцията 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;
- отстранени са няколко фалшиви сработвания на статичния анализ.
Източник: linux.org.ru




