pugixml 1.16









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

Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS | ProHoster