16 iyun, demək olar ki, bir buçuk il davam edən inkişafdan sonra, 1.16 buraxıldı. pugixml — sürətli çox platformalı XML ayırma və işləmə kitabxanası (MIT lisenziyası).
Kitabxana, sənədin düyünlərini dolaşma və dəyişdirmə imkanları ilə DOM-ya bənzər bir interfeys təqdim edir. XPath 1.0 dəstəklənir və Unicode (UTF-8, UTF-16 (BE/LE), UTF-32 (BE/LE) və UCS-2) də tam dəstəklənir, kodlamaların avtomatik çevrilməsi ilə.
Standart kitabxana və C++ istisnaları olmadan istifadə dəstəklənir, həmçinin "yalnız başlıq faylları" rejimi.
Bu yubiley buraxılışıdır - bu il layihənin 20 ili tamam olacaq! Kitabxananın yaradılması və inkişafı haqqında daha ətraflı məlumatı pugixml.org, GitHub veya xəbərin ilk versiyasında oxuya bilərsiniz.
- Davranış dəyişikləri
- bir boş uşaq PCDATA elementi olan elementlər indi boş etiketlərlə çıxış edilir (format_no_empty_element_tags parametri istifadə edilmədikdə).
- Təkmilləşdirmələr
- dəyişənlərin float şəklində çevrilməsi üçün PUGIXML_CHARCONV_FLOAT seçimi əlavə edilmişdir, bu istifadə edərək, C++17 tələb edir, bu da çevrilmələri lokalidən asılı olmadan həyata keçirir və performansı artırır;
- xml_node::ensure_child və xml_node::ensure_attribute funksiyaları əlavə edildi, adı ilə uşaq elementi və ya atributu qaytarır, əgər itkin olsa, əlavə edir;
- düyünləri və atributları adla axtarışın performansı artırıldı;
- Boş tampondan sənəd yükləmək artıq yaddaş ayırmasına səbəb olmur.
- XPath təkmilləşdirmələri
- atribut dəyərinin hesablanması və ya müqayisəsi aparılan sorğuların performansı artırıldı, məsələn, @attr > 5;
- adla düyünləri və atributları seçən sorğuların performansı artırıldı.
- Səhv düzəlişləri
- çox dərin daxilolma səviyyəsinə malik alt ağacların silinməsi zamanı stack overflow problemi həll edildi;
- 32-bit platformalarda PUGIXML_WCHAR_MODE rejimində çox böyük (> 1GB) sənədlərin yüklənməsi zamanı baş verə biləcək tam ədəd overflow məsələləri düzəldildi;
- dəyişən qiymətləri təyin edilməmiş vəziyyətlərlə xpath_variable_set obyektlərini kopyalayarkən NULL göstəricisini dereferanslama səhvi düzəldildi.
- CMake dəstəyi üçün təkmilləşdirmələr
- PUGIXML_BUILD_APPLE_FRAMEWORK seçimində dəstək artırıldı;
- pugixml.cpp-nin quraşdırılması üçün CMake PUGIXML_INSTALL_SOURCE seçimində əlavə edildi ("yalnız başlıqlar" rejimində işləyərkən faydalıdır).
- Uyğunluq təkmilləşdirmələri
- Visual Studio 2026 üçün layihə faylları və NuGet paketləri əlavə edildi;
- pugixml.hpp faylını qlobal modul fraqmentinə daxil edərkən C++20 modulları ilə uyğunluq problemi düzəldildi;
- Clang və GCC -Wextra-semi-stmt, -Wsign-conversion və -Wuninitialized (GCC 16) xəbərdarlıqları düzəldildi;
- Embarcadero C++ XE5 ilə əlaqədar olan tərtibat səhvi düzəldildi;
- bir neçə statik analiz mərkəzli yanlış mükəmməl məsələlər aradan qaldırıldı.
Mənbə: linux.org.ru




