16 czerwca, po prawie półtora roku prac, odbyła się premiera wersji 1.16 pugixml — szybkiej wieloplatformowej biblioteki do parsowania i przetwarzania XML (licencja MIT).
Biblioteka oferuje interfejs podobny do DOM z możliwościami przeszukiwania węzłów dokumentu i ich modyfikacji. Obsługuje również XPath 1.0 oraz pełne wsparcie dla Unicode (UTF-8, UTF-16 (BE/LE), UTF-32 (BE/LE) i UCS-2), z automatyczną konwersją kodowań.
Obsługuje użycie bez standardowej biblioteki i wyjątków C++, oraz tryb „tylko nagłówki”.
To wyjątkowe wydanie — w tym roku projekt obchodzi 20-lecie! Szczegóły dotyczące historii tworzenia i rozwoju biblioteki można przeczytać na pugixml.org, GitHub lub w pierwszej edycji wiadomości.
- Zmiany w zachowaniu
- elementy z jednym pustym dzieckiem PCDATA są teraz wyświetlane z pustymi znacznikami (o ile nie użyto parametru format_no_empty_element_tags).
- Ulepszenia
- dodano opcję PUGIXML_CHARCONV_FLOAT do konwersji liczb zmiennoprzecinkowych, używając ; wymaga to C++17, co sprawia, że konwersje są niezależne od lokalizacji i mogą zwiększyć wydajność;
- dodano funkcje xml_node::ensure_child i xml_node::ensure_attribute, które zwracają dziecko lub atrybut o podanej nazwie, dodając go, jeśli brakowało;
- poprawiono wydajność wyszukiwania węzłów i atrybutów po nazwie;
- ładowanie dokumentu z pustego bufora nie powoduje już przydzielania pamięci.
- Ulepszenia XPath
- poprawiono wydajność zapytań, w których obliczane lub porównywane są wartości atrybutów, na przykład @attr > 5;
- poprawiono wydajność zapytań, które wybierają węzły i atrybuty po nazwie.
- Poprawki błędów
- usunięto przepełnienie stosu podczas usuwania poddrzew o bardzo dużym poziomie zagnieżdżenia;
- naprawiono przepełnienia całkowite, które mogły prowadzić do awarii podczas ładowania bardzo dużych (> 1 GB) dokumentów na 32-bitowych platformach w trybie PUGIXML_WCHAR_MODE;
- naprawiono błąd dereferencji wskaźnika null podczas kopiowania obiektów xpath_variable_set z zmiennymi tekstowymi bez przypisanych wartości.
- Ulepszenia wsparcia CMake
- poprawiono wsparcie dla opcji PUGIXML_BUILD_APPLE_FRAMEWORK;
- dodano opcję CMake PUGIXML_INSTALL_SOURCE do instalacji pugixml.cpp (przydatne w trybie „tylko nagłówki”).
- Ulepszenia zgodności
- dodano pliki projektu oraz pakiety NuGet dla Visual Studio 2026;
- naprawiono problem z kompatybilnością z modułami C++20 przy dołączeniu pliku pugixml.hpp do fragmentu globalnego modułu;
- naprawiono ostrzeżenia Clang i GCC -Wextra-semi-stmt, -Wsign-conversion i -Wuninitialized (GCC 16);
- naprawiono błąd kompilacji z Embarcadero C++ XE5;
- eliminacja kilku fałszywych alarmów analizy statycznej.
Źródło: linux.org.ru




