16 de junho, após quase um ano e meio de desenvolvimento, foi lançado o 1.16 pugixml — uma biblioteca multiplataforma rápida para análise e processamento de XML (licença MIT).
A biblioteca fornece uma interface semelhante ao DOM com recursos para navegação e modificação de nós do documento. Também suporta XPath 1.0 e oferece suporte total ao Unicode (UTF-8, UTF-16 (BE/LE), UTF-32 (BE/LE) e UCS-2), com conversão de codificação automática.
Suporta uso sem a biblioteca padrão e exceções C++, além de um modo 'apenas cabeçalhos'.
Esta é uma versão comemorativa — este ano o projeto completa 20 anos! Mais sobre a história da criação e desenvolvimento da biblioteca pode ser lido em pugixml.org, GitHub ou na primeira edição da notícia.
- Mudanças no comportamento
- elementos com um único filho PCDATA agora são exibidos com tags vazias (a menos que o parâmetro format_no_empty_element_tags seja utilizado).
- Melhorias
- adicionada a opção PUGIXML_CHARCONV_FLOAT para converter números de ponto flutuante usando ; isso requer C++17, o que torna as conversões independentes da localidade e pode melhorar o desempenho;
- adicionadas as funções xml_node::ensure_child e xml_node::ensure_attribute, que retornam o filho ou atributo com o nome especificado, adicionando-o caso esteja ausente;
- melhorada a performance de busca de nós e atributos por nome;
- o carregamento de um documento a partir de um buffer vazio não leva mais à alocação de memória.
- Melhorias no XPath
- melhorada a performance de consultas que realizam cálculo ou comparação de valores de atributos, como @attr > 5;
- melhorada a performance de consultas que selecionam nós e atributos por nome.
- Correções de bugs
- corrigido o estouro de pilha ao remover subárvores com nível de aninhamento muito profundo;
- corrigidos estouros inteiros que poderiam causar falhas ao carregar documentos muito grandes (> 1GB) em plataformas de 32 bits no modo PUGIXML_WCHAR_MODE;
- corrigido um erro de desreferência de ponteiro nulo ao copiar objetos xpath_variable_set com variáveis de string sem valor atribuído.
- Melhorias no suporte ao CMake
- melhorado o suporte à opção PUGIXML_BUILD_APPLE_FRAMEWORK;
- adicionada a opção CMake PUGIXML_INSTALL_SOURCE para instalação de pugixml.cpp (útil ao trabalhar em modo 'apenas cabeçalhos').
- Melhorias na compatibilidade
- adicionados arquivos de projeto e pacotes NuGet para Visual Studio 2026;
- corrigido o problema de compatibilidade com módulos C++20 ao incluir o arquivo pugixml.hpp no fragmento do módulo global;
- corrigidos os avisos Clang e GCC -Wextra-semi-stmt, -Wsign-conversion e -Wuninitialized (GCC 16);
- corrigido o erro de compilação com Embarcadero C++ XE5;
- eliminados vários falsos positivos da análise estática.
Fonte: linux.org.ru




