На 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;
- подобрена производителност на заявки, избиращи възли и атрибути по име.
- Поправки на грешки
- отстранено преливане на стека при изтриване на поддървета с много дълбоко ниво на вложеност;
- отстранени целочислени преливания, които могат да водят до сривове при зареждане на много големи (> 1GB) документи на 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;
- Отстранени са няколко фалшиви срабатывания на статичния анализ.
Източник: linux.org.ru




