16 giugno, dopo quasi un anno e mezzo di sviluppo, è stata rilasciata la versione 1.16 pugixml — una libreria cross-platform veloce per il parsing e la manipolazione di XML (licenza MIT).
La libreria offre un'interfaccia simile al DOM con funzionalità per l'attraversamento dei nodi del documento e le loro modifiche. Supporta anche XPath 1.0 e una completa compatibilità con Unicode (UTF-8, UTF-16 (BE/LE), UTF-32 (BE/LE) e UCS-2), con conversione automatica delle codifiche.
Supporta l'uso senza la libreria standard e senza eccezioni C++, e la modalità 'solo file header'.
Questa è una versione speciale: quest'anno il progetto compie 20 anni! Maggiori informazioni sulla storia di creazione e sviluppo della libreria possono essere lette su pugixml.org, GitHub o nella prima edizione della notizia.
- Modifiche al comportamento
- elementi con un solo figlio PCDATA vuoto ora vengono 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 a virgola mobile utilizzando ; per questo è richiesto C++17, il che rende le conversioni indipendenti dalla locale e può migliorare le prestazioni;
- sono state aggiunte le funzioni xml_node::ensure_child e xml_node::ensure_attribute, che restituiscono un elemento figlio o un attributo con il nome specificato, aggiungendolo se non presente;
- è stata migliorata la performance della ricerca di nodi e attributi per nome;
- il caricamento di un documento da un buffer vuoto non porta più a un'allocazione di memoria.
- Miglioramenti XPath
- è stata migliorata la performance delle query in cui avviene il calcolo o il confronto dei valori degli attributi, ad esempio @attr > 5;
- è stata migliorata la performance delle query che selezionano nodi e attributi per nome.
- Correzioni di bug
- è stato corretto un overflow dello stack durante la rimozione di sottoalberi con un livello di nidificazione molto profondo;
- sono stati corretti overflows numerici che potevano portare a crash durante il caricamento di documenti molto grandi (> 1GB) su piattaforme a 32 bit in modalità PUGIXML_WCHAR_MODE;
- è stato corretto un errore di dereferenziazione di un puntatore nullo durante la copia di oggetti xpath_variable_set con variabili stringa non assegnate.
- Miglioramenti del supporto CMake
- è stato migliorato il supporto per l'opzione PUGIXML_BUILD_APPLE_FRAMEWORK;
- è stata aggiunta l'opzione CMake PUGIXML_INSTALL_SOURCE per l'installazione di pugixml.cpp (utile quando si lavora in modalità 'solo intestazioni').
- Miglioramenti della compatibilità
- aggiunti i file di progetto e i pacchetti NuGet per Visual Studio 2026;
- risolta una problematica di compatibilità con i moduli C++20 includendo il file pugixml.hpp nel frammento del modulo globale;
- sistemati gli avvisi Clang e GCC -Wextra-semi-stmt, -Wsign-conversion e -Wuninitialized (GCC 16);
- risolto un errore di compilazione con Embarcadero C++ XE5;
- eliminati diversi falsi positivi nell'analisi statica.
Fonte: linux.org.ru




