GNOME 3685 Published by

Libxml2 version 2.15.0 has been released, bringing significant updates to its architecture and functionality while ensuring broad compatibility across different operating systems and hardware environments. The library includes bindings for various programming languages, including C++, Python, and Ruby, making it a versatile tool for parsing and processing XML documents. Key features in the new release include improved API documentation, updated HTML serialization, and more accessors for xmlParserCtxt. Additionally, several deprecated functions and struct members have been removed or marked for future removal to improve the library's overall performance and maintainability.



Libxml2 2.15.0 Release

Nick Wellnhofer has announced the release of Libxml2 version 2.15.0, a highly versatile software library designed for parsing XML documents. This release marks significant updates to the library's architecture and functionality.

Screenshot_from_2025_09_09_08_42_05

Overview of Libxml2

Libxml2 is an open-source C library that provides extensive support for parsing and processing XML documents. Its design principles ensure broad compatibility across different operating systems and hardware environments, thanks to its reliance on standard ANSI C libraries. The library also forms the foundation for libxslt, which enables XSLT transformations of XML data.

Integration with Multiple Programming Languages

Libxml2 boasts a wide range of bindings that enable seamless integration with prominent programming languages such as C++, Ch, XSH, C#, Python, Swift, and Pascal variants like Kylix/Delphi. Additionally, it supports bindings for popular scripting languages including Ruby, Perl, Common Lisp, and PHP.

Architecture and Portability

Developed as part of the GNOME project, libxml2's architecture is designed to be highly portable, allowing its effective use outside the GNOME ecosystem. Its reliance on standard ANSI C libraries minimizes external dependencies, ensuring broad compatibility across different operating systems and hardware environments.

New Features in Version 2.15.0

The following features are included in libxml2 version 2.15.0:

  1. API Documentation: The API documentation is now generated with Doxygen. To build the documentation, a new --with-docs configuration option and necessary dependencies (Doxygen, xsltproc, and DocBook 4 XSLT stylesheets) are required.

  2. Python Bindings: Python bindings are now disabled by default but can be enabled during compilation. Building the Python bindings also requires Doxygen.

  3. Support for Schematron: Support for Schematron is now disabled by default but can be re-enabled during compilation.

  4. Parser Option XML_PARSE_UNZIP: The parser option XML_PARSE_UNZIP is now required to read compressed data.

  5. HTML Serialization and Encoding Handling: HTML serialization and handling of character encodings are more in line with the HTML5 spec now.

  6. Accessors for xmlParserCtxt: More accessors for xmlParserCtxt were added.

Deprecations

Several internal functions and struct members have been deprecated in version 2.15.0.

Removals

The following features are no longer supported in libxml2 version 2.15.0:

  1. Built-in HTTP Client: The built-in HTTP client has been removed.
  2. LZMA Compression Support: Support for LZMA compression has been removed.
  3. Custom Windows Build System (win32): The custom Windows build system has been replaced with CMake.
Planned Removals

The following features are planned to be removed in the 2.16 release:

  1. Python Bindings: Python bindings will be completely removed.
  2. Support for Schematron Validation: Support for Schematron validation will also be removed.
Features Considered for Removal

The following features are considered for removal in future releases:

  1. Modules API (xmlmodule.h): The Modules API is being deprecated and may be removed in a future release.
  2. Support for Zlib Compressed File I/O: Support for zlib compressed file I/O may also be removed.
  3. RELAX NG Support: RELAX NG support is still in a bad state and is considered for long-term removal.
Download

The new version can be downloaded from https://download.gnome.org/sources/libxml2/2.15/libxml2-2.15.0.tar.xz. The sha256sum is 5abc766497c5b1d6d99231f662e30c99402a90d03b06c67b62d6c1179dedd561