16. juni, etter nesten ett og et halvt år med utvikling, ble versjon 1.16 utgitt pugixml — et raskt kryssplattform-bibliotek for parsing og behandling av XML (MIT-lisens).
Biblioteket tilbyr et DOM-lignende grensesnitt med evner til å navigere i dokumentnoder og endre dem. Det støtter også XPath 1.0 og full Unicode-støtte (UTF-8, UTF-16 (BE/LE), UTF-32 (BE/LE) og UCS-2), med automatisk konvertering av kodinger.
Det er mulig å bruke det uten standardbiblioteket og C++-unntak, samt i «kun header»-modus.
Dette er en jubileumsutgave — i år fyller prosjektet 20 år! Du kan lese mer om historien bak opprettelsen og utviklingen av biblioteket på pugixml.org, GitHub eller i den første utgaven av nyheten.
- Endringer i oppførsel
- elementer med ett tomt underelement PCDATA blir nå utgitt med tomme tagger (med mindre parameteren format_no_empty_element_tags brukes).
- Forbedringer
- lagt til alternativet PUGIXML_CHARCONV_FLOAT for konvertering av flyttall ved å bruke ; dette krever C++17, noe som gjør konverteringer uavhengige av lokalitet og kan forbedre ytelsen;
- lagt til funksjonene xml_node::ensure_child og xml_node::ensure_attribute, som returnerer et underelement eller attributt med det angitte navnet, ved å legge det til hvis det manglet;
- forbedret ytelse for søk av noder og attributter etter navn;
- å laste dokumentet fra en tom buffer fører ikke lenger til minneallokering.
- Forbedringer i XPath
- forbedret ytelse for forespørselene som utfører beregning eller sammenligning av attributtverdier, for eksempel @attr > 5;
- forbedret ytelse for forespørslene som velger noder og attributter etter navn.
- En feil er rettet der
- fikset stakkoverløp ved fjerning av undertrær med svært dyp nesting;
- fikset heltalls-overløp som kunne føre til krasj ved lasting av svært store (> 1GB) dokumenter på 32-bits plattformer i PUGIXML_WCHAR_MODE;
- fikset nullpeker-dereferering ved kopiering av xpath_variable_set-objekter med strengevariabler uten tildelte verdier.
- Forbedringer i CMake-støtte
- forbedret støtte for alternativet PUGIXML_BUILD_APPLE_FRAMEWORK;
- lagt til CMake-alternativet PUGIXML_INSTALL_SOURCE for installasjon av pugixml.cpp (nyttig ved arbeid i «kun header»-modus).
- Forbedringer i kompatibilitet
- lagt til prosjektfiler og NuGet-pakker for Visual Studio 2026;
- Løysingsproblem med C++20-modulane er retta når pugixml.hpp-fila blir inkludert i globalmodulen sin fragsjon;
- Clang- og GCC-advarslar -Wextra-semi-stmt, -Wsign-conversion og -Wuninitialized (GCC 16) er retta;
- Kompleksjonsfeil med Embarcadero C++ XE5 er retta;
- Flere falske positive frå den statiske analysen er fjerna.
Kilde: linux.org.ru




