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).
- паляпшэння
- дададзена опцыя 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
- палепшана падтрымка опцыі 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




