16 de junio, después de casi un año y medio de desarrollo, se lanzó la versión 1.16 pugixml — una rápida biblioteca multiplataforma para analizar y procesar XML (licencia MIT).
La biblioteca proporciona una interfaz similar a DOM con capacidades para navegar por los nodos del documento y modificarlos. También se soporta XPath 1.0 y el soporte completo de Unicode (UTF-8, UTF-16 (BE/LE), UTF-32 (BE/LE) y UCS-2), con conversión automática de codificación.
Se admite su uso sin la biblioteca estándar y sin excepciones en C++, y en modo 'solo cabeceras'.
Esta es una versión de aniversario: ¡este año el proyecto cumplirá 20 años! Para obtener más información sobre la historia de creación y desarrollo de la biblioteca, se puede leer en pugixml.org, GitHub o en la primera edición de la noticia.
- Cambios en el comportamiento
- los elementos con un único hijo PCDATA ahora se imprimen con etiquetas vacías (a menos que se utilice el parámetro format_no_empty_element_tags).
- Mejoras
- se añadió la opción PUGIXML_CHARCONV_FLOAT para convertir números de punto flotante usando ; esto requiere C++17, lo que hace que las conversiones sean independientes de la configuración regional y puede mejorar el rendimiento;
- se añadieron funciones xml_node::ensure_child y xml_node::ensure_attribute, que devuelven el hijo o atributo con el nombre especificado, añadiéndolo si no existía;
- se mejoró el rendimiento en la búsqueda de nodos y atributos por nombre;
- la carga de un documento desde un búfer vacío ya no provoca la asignación de memoria.
- Mejoras de XPath
- se mejoró el rendimiento de las consultas que realizan cálculos o comparaciones de valores de atributos, por ejemplo @attr > 5;
- se mejoró el rendimiento de las consultas que seleccionan nodos y atributos por nombre.
- Corrección de errores
- se corrigió el desbordamiento de pila al eliminar subárboles con un nivel de anidación muy profundo;
- se corrigieron desbordamientos enteros que podían causar fallos al cargar documentos muy grandes (> 1GB) en plataformas de 32 bits en modo PUGIXML_WCHAR_MODE;
- se corrigió un error de desreferencia de puntero nulo al copiar objetos xpath_variable_set con variables de cadena sin valores asignados.
- Mejoras en el soporte de CMake
- se mejoró el soporte de la opción PUGIXML_BUILD_APPLE_FRAMEWORK;
- se añadió la opción CMake PUGIXML_INSTALL_SOURCE para instalar pugixml.cpp (útil cuando se trabaja en modo 'solo cabeceras').
- Mejoras de compatibilidad
- se han agregado archivos del proyecto y paquetes NuGet para Visual Studio 2026;
- se ha solucionado un problema de compatibilidad con los módulos C++20 al incluir el archivo pugixml.hpp en el fragmento del módulo global;
- se han corregido las advertencias Clang y GCC -Wextra-semi-stmt, -Wsign-conversion y -Wuninitialized (GCC 16);
- se ha corregido un error de compilación con Embarcadero C++ XE5;
- se han eliminado varios falsos positivos del análisis estático.
Fuente: linux.org.ru




