pugixml 1.16









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

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster