16. června, po téměř roce a půl vývoje, byl vydán 1.16 pugixml — rychlá multiplatformní knihovna pro parsování a zpracování XML (MIT licence).
Knihovna poskytuje DOM-podobné rozhraní s možnostmi procházení uzlů dokumentu a jejich úpravy. Také podporuje XPath 1.0 a plnou podporu Unicode (UTF-8, UTF-16 (BE/LE), UTF-32 (BE/LE) a UCS-2), s automatickou konverzí kódování.
Podporuje použití bez standardní knihovny a výjimek C++, a režim „pouze hlavičkové soubory“.
Toto je jubilejní vydání — letos projektu oslaví 20 let! Další informace o historii vzniku a vývoje knihovny můžete přečíst na pugixml.org, GitHub nebo v prvním vydání zprávy.
- Změny chování
- prvky s jedním prázdným podřízeným prvkem PCDATA jsou nyní generovány s prázdnými značkami (pokud není použit parametr format_no_empty_element_tags).
- Vylepšení
- byla přidána možnost PUGIXML_CHARCONV_FLOAT pro konverzi čísel s plovoucí desetinnou čárkou pomocí ; to vyžaduje C++17, což činí konverze nezávislými na lokalitě a může zlepšit výkon;
- byly přidány funkce xml_node::ensure_child a xml_node::ensure_attribute, které vracejí podřízený prvek nebo atribut se zadaným názvem, přičemž jej přidají, pokud chybí;
- byl vylepšen výkon při vyhledávání uzlů a atributů podle jména;
- načítání dokumentu z prázdného bufferu již nevede k alokaci paměti.
- Vylepšení XPath
- byl vylepšen výkon dotazů, které zahrnují výpočet nebo porovnání hodnot atributů, například @attr > 5;
- byl vylepšen výkon dotazů, které vybírají uzly a atributy podle jména.
- Opravy chyb
- bylo opraveno přetečení zásobníku při odstraňování podstromů s velmi hlubokou úrovní zanoření;
- byly opraveny celáčové přetečení, která mohla způsobit selhání při načítání velmi velkých (> 1GB) dokumentů na 32bitových platformách v režimu PUGIXML_WCHAR_MODE;
- byla opravena chyba dereference nulového ukazatele při kopírování objektů xpath_variable_set se řetězcovými proměnnými s nepridělenými hodnotami.
- Vylepšení podpory CMake
- byla vylepšena podpora možnosti PUGIXML_BUILD_APPLE_FRAMEWORK;
- byla přidána možnost CMake PUGIXML_INSTALL_SOURCE pro instalaci pugixml.cpp (užitečné při práci v režimu „pouze hlavičky“).
- Vylepšení kompatibility
- byly přidány soubory projektu a balíčky NuGet pro Visual Studio 2026;
- byl vyřešen problém s kompatibilitou s moduly C++20 při zahrnutí souboru pugixml.hpp do fragmentu globálního modulu;
- byla opravena varování Clang a GCC -Wextra-semi-stmt, -Wsign-conversion a -Wuninitialized (GCC 16);
- byla opravena chyba kompilace s Embarcadero C++ XE5;
- bylo odstraněno několik falešných pozitiv při statické analýze.
Zdroj: linux.org.ru




