16 giugno, dopo quasi un anno e mezzo di sviluppo, è stata rilasciata la versione 1.16 pugixml — una rapida libreria multipiattaforma per il parsing e l'elaborazione di XML (licenza MIT).
La libreria offre un'interfaccia simile al DOM con funzionalità di navigazione e modifica dei nodi del documento. Supporta anche XPath 1.0 e un supporto completo per Unicode (UTF-8, UTF-16 (BE/LE), UTF-32 (BE/LE) e UCS-2), con conversione automatica delle codifiche.
È supportato l'uso senza la libreria standard e senza eccezioni C++, e la modalità "solo intestazioni".
Questa è un'edizione speciale: quest'anno il progetto compirà 20 anni! Maggiori dettagli sulla storia di creazione e sviluppo della libreria possono essere letti su pugixml.org, GitHub o nella prima edizione della notizia.
- Modifiche nel comportamento
- gli elementi con un unico figlio PCDATA vuoto vengono ora restituiti con tag vuoti (se non viene utilizzato il parametro format_no_empty_element_tags).
- Miglioramenti
- aggiunta l'opzione PUGIXML_CHARCONV_FLOAT per la conversione dei numeri in virgola mobile, utilizzando ; ciò richiede C++17, rendendo le conversioni indipendenti dalla locale e può migliorare le prestazioni;
- aggiunte le funzioni xml_node::ensure_child e xml_node::ensure_attribute, che restituiscono un figlio o un attributo con il nome specificato, aggiungendolo se è assente;
- migliorate le prestazioni nella ricerca di nodi e attributi per nome;
- il caricamento di un documento da un buffer vuoto non porta più all'allocazione di memoria.
- Miglioramenti di XPath
- migliorate le prestazioni delle query che eseguono calcoli o confronti di valori degli attributi, ad esempio @attr > 5;
- migliorate le prestazioni delle query che selezionano nodi e attributi per nome.
- Correzioni di bug
- corretto il problema di overflow dello stack durante la rimozione di sottoalberi con un alto livello di nidificazione;
- corretti gli overflow interi che potevano causare crash durante il caricamento di documenti molto grandi (> 1GB) su piattaforme a 32 bit in modalità PUGIXML_WCHAR_MODE;
- corretto l'errore di dereferenziamento di un puntatore nullo durante la copia di oggetti xpath_variable_set con variabili stringa non assegnate.
- Miglioramenti del supporto CMake
- migliorato il supporto per l'opzione PUGIXML_BUILD_APPLE_FRAMEWORK;
- aggiunta l'opzione CMake PUGIXML_INSTALL_SOURCE per installare pugixml.cpp (utile in modalità "solo intestazioni").
- Miglioramenti della compatibilità
- aggiunti file di progetto e pacchetti NuGet per Visual Studio 2026;
- risolto il problema di compatibilità con i moduli C++20 includendo il file pugixml.hpp nel frammento del modulo globale;
- risolti i warning Clang e GCC -Wextra-semi-stmt, -Wsign-conversion e -Wuninitialized (GCC 16);
- risolto l'errore di compilazione con Embarcadero C++ XE5;
- eliminati diversi falsi positivi dell'analisi statica.
Fonte: linux.org.ru




