<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css">
TD {font-family: Verdana,Arial,Helvetica}
BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em}
H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
</style><title>Releases</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Releases</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="https://gitlab.gnome.org/GNOME/libxml2/issues">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>The <a href="ChangeLog.html">change log</a> describes the recents commits
to the <a href="https://gitlab.gnome.org/GNOME/libxml2">GIT</a> code base.</p><p>Here is the list of public releases:</p><h3>v2.9.11: May 13 2021</h3><ul>
  <li>Security:<br />
  Patch for security issue CVE-2021-3541 (Daniel Veillard)<br />
  </li>

  <li>Documentation:<br />
  Clarify xmlNewDocProp documentation (Nick Wellnhofer)<br />
  </li>

  <li>Portability:<br />
  CMake: Only add postfixes if MSVC (Christopher Degawa),<br />
  Fix XPath NaN/Inf for older GCC versions (Nick Wellnhofer),<br />
  Use CMake PROJECT_VERSION (Markus Rickert),<br />
  Fix warnings in libxml.m4 with autoconf 2.70+. (Simon Josefsson),<br />
  Add CI for CMake on MSVC (Markus Rickert),<br />
  Update minimum required CMake version (Markus Rickert),<br />
  Add variables for configured options to CMake config files (Markus Rickert),<br />
  Check if variables exist when defining targets (Markus Rickert),<br />
  Check if target exists when reading target properties (Markus Rickert),<br />
  Add xmlcatalog target and definition to config files (Markus Rickert),<br />
  Remove include directories for link-only dependencies (Markus Rickert),<br />
  Fix ICU build in CMake (Markus Rickert),<br />
  Configure pkgconfig, xml2-config, and xml2Conf.sh file (Markus Rickert),<br />
  Update CMake config files (Markus Rickert),<br />
  Add xmlcatalog and xmllint to CMake export (Markus Rickert),<br />
  Simplify xmlexports.h (Nick Wellnhofer),<br />
  Require dependencies based on enabled CMake options (Markus Rickert),<br />
  Use NAMELINK_COMPONENT in CMake install (Markus Rickert),<br />
  Add CMake files to EXTRA_DIST (Markus Rickert),<br />
  Add missing compile definition for static builds to CMake (Markus Rickert),<br />
  Add CI for CMake on Linux and MinGW (Markus Rickert),<br />
  Fix variable name in win32/configure.js (Nick Wellnhofer),<br />
  Fix version parsing in win32/configure.js (Nick Wellnhofer),<br />
  Fix autotools warnings (Nick Wellnhofer),<br />
  Update config.h.cmake.in (Markus Rickert),<br />
  win32: allow passing *FLAGS on command line (Michael Stahl),<br />
  Configure file xmlwin32version.h.in on MSVC (Markus Rickert),<br />
  List headers individually (Markus Rickert),<br />
  Add CMake build files (Markus Rickert),<br />
  Parenthesize Py&lt;type&gt;_Check() in ifs (Miro Hrončok),<br />
  Minor fixes to configure.js (Nick Wellnhofer)<br />
  </li>

  <li>Bug Fixes:<br />
  Fix null deref in legacy SAX1 parser (Nick Wellnhofer),<br />
  Fix handling of unexpected EOF in xmlParseContent (Nick Wellnhofer),<br />
  Fix line numbers in error messages for mismatched tags (Nick Wellnhofer),<br />
  Fix htmlTagLookup (Nick Wellnhofer),<br />
  Propagate error in xmlParseElementChildrenContentDeclPriv (Nick Wellnhofer),<br />
  Fix user-after-free with `xmllint --xinclude --dropdtd` (Nick Wellnhofer),<br />
  Fix dangling pointer with `xmllint --dropdtd` (Nick Wellnhofer),<br />
  Validate UTF8 in xmlEncodeEntities (Joel Hockey),<br />
  Fix use-after-free with `xmllint --html --push` (Nick Wellnhofer),<br />
  Allow FP division by zero in xmlXPathInit (Nick Wellnhofer),<br />
  Fix xmlGetNodePath with invalid node types (Nick Wellnhofer),<br />
  Fix exponential behavior with recursive entities (Nick Wellnhofer),<br />
  Fix quadratic behavior when looking up xml:* attributes (Nick Wellnhofer),<br />
  Fix slow parsing of HTML with encoding errors (Nick Wellnhofer),<br />
  Fix null deref introduced with previous commit (Nick Wellnhofer),<br />
  Check for invalid redeclarations of predefined entities (Nick Wellnhofer),<br />
  Add the copy of type from original xmlDoc in xmlCopyDoc() (SVGAnimate),<br />
  parser.c: shrink the input buffer when appropriate (Mike Dalessio),<br />
  Fix infinite loop in HTML parser introduced with recent commits (Nick Wellnhofer),<br />
  Fix quadratic runtime when parsing CDATA sections (Nick Wellnhofer),<br />
  Fix timeout when handling recursive entities (Nick Wellnhofer),<br />
  Fix memory leak in xmlParseElementMixedContentDecl (Nick Wellnhofer),<br />
  Fix null deref in xmlStringGetNodeList (Nick Wellnhofer),<br />
  use new htmlParseLookupCommentEnd to find comment ends (Mike Dalessio),<br />
  htmlParseComment: treat `--!&gt;` as if it closed the comment (Mike Dalessio),<br />
  Fix integer overflow in xmlSchemaGetParticleTotalRangeMin (Nick Wellnhofer),<br />
  encoding: fix memleak in xmlRegisterCharEncodingHandler() (Xiaoming Ni),<br />
  xmlschemastypes.c: xmlSchemaGetFacetValueAsULong add, check "facet-&gt;val" (Xiaoming Ni),<br />
  Fix null pointer deref in xmlXPtrRangeInsideFunction (Nick Wellnhofer),<br />
  Fix quadratic runtime in HTML push parser with null bytes (Nick Wellnhofer),<br />
  Avoid quadratic checking of identity-constraints (Michael Matz),<br />
  Fix building with ICU 68. (Frederik Seiffert),<br />
  Convert python/libxml.c to PY_SSIZE_T_CLEAN (Victor Stinner),<br />
  Fix xmlURIEscape memory leaks. (Elliott Hughes),<br />
  Avoid call stack overflow with XML reader and recursive XIncludes (Nick Wellnhofer),<br />
  Fix caret in regexp character group (Nick Wellnhofer),<br />
  parser.c: xmlParseCharData peek behavior fixed wrt newlines (Mike Dalessio),<br />
  Fix memory leaks in XPointer string-range function (Nick Wellnhofer),<br />
  Fix use-after-free when XIncluding text from Reader (Nick Wellnhofer),<br />
  Fix SEGV in xmlSAXParseFileWithData (yanjinjq),<br />
  Fix null deref in XPointer expression error path (Nick Wellnhofer),<br />
  Don't call xmlXPathInit directly (Nick Wellnhofer),<br />
  Fix cleanup of attributes in XML reader (Nick Wellnhofer),<br />
  Fix double free in XML reader with XIncludes (Nick Wellnhofer),<br />
  Fix memory leak in xmlXIncludeAddNode error paths (Nick Wellnhofer),<br />
  Revert "Fix quadratic runtime in xi:fallback processing" (Nick Wellnhofer),<br />
  Fix error reporting with xi:fallback (Nick Wellnhofer),<br />
  Fix quadratic runtime in xi:fallback processing (Nick Wellnhofer),<br />
  Fix corner case with empty xi:fallback (Nick Wellnhofer),<br />
  Fix XInclude regression introduced with recent commit (Nick Wellnhofer),<br />
  Fix memory leak in runtest.c (Nick Wellnhofer),<br />
  Make "xmllint --push --recovery" work (Nick Wellnhofer),<br />
  Revert "Do not URI escape in server side includes" (Nick Wellnhofer),<br />
  Fix column number accounting in xmlParse*NameAndCompare (Nick Wellnhofer),<br />
  Stop counting nbChars in parser context (Nick Wellnhofer),<br />
  Fix out-of-bounds read with 'xmllint --htmlout' (Nick Wellnhofer),<br />
  Fix exponential runtime and memory in xi:fallback processing (Nick Wellnhofer),<br />
  Don't process siblings of root in xmlXIncludeProcess (Nick Wellnhofer),<br />
  Don't recurse into xi:include children in xmlXIncludeDoProcess (Nick Wellnhofer),<br />
  Fix memory leak in xmlXIncludeIncludeNode error paths (Nick Wellnhofer),<br />
  Check for custom free function in global destructor (Nick Wellnhofer),<br />
  Fix integer overflow when comparing schema dates (Nick Wellnhofer),<br />
  Fix exponential runtime in xmlFARecurseDeterminism (Nick Wellnhofer),<br />
  Don't try to handle namespaces when building HTML documents (Nick Wellnhofer),<br />
  Fix several quadratic runtime issues in HTML push parser (Nick Wellnhofer),<br />
  Fix quadratic runtime when push parsing HTML start tags (Nick Wellnhofer),<br />
  Reset XML parser input before reporting errors (David Kilzer),<br />
  Fix quadratic runtime when push parsing HTML entity refs (Nick Wellnhofer),<br />
  Fix HTML push parser lookahead (Nick Wellnhofer),<br />
  Make htmlCurrentChar always translate U+0000 (Nick Wellnhofer),<br />
  Fix UTF-8 decoder in HTML parser (Nick Wellnhofer),<br />
  Fix quadratic runtime when parsing HTML script content (Nick Wellnhofer),<br />
  Reset HTML parser input before reporting error (Nick Wellnhofer),<br />
  Fix more quadratic runtime issues in HTML push parser (Nick Wellnhofer),<br />
  Fix regression introduced with 477c7f6a (Nick Wellnhofer),<br />
  Fix quadratic runtime in HTML parser (Nick Wellnhofer),<br />
  Reset HTML parser input before reporting encoding error (Nick Wellnhofer),<br />
  Fix integer overflow in xmlFAParseQuantExact (Nick Wellnhofer),<br />
  Fix return value of xmlC14NDocDumpMemory (Nick Wellnhofer),<br />
  Don't follow next pointer on documents in xmlXPathRunStreamEval (Nick Wellnhofer),<br />
  Fix integer overflow in _xmlSchemaParseGYear (Nick Wellnhofer),<br />
  Fix integer overflow when parsing {min,max}Occurs (Nick Wellnhofer),<br />
  Fix another memory leak in xmlSchemaValAtomicType (Nick Wellnhofer),<br />
  Fix unsigned integer overflow in htmlParseTryOrFinish (Nick Wellnhofer),<br />
  Fix integer overflow in htmlParseCharRef (Nick Wellnhofer),<br />
  Fix undefined behavior in UTF16LEToUTF8 (Nick Wellnhofer),<br />
  Fix return value of xmlCharEncOutput (Nick Wellnhofer),<br />
  Never expand parameter entities in text declaration (Nick Wellnhofer),<br />
  Fix undefined behavior in xmlXPathTryStreamCompile (Nick Wellnhofer),<br />
  Fix use-after-free with validating reader (Nick Wellnhofer),<br />
  xmlParseBalancedChunkMemory must not be called with NULL doc (Nick Wellnhofer),<br />
  Revert "Fix memory leak in xmlParseBalancedChunkMemoryRecover" (Nick Wellnhofer),<br />
  Fix memory leak in xmlXIncludeLoadDoc error path (Nick Wellnhofer),<br />
  Make schema validation fail with multiple top-level elements (Nick Wellnhofer),<br />
  Call xmlCleanupParser on ELF destruction (Samuel Thibault),<br />
  Fix copying of entities in xmlParseReference (Nick Wellnhofer),<br />
  Fix memory leak in xmlSchemaValidateStream (Zhipeng Xie),<br />
  Fix xmlSchemaGetCanonValue formatting for date and dateTime (Kevin Puetz),<br />
  Fix memory leak when shared libxml.dll is unloaded (Kevin Puetz),<br />
  Fix potentially-uninitialized critical section in Win32 DLL builds (Kevin Puetz),<br />
  Fix integer overflow in xmlBufferResize (Nick Wellnhofer),<br />
  Check for overflow when allocating two-dimensional arrays (Nick Wellnhofer),<br />
  Remove useless comparisons (Nick Wellnhofer),<br />
  Fix overflow check in xmlNodeDump (Nick Wellnhofer),<br />
  Fix infinite loop in xmlStringLenDecodeEntities (Zhipeng Xie),<br />
  Fix freeing of nested documents (Nick Wellnhofer),<br />
  Fix more memory leaks in error paths of XPath parser (Nick Wellnhofer),<br />
  Fix memory leaks of encoding handlers in xmlsave.c (Nick Wellnhofer),<br />
  Fix xml2-config error code (Nick Wellnhofer),<br />
  Fix memory leak in error path of XPath expr parser (Nick Wellnhofer),<br />
  Fix overflow handling in xmlBufBackToBuffer (Nick Wellnhofer),<br />
  Null pointer handling in catalog.c (raniervf),<br />
  xml2-config.in: fix regressions introduced by commit 2f2bf4b2c (Dmitry V. Levin)<br />
  </li>

  <li>Improvements:<br />
  Store per-element parser state in a struct (Nick Wellnhofer),<br />
  update for xsd:language type check (PaulHiggs),<br />
  Update INSTALL.libxml2 (Nick Wellnhofer),<br />
  Fix include order in c14n.h (Nick Wellnhofer),<br />
  Fix duplicate xmlStrEqual calls in htmlParseEndTag (Nick Wellnhofer),<br />
  Speed up htmlCheckAutoClose (Nick Wellnhofer),<br />
  Speed up htmlTagLookup (Nick Wellnhofer),<br />
  Stop checking attributes for UTF-8 validity (Nick Wellnhofer),<br />
  Reduce some fuzzer timeouts (Nick Wellnhofer),<br />
  Only run a few CI tests unless scheduled (Nick Wellnhofer),<br />
  Improve fuzzer stability (Nick Wellnhofer),<br />
  Check for feature flags in fuzzer tests (Nick Wellnhofer),<br />
  Another attempt at improving fuzzer stability (Nick Wellnhofer),<br />
  Revert "Improve HTML fuzzer stability" (Nick Wellnhofer),<br />
  Add charset names to fuzzing dictionaries (Nick Wellnhofer),<br />
  Improve HTML fuzzer stability (Nick Wellnhofer),<br />
  Add CI for MSVC x86 (Markus Rickert),<br />
  Add a flag to not output anything when xmllint succeeded (hhb),<br />
  Speed up HTML fuzzer (Nick Wellnhofer),<br />
  Remove unused encoding parameter of HTML output functions (Nick Wellnhofer),<br />
  Handle malloc failures in fuzzing code (Nick Wellnhofer),<br />
  add test coverage for incorrectly-closed comments (Mike Dalessio),<br />
  Enforce maximum length of fuzz input (Nick Wellnhofer),<br />
  Remove temporary members from struct _xmlXPathContext (Nick Wellnhofer),<br />
  Build the Python extension with PY_SSIZE_T_CLEAN (Victor Stinner),<br />
  Add CI test for Python 3 (Nick Wellnhofer),<br />
  Add fuzzing dictionaries to EXTRA_DIST (Nick Wellnhofer),<br />
  Add 'fuzz' subdirectory to DIST_SUBDIRS (Nick Wellnhofer),<br />
  Allow port numbers up to INT_MAX (Nick Wellnhofer),<br />
  Handle dumps of corrupted documents more gracefully (Nick Wellnhofer),<br />
  Limit size of free lists in XML reader when fuzzing (Nick Wellnhofer),<br />
  Hardcode maximum XPath recursion depth (Nick Wellnhofer),<br />
  Pass URL of main entity in XML fuzzer (Nick Wellnhofer),<br />
  Consolidate seed corpus generation (Nick Wellnhofer),<br />
  Test fuzz targets with dummy driver (Nick Wellnhofer),<br />
  Fix regression introduced with commit d88df4b (Nick Wellnhofer),<br />
  Fix regression introduced with commit 74dcc10b (Nick Wellnhofer),<br />
  Add TODO comment in xinclude.c (Nick Wellnhofer),<br />
  Stop using maxParserDepth in xpath.c (Nick Wellnhofer),<br />
  Remove dead code in xinclude.c (Nick Wellnhofer),<br />
  Don't add formatting newlines to XInclude nodes (Nick Wellnhofer),<br />
  Don't use SAX1 if all element handlers are NULL (Nick Wellnhofer),<br />
  Remove unneeded progress checks in HTML parser (Nick Wellnhofer),<br />
  Use strcmp when fuzzing (Nick Wellnhofer),<br />
  Fix XPath fuzzer (Nick Wellnhofer),<br />
  Fuzz XInclude engine (Nick Wellnhofer),<br />
  Add XPath and XPointer fuzzer (Nick Wellnhofer),<br />
  Update fuzzing code (Nick Wellnhofer),<br />
  More *NodeDumpOutput fixes (Nick Wellnhofer),<br />
  Fix *NodeDumpOutput functions (Nick Wellnhofer),<br />
  Make xmlNodeDumpOutputInternal non-recursive (Nick Wellnhofer),<br />
  Make xhtmlNodeDumpOutput non-recursive (Nick Wellnhofer),<br />
  Make htmlNodeDumpFormatOutput non-recursive (Nick Wellnhofer),<br />
  Fix .gitattributes (Nick Wellnhofer),<br />
  Rework control flow in htmlCurrentChar (Nick Wellnhofer),<br />
  Make 'xmllint --html --push -' read from stdin (Nick Wellnhofer),<br />
  Remove misleading comments in xpath.c (Nick Wellnhofer),<br />
  Update to Devhelp index file format version 2 (Andre Klapper),<br />
  Set project language to C (Markus Rickert),<br />
  Add variable for working directory of XML Conformance Test Suite (Markus Rickert),<br />
  Add additional tests and XML Conformance Test Suite (Markus Rickert),<br />
  Add command line option for temp directory in runtest (Markus Rickert),<br />
  Ensure LF line endings for test files (Markus Rickert),<br />
  Enable runtests and testThreads (Markus Rickert),<br />
  Limit regexp nesting depth (Nick Wellnhofer),<br />
  Fix return values and documentation in encoding.c (Nick Wellnhofer),<br />
  Add regexp regression tests (David Kilzer),<br />
  Report error for invalid regexp quantifiers (Nick Wellnhofer),<br />
  Fix rebuilding docs, by hiding __attribute__((...)) behind a macro. (Martin Vidner),<br />
  Copy xs:duration parser from libexslt (Nick Wellnhofer),<br />
  Fuzz target for XML Schemas (Nick Wellnhofer),<br />
  Move entity recorder to fuzz.c (Nick Wellnhofer),<br />
  Fuzz target for HTML parser (Nick Wellnhofer),<br />
  Update GitLab CI container (Nick Wellnhofer),<br />
  Add options file for xml fuzzer (Nick Wellnhofer),<br />
  Add a couple of libFuzzer targets (Nick Wellnhofer),<br />
  Guard new calls to xmlValidatePopElement in xml_reader.c (Daniel Cheng),<br />
  Add LIBXML_VALID_ENABLED to xmlreader (Łukasz Wojniłowicz),<br />
  Fix typos (Nick Wellnhofer),<br />
  Disable LeakSanitizer (Nick Wellnhofer),<br />
  Stop calling SAX getEntity handler from XMLReader (Nick Wellnhofer),<br />
  Add test case for recursive external parsed entities (Nick Wellnhofer),<br />
  Enable error tests with entity substitution (Nick Wellnhofer),<br />
  Don't load external entity from xmlSAX2GetEntity (Nick Wellnhofer),<br />
  Merge code paths loading external entities (Nick Wellnhofer),<br />
  Copy some XMLReader option flags to parser context (Nick Wellnhofer),<br />
  Add xmlPopOutputCallbacks (Nick Wellnhofer),<br />
  Updated Python test reader2.py (Pieter van Oostrum),<br />
  Updated python/tests/tstLastError.py (Pieter van Oostrum),<br />
  Use random seed in xmlDictComputeFastKey (Ranier Vilela),<br />
  Enable more undefined behavior sanitizers (Nick Wellnhofer)<br />
  </li>
</ul><h3>v2.9.10: Oct 30 2019</h3><ul>
  <li>Documentation:<br />
  Fix a few more typos ("fonction") (Nick Wellnhofer),<br />
  Large batch of typo fixes (Jared Yanovich),<br />
  Fix typos: tree: move{ -&gt; s}, reconcil{i -&gt; }ed, h{o -&gt; e}ld by... (Jan Pokorný),<br />
  Fix typo: xpath: simpli{ -&gt; fi}ed (Jan Pokorný),<br />
  Doc: do not mislead towards "infeasible" scenario wrt. xmlBufNodeDump (Jan Pokorný),<br />
  Fix comments in test code (zhouzhongyuan),<br />
  fix comment in testReader.c (zhouzhongyuan)<br />
  </li>

  <li>Portability:<br />
  Fix some release issues on Fedora 30 (Daniel Veillard),<br />
  Fix exponent digits when running tests under old MSVC (Daniel Richard G),<br />
  Work around buggy ceil() function on AIX (Daniel Richard G),<br />
  Don't call printf with NULL string in runtest.c (Daniel Richard G),<br />
  Switched from unsigned long to ptrdiff_t in parser.c (Stephen Chenney),<br />
  timsort.h: support older GCCs (Jérôme Duval),<br />
  Make configure.ac work with older pkg-config (Nick Wellnhofer),<br />
  Stop defining _REENTRANT on some Win32 platforms (Nick Wellnhofer),<br />
  Fix nanohttp.c on MinGW (Nick Wellnhofer),<br />
  Fix Windows compiler warning in testC14N.c (Nick Wellnhofer),<br />
  Merge testThreadsWin32.c into testThreads.c (Nick Wellnhofer),<br />
  Fix Python bindings under Windows (Nick Wellnhofer)<br />
  </li>

  <li>Bug Fixes:<br />
  Another fix for conditional sections at end of document (Nick Wellnhofer),<br />
  Fix for conditional sections at end of document (Nick Wellnhofer),<br />
  Make sure that Python tests exit with error code (Nick Wellnhofer),<br />
  Audit memory error handling in xpath.c (Nick Wellnhofer),<br />
  Fix error code in xmlTextWriterStartDocument (Nick Wellnhofer),<br />
  Fix integer overflow when counting written bytes (Nick Wellnhofer),<br />
  Fix uninitialized memory access in HTML parser (Nick Wellnhofer),<br />
  Fix memory leak in xmlSchemaValAtomicType (Nick Wellnhofer),<br />
  Disallow conditional sections in internal subset (Nick Wellnhofer),<br />
  Fix use-after-free in xmlTextReaderFreeNodeList (Nick Wellnhofer),<br />
  Fix Regextests (Nick Wellnhofer),<br />
  Fix empty branch in regex (Nick Wellnhofer),<br />
  Fix integer overflow in entity recursion check (Nick Wellnhofer),<br />
  Don't read external entities or XIncludes from stdin (Nick Wellnhofer),<br />
  Fix Schema determinism check of ##other namespaces (Nick Wellnhofer),<br />
  Fix potential null deref in xmlSchemaIDCFillNodeTables (zhouzhongyuan),<br />
  Fix potential memory leak in xmlBufBackToBuffer (Nick Wellnhofer),<br />
  Fix error message when processing XIncludes with fallbacks (Nick Wellnhofer),<br />
  Fix memory leak in xmlRegEpxFromParse (zhouzhongyuan),<br />
  14:00 is a valid timezone for xs:dateTime (Nick Wellnhofer),<br />
  Fix memory leak in xmlParseBalancedChunkMemoryRecover (Zhipeng Xie),<br />
  Fix potential null deref in xmlRelaxNGParsePatterns (Nick Wellnhofer),<br />
  Misleading error message with xs:{min|max}Inclusive (bettermanzzy),<br />
  Fix memory leak in xmlXIncludeLoadTxt (Wang Kirin),<br />
  Partial fix for comparison of xs:durations (Nick Wellnhofer),<br />
  Fix null deref in xmlreader buffer (zhouzhongyuan),<br />
  Fix unability to RelaxNG-validate grammar with choice-based name class (Jan Pokorný),<br />
  Fix unability to validate ambiguously constructed interleave for RelaxNG (Jan Pokorný),<br />
  Fix possible null dereference in xmlXPathIdFunction (zhouzhongyuan),<br />
  fix memory leak in xmlAllocOutputBuffer (zhouzhongyuan),<br />
  Fix unsigned int overflow (Jens Eggerstedt),<br />
  dict.h: gcc 2.95 doesn't allow multiple storage classes (Nick Wellnhofer),<br />
  Fix another code path in xmlParseQName (Nick Wellnhofer),<br />
  Make sure that xmlParseQName returns NULL in error case (Nick Wellnhofer),<br />
  Fix build without reader but with pattern (Nick Wellnhofer),<br />
  Fix memory leak in xmlAllocOutputBufferInternal error path (Nick Wellnhofer),<br />
  Fix unsigned integer overflow (Nick Wellnhofer),<br />
  Fix return value of xmlOutputBufferWrite (Nick Wellnhofer),<br />
  Fix parser termination from "Double hyphen within comment" error (David Warring),<br />
  Fix call stack overflow in xmlFreePattern (Nick Wellnhofer),<br />
  Fix null deref in previous commit (Nick Wellnhofer),<br />
  Fix memory leaks in xmlXPathParseNameComplex error paths (Nick Wellnhofer),<br />
  Check for integer overflow in xmlXPtrEvalChildSeq (Nick Wellnhofer),<br />
  Fix xmllint dump of XPath namespace nodes (Nick Wellnhofer),<br />
  Fix float casts in xmlXPathSubstringFunction (Nick Wellnhofer),<br />
  Fix null deref in xmlregexp error path (Nick Wellnhofer),<br />
  Fix null pointer dereference in xmlTextReaderReadOuterXml (Nick Wellnhofer),<br />
  Fix memory leaks in xmlParseStartTag2 error paths (Nick Wellnhofer),<br />
  Fix memory leak in xmlSAX2StartElement (Nick Wellnhofer),<br />
  Fix commit "Memory leak in xmlFreeID (xmlreader.c)" (Nick Wellnhofer),<br />
  Fix NULL pointer deref in xmlTextReaderValidateEntity (Nick Wellnhofer),<br />
  Memory leak in xmlFreeTextReader (Nick Wellnhofer),<br />
  Memory leak in xmlFreeID (xmlreader.c) (Nick Wellnhofer)<br />
  </li>

  <li>Improvements:<br />
  Run XML conformance tests under CI (Nick Wellnhofer),<br />
  Update GitLab CI config (Nick Wellnhofer),<br />
  Propagate memory errors in valuePush (Nick Wellnhofer),<br />
  Propagate memory errors in xmlXPathCompExprAdd (Nick Wellnhofer),<br />
  Make xmlFreeDocElementContent non-recursive (Nick Wellnhofer),<br />
  Enable continuous integration via GitLab CI (Nick Wellnhofer),<br />
  Avoid ignored attribute warnings under GCC (Nick Wellnhofer),<br />
  Make xmlDumpElementContent non-recursive (Nick Wellnhofer),<br />
  Make apibuild.py ignore ATTRIBUTE_NO_SANITIZE (Nick Wellnhofer),<br />
  Mark xmlExp* symbols as removed (Nick Wellnhofer),<br />
  Make xmlParseConditionalSections non-recursive (Nick Wellnhofer),<br />
  Adjust expected error in Python tests (Nick Wellnhofer),<br />
  Make xmlTextReaderFreeNodeList non-recursive (Nick Wellnhofer),<br />
  Make xmlFreeNodeList non-recursive (Nick Wellnhofer),<br />
  Make xmlParseContent and xmlParseElement non-recursive (Nick Wellnhofer),<br />
  Remove executable bit from non-executable files (Nick Wellnhofer),<br />
  Fix expected output of test/schemas/any4 (Nick Wellnhofer),<br />
  Optimize build instructions in README (zhouzhongyuan),<br />
  xml2-config.in: Output CFLAGS and LIBS on the same line (Hugh McMaster),<br />
  xml2-config: Add a --dynamic switch to print only shared libraries (Hugh McMaster),<br />
  Annotate functions with __attribute__((no_sanitize)) (Nick Wellnhofer),<br />
  Fix warnings when compiling without reader or push parser (Nick Wellnhofer),<br />
  Remove unused member `doc` in xmlSaveCtxt (Nick Wellnhofer),<br />
  Limit recursion depth in xmlXPathCompOpEvalPredicate (Nick Wellnhofer),<br />
  Remove -Wno-array-bounds (Nick Wellnhofer),<br />
  Remove unreachable code in xmlXPathCountFunction (Nick Wellnhofer),<br />
  Improve XPath predicate and filter evaluation (Nick Wellnhofer),<br />
  Limit recursion depth in xmlXPathOptimizeExpression (Nick Wellnhofer),<br />
  Disable hash randomization when fuzzing (Nick Wellnhofer),<br />
  Optional recursion limit when parsing XPath expressions (Nick Wellnhofer),<br />
  Optional recursion limit when evaluating XPath expressions (Nick Wellnhofer),<br />
  Use break statements in xmlXPathCompOpEval (Nick Wellnhofer),<br />
  Optional XPath operation limit (Nick Wellnhofer),<br />
  Fix compilation with --with-minimum (Nick Wellnhofer),<br />
  Check XPath stack after calling functions (Nick Wellnhofer),<br />
  Remove debug printf in xmlreader.c (Nick Wellnhofer),<br />
  Always define LIBXML_THREAD_ENABLED when enabled (Michael Haubenwallner),<br />
  Regenerate NEWS (Nick Wellnhofer),<br />
  Change git repo URL (Nick Wellnhofer),<br />
  Change bug tracker URL (Nick Wellnhofer),<br />
  Remove outdated HTML file (Nick Wellnhofer),<br />
  Fix unused function warning in testapi.c (Nick Wellnhofer),<br />
  Add some generated test files to .gitignore (Nick Wellnhofer),<br />
  Remove unneeded function pointer casts (Nick Wellnhofer),<br />
  Fix -Wcast-function-type warnings (GCC 8) (Nick Wellnhofer),<br />
  Fix -Wformat-truncation warnings (GCC 8) (Nick Wellnhofer)<br />
  </li>

  <li>Cleanups:<br />
  Rebuild docs (Nick Wellnhofer),<br />
  Disable xmlExp regex code (Nick Wellnhofer),<br />
  Remove redundant code in xmlRelaxNGValidateState (Nick Wellnhofer),<br />
  Remove redundant code in xmlXPathCompRelationalExpr (Nick Wellnhofer)<br />
  </li>
</ul><h3>v2.9.9: Jan 03 2019</h3><ul>
  <li>Security:<br />
  CVE-2018-9251 CVE-2018-14567 Fix infinite loop in LZMA decompression (Nick Wellnhofer),<br />
  CVE-2018-14404 Fix nullptr deref with XPath logic ops (Nick Wellnhofer),<br />
  </li>

  <li>Documentation:<br />
  reader: Fix documentation comment (Mohammed Sadiq)<br />
  </li>

  <li>Portability:<br />
  Fix MSVC build with lzma (Nick Wellnhofer),<br />
  Variables need 'extern' in static lib on Cygwin (Michael Haubenwallner),<br />
  Really declare dllexport/dllimport for Cygwin (Michael Haubenwallner),<br />
  Merge branch 'patch-2' into 'master' (Nick Wellnhofer),<br />
  Change dir to $THEDIR after ACLOCAL_PATH check autoreconf creates aclocal.m4 in $srcdir (Vitaly Buka),<br />
  Improve error message if pkg.m4 couldn't be found (Nick Wellnhofer),<br />
  NaN and Inf fixes for pre-C99 compilers (Nick Wellnhofer)<br />
  </li>

  <li>Bug Fixes:<br />
  Revert "Support xmlTextReaderNextSibling w/o preparsed doc" (Nick Wellnhofer),<br />
  Fix building relative URIs (Thomas Holder),<br />
  Problem with data in interleave in RelaxNG validation (Nikolai Weibull),<br />
  Fix memory leak in xmlSwitchInputEncodingInt error path (Nick Wellnhofer),<br />
  Set doc on element obtained from freeElems (Nick Wellnhofer),<br />
  Fix HTML serialization with UTF-8 encoding (Nick Wellnhofer),<br />
  Use actual doc in xmlTextReaderRead*Xml (Nick Wellnhofer),<br />
  Unlink node before freeing it in xmlSAX2StartElement (Nick Wellnhofer),<br />
  Check return value of nodePush in xmlSAX2StartElement (Nick Wellnhofer),<br />
  Free input buffer in xmlHaltParser (Nick Wellnhofer),<br />
  Reset HTML parser input pointers on encoding failure (Nick Wellnhofer),<br />
  Don't run icu_parse_test if EUC-JP is unsupported (Nick Wellnhofer),<br />
  Fix xmlSchemaValidCtxtPtr reuse memory leak (Greg Hildstrom),<br />
  Fix xmlTextReaderNext with preparsed document (Felix Bünemann),<br />
  Remove stray character from comment (Nick Wellnhofer),<br />
  Remove a misleading line from xmlCharEncOutput (Andrey Bienkowski),<br />
  HTML noscript should not close p (Daniel Veillard),<br />
  Don't change context node in xmlXPathRoot (Nick Wellnhofer),<br />
  Stop using XPATH_OP_RESET (Nick Wellnhofer),<br />
  Revert "Change calls to xmlCharEncInput to set flush false" (Nick Wellnhofer)<br />
  </li>

  <li>Improvements:<br />
  Fix "Problem with data in interleave in RelaxNG validation" (Nikolai Weibull),<br />
  cleanup: remove some unreachable code (Thomas Holder),<br />
  add --relative to testURI (Thomas Holder),<br />
  Remove redefined starts and defines inside include elements (Nikolai Weibull),<br />
  Allow choice within choice in nameClass in RELAX NG (Nikolai Weibull),<br />
  Look inside divs for starts and defines inside include (Nikolai Weibull),<br />
  Add compile and libxml2-config.cmake to .gitignore (Nikolai Weibull),<br />
  Stop using doc-&gt;charset outside parser code (Nick Wellnhofer),<br />
  Add newlines to 'xmllint --xpath' output (Nick Wellnhofer),<br />
  Don't include SAX.h from globals.h (Nick Wellnhofer),<br />
  Support xmlTextReaderNextSibling w/o preparsed doc (Felix Bünemann),<br />
  Don't instruct user to run make when autogen.sh failed (林博仁(Buo-ren Lin)),<br />
  Run Travis ASan tests with "sudo: required" (Nick Wellnhofer),<br />
  Improve restoring of context size and position (Nick Wellnhofer),<br />
  Simplify and harden nodeset filtering (Nick Wellnhofer),<br />
  Avoid unnecessary backups of the context node (Nick Wellnhofer),<br />
  Fix inconsistency in xmlXPathIsInf (Nick Wellnhofer)<br />
  </li>

  <li>Cleanups:<br />
  </li>
</ul><h3>v2.9.8: Mar 05 2018</h3><ul>
  <li>Portability:<br />
  python: remove single use of _PyVerify_fd (Patrick Welche),<br />
  Build more test executables on Windows/MSVC (Nick Wellnhofer),<br />
  Stop including ansidecl.h (Nick Wellnhofer),<br />
  Fix libz and liblzma detection (Nick Wellnhofer),<br />
  Revert "Compile testapi with -Wno-unused-function" (Nick Wellnhofer)<br />
  </li>

  <li>Bug Fixes:<br />
  Fix xmlParserEntityCheck (Nick Wellnhofer),<br />
  Halt parser in case of encoding error (Nick Wellnhofer),<br />
  Clear entity content in case of errors (Nick Wellnhofer),<br />
  Change calls to xmlCharEncInput to set flush false when not final call. Having flush incorrectly set to true causes errors for ICU. (Joel Hockey),<br />
  Fix buffer over-read in xmlParseNCNameComplex (Nick Wellnhofer),<br />
  Fix ICU library filenames on Windows/MSVC (Nick Wellnhofer),<br />
  Fix xmlXPathIsNaN broken by recent commit (Nick Wellnhofer),<br />
  Fix -Wenum-compare warnings (Nick Wellnhofer),<br />
  Fix callback signature in testapi.c (Nick Wellnhofer),<br />
  Fix unused parameter warning without ICU (Nick Wellnhofer),<br />
  Fix IO callback signatures (Nick Wellnhofer),<br />
  Fix misc callback signatures (Nick Wellnhofer),<br />
  Fix list callback signatures (Nick Wellnhofer),<br />
  Fix hash callback signatures (Nick Wellnhofer),<br />
  Refactor name and type signature for xmlNop (Vlad Tsyrklevich),<br />
  Fixed ICU to set flush correctly and provide pivot buffer. (Joel Hockey),<br />
  Skip EBCDIC tests if EBCDIC isn't supported (Nick Wellnhofer)<br />
  </li>

  <li>Improvements:<br />
  Disable pointer-overflow UBSan checks under Travis (Nick Wellnhofer),<br />
  Improve handling of context input_id (Daniel Veillard),<br />
  Add resource file to Windows DLL (ccpaging),<br />
  Run Travis tests with -Werror (Nick Wellnhofer),<br />
  Build with "-Wall -Wextra" (Nick Wellnhofer),<br />
  Fix -Wtautological-pointer-compare warnings (Nick Wellnhofer),<br />
  Remove unused AC_CHECKs (Nick Wellnhofer),<br />
  Update information about contributing (Nick Wellnhofer),<br />
  Fix -Wmisleading-indentation warnings (Nick Wellnhofer),<br />
  Don't touch CFLAGS in configure.ac (Nick Wellnhofer),<br />
  Ignore function pointer cast warnings (Nick Wellnhofer),<br />
  Simplify XPath NaN, inf and -0 handling (Nick Wellnhofer),<br />
  Introduce xmlPosixStrdup and update xmlMemStrdup (Nick Wellnhofer),<br />
  Add test for ICU flush and pivot buffer (Nick Wellnhofer),<br />
  Compile testapi with -Wno-unused-function (Nick Wellnhofer)<br />
  </li>
</ul><h3>2.9.7: Nov 02 2017</h3><ul>
  <li>Documentation:<br />
  xmlcatalog: refresh man page wrt. querying system catalog easily (Jan Pokorný)<br />
  </li>

  <li>Portability:<br />
  Fix deprecated Travis compiler flag (Nick Wellnhofer),<br />
  Add declaration for DllMain (J. Peter Mugaas),<br />
  Fix preprocessor conditional in threads.h (J. Peter Mugaas),<br />
  Fix pointer comparison warnings on 64-bit Windows (J. Peter Mugaas),<br />
  Fix macro redefinition warning (J. Peter Mugaas),<br />
  Default to native threads on MinGW-w64 (Nick Wellnhofer),<br />
  Simplify Windows IO functions (Nick Wellnhofer),<br />
  Fix runtest on Windows (Nick Wellnhofer),<br />
  socklen_t is always int on Windows (Nick Wellnhofer),<br />
  Don't redefine socket error codes on Windows (Nick Wellnhofer),<br />
  Fix pointer/int cast warnings on 64-bit Windows (Nick Wellnhofer),<br />
  Fix Windows compiler warnings in xmlCanonicPath (Nick Wellnhofer)<br />
  </li>

  <li>Bug Fixes:<br />
  xmlcatalog: restore ability to query system catalog easily (Jan Pokorný),<br />
  Fix comparison of nodesets to strings (Nick Wellnhofer)<br />
  </li>

  <li>Improvements:<br />
  Add Makefile rules to rebuild HTML man pages (Nick Wellnhofer),<br />
  Fix mixed decls and code in timsort.h (Nick Wellnhofer),<br />
  Rework handling of return values in thread tests (Nick Wellnhofer),<br />
  Fix unused variable warnings in testrecurse (Nick Wellnhofer),<br />
  Fix -Wimplicit-fallthrough warnings (J. Peter Mugaas),<br />
  Upgrade timsort.h to latest revision (Nick Wellnhofer),<br />
  Increase warning level to /W3 under MSVC (Nick Wellnhofer),<br />
  Fix a couple of warnings in dict.c and threads.c (Nick Wellnhofer),<br />
  Update .gitignore for Windows (Nick Wellnhofer),<br />
  Fix unused variable warnings in nanohttp.c (Nick Wellnhofer),<br />
  Fix the Windows header mess (Nick Wellnhofer),<br />
  Don't include winsock2.h in xmllint.c (Nick Wellnhofer),<br />
  Remove generated file python/setup.py from version control (Nick Wellnhofer),<br />
  Use __linux__ macro in generated code (Nick Wellnhofer)<br />
  </li>

</ul><h3>v2.9.6: Oct 06 2017</h3><ul>
  <li>Portability:<br />
  Change preprocessor OS tests to __linux__ (Nick Wellnhofer)<br />
  </li>

  <li>Bug Fixes:<br />
  Fix XPath stack frame logic (Nick Wellnhofer),<br />
  Report undefined XPath variable error message (Nick Wellnhofer),<br />
  Fix regression with librsvg (Nick Wellnhofer),<br />
  Handle more invalid entity values in recovery mode (Nick Wellnhofer),<br />
  Fix structured validation errors (Nick Wellnhofer),<br />
  Fix memory leak in LZMA decompressor (Nick Wellnhofer),<br />
  Set memory limit for LZMA decompression (Nick Wellnhofer),<br />
  Handle illegal entity values in recovery mode (Nick Wellnhofer),<br />
  Fix debug dump of streaming XPath expressions (Nick Wellnhofer),<br />
  Fix memory leak in nanoftp (Nick Wellnhofer),<br />
  Fix memory leaks in SAX1 parser (Nick Wellnhofer)<br />
  </li>
</ul><h3>v2.9.5: Sep 04 2017</h3><ul>

  <li>Security:<br />
  Detect infinite recursion in parameter entities (Nick Wellnhofer),<br />
  Fix handling of parameter-entity references (Nick Wellnhofer),<br />
  Disallow namespace nodes in XPointer ranges (Nick Wellnhofer),<br />
  Fix XPointer paths beginning with range-to (Nick Wellnhofer)<br />
  </li>

  <li>Documentation:<br />
  Documentation fixes (Nick Wellnhofer),<br />
  Spelling and grammar fixes (Nick Wellnhofer)<br />
  </li>

  <li>Portability:<br />
  Adding README.zOS to list of extra files for the release (Daniel Veillard),<br />
  Description of work needed to compile on zOS (Stéphane Michaut),<br />
  Porting libxml2 on zOS encoding of code (Stéphane Michaut),<br />
  small changes for OS/400 (Patrick Monnerat),<br />
  relaxng.c, xmlschemas.c: Fix build on pre-C99 compilers (Chun-wei Fan)<br />
  </li>

  <li>Bug Fixes:<br />
  Problem resolving relative URIs (Daniel Veillard),<br />
  Fix unwanted warnings when switching encodings (Nick Wellnhofer),<br />
  Fix signature of xmlSchemaAugmentImportedIDC (Daniel Veillard),<br />
  Heap-buffer-overflow read of size 1 in xmlFAParsePosCharGroup (David Kilzer),<br />
  Fix NULL pointer deref in xmlFAParseCharClassEsc (Nick Wellnhofer),<br />
  Fix infinite loops with push parser in recovery mode (Nick Wellnhofer),<br />
  Send xmllint usage error to stderr (Nick Wellnhofer),<br />
  Fix NULL deref in xmlParseExternalEntityPrivate (Nick Wellnhofer),<br />
  Make sure not to call IS_BLANK_CH when parsing the DTD (Nick Wellnhofer),<br />
  Fix xmlHaltParser (Nick Wellnhofer),<br />
  Fix pathological performance when outputting charrefs (Nick Wellnhofer),<br />
  Fix invalid-source-encoding warnings in testWriter.c (Nick Wellnhofer),<br />
  Fix duplicate SAX callbacks for entity content (David Kilzer),<br />
  Treat URIs with scheme as absolute in C14N (Nick Wellnhofer),<br />
  Fix copy-paste errors in error messages (Nick Wellnhofer),<br />
  Fix sanity check in htmlParseNameComplex (Nick Wellnhofer),<br />
  Fix potential infinite loop in xmlStringLenDecodeEntities (Nick Wellnhofer),<br />
  Reset parser input pointers on encoding failure (Nick Wellnhofer),<br />
  Fix memory leak in xmlParseEntityDecl error path (Nick Wellnhofer),<br />
  Fix xmlBuildRelativeURI for URIs starting with './' (Nick Wellnhofer),<br />
  Fix type confusion in xmlValidateOneNamespace (Nick Wellnhofer),<br />
  Fix memory leak in xmlStringLenGetNodeList (Nick Wellnhofer),<br />
  Fix NULL pointer deref in xmlDumpElementContent (Daniel Veillard),<br />
  Fix memory leak in xmlBufAttrSerializeTxtContent (Nick Wellnhofer),<br />
  Stop parser on unsupported encodings (Nick Wellnhofer),<br />
  Check for integer overflow in memory debug code (Nick Wellnhofer),<br />
  Fix buffer size checks in xmlSnprintfElementContent (Nick Wellnhofer),<br />
  Avoid reparsing in xmlParseStartTag2 (Nick Wellnhofer),<br />
  Fix undefined behavior in xmlRegExecPushStringInternal (Nick Wellnhofer),<br />
  Check XPath exponents for overflow (Nick Wellnhofer),<br />
  Check for overflow in xmlXPathIsPositionalPredicate (Nick Wellnhofer),<br />
  Fix spurious error message (Nick Wellnhofer),<br />
  Fix memory leak in xmlCanonicPath (Nick Wellnhofer),<br />
  Fix memory leak in xmlXPathCompareNodeSetValue (Nick Wellnhofer),<br />
  Fix memory leak in pattern error path (Nick Wellnhofer),<br />
  Fix memory leak in parser error path (Nick Wellnhofer),<br />
  Fix memory leaks in XPointer error paths (Nick Wellnhofer),<br />
  Fix memory leak in xmlXPathNodeSetMergeAndClear (Nick Wellnhofer),<br />
  Fix memory leak in XPath filter optimizations (Nick Wellnhofer),<br />
  Fix memory leaks in XPath error paths (Nick Wellnhofer),<br />
  Do not leak the new CData node if adding fails (David Tardon),<br />
  Prevent unwanted external entity reference (Neel Mehta),<br />
  Increase buffer space for port in HTTP redirect support (Daniel Veillard),<br />
  Fix more NULL pointer derefs in xpointer.c (Nick Wellnhofer),<br />
  Avoid function/data pointer conversion in xpath.c (Nick Wellnhofer),<br />
  Fix format string warnings (Nick Wellnhofer),<br />
  Disallow namespace nodes in XPointer points (Nick Wellnhofer),<br />
  Fix comparison with root node in xmlXPathCmpNodes (Nick Wellnhofer),<br />
  Fix attribute decoding during XML schema validation (Alex Henrie),<br />
  Fix NULL pointer deref in XPointer range-to (Nick Wellnhofer)<br />
  </li>

  <li>Improvements:<br />
  Updating the spec file to reflect Fedora 24 (Daniel Veillard),<br />
  Add const in five places to move 1 KiB to .rdata (Bruce Dawson),<br />
  Fix missing part of comment for function xmlXPathEvalExpression() (Daniel Veillard),<br />
  Get rid of "blanks wrapper" for parameter entities (Nick Wellnhofer),<br />
  Simplify handling of parameter entity references (Nick Wellnhofer),<br />
  Deduplicate code in encoding.c (Nick Wellnhofer),<br />
  Make HTML parser functions take const pointers (Nick Wellnhofer),<br />
  Build test programs only when needed (Nick Wellnhofer),<br />
  Fix doc/examples/index.py (Nick Wellnhofer),<br />
  Fix compiler warnings in threads.c (Nick Wellnhofer),<br />
  Fix empty-body warning in nanohttp.c (Nick Wellnhofer),<br />
  Fix cast-align warnings (Nick Wellnhofer),<br />
  Fix unused-parameter warnings (Nick Wellnhofer),<br />
  Rework entity boundary checks (Nick Wellnhofer),<br />
  Don't switch encoding for internal parameter entities (Nick Wellnhofer),<br />
  Merge duplicate code paths handling PE references (Nick Wellnhofer),<br />
  Test SAX2 callbacks with entity substitution (Nick Wellnhofer),<br />
  Support catalog and threads tests under --without-sax1 (Nick Wellnhofer),<br />
  Misc fixes for 'make tests' (Nick Wellnhofer),<br />
  Initialize keepBlanks in HTML parser (Nick Wellnhofer),<br />
  Add test cases for bug 758518 (David Kilzer),<br />
  Fix compiler warning in htmlParseElementInternal (Nick Wellnhofer),<br />
  Remove useless check in xmlParseAttributeListDecl (Nick Wellnhofer),<br />
  Allow zero sized memory input buffers (Nick Wellnhofer),<br />
  Add TODO comment in xmlSwitchEncoding (Nick Wellnhofer),<br />
  Check for integer overflow in xmlXPathFormatNumber (Nick Wellnhofer),<br />
  Make Travis print UBSan stacktraces (Nick Wellnhofer),<br />
  Add .travis.yml (Nick Wellnhofer),<br />
  Fix expected error output in Python tests (Nick Wellnhofer),<br />
  Simplify control flow in xmlParseStartTag2 (Nick Wellnhofer),<br />
  Disable LeakSanitizer when running API tests (Nick Wellnhofer),<br />
  Avoid out-of-bound array access in API tests (Nick Wellnhofer),<br />
  Avoid spurious UBSan errors in parser.c (Nick Wellnhofer),<br />
  Parse small XPath numbers more accurately (Nick Wellnhofer),<br />
  Rework XPath rounding functions (Nick Wellnhofer),<br />
  Fix white space in test output (Nick Wellnhofer),<br />
  Fix axis traversal from attribute and namespace nodes (Nick Wellnhofer),<br />
  Check for trailing characters in XPath expressions earlier (Nick Wellnhofer),<br />
  Rework final handling of XPath results (Nick Wellnhofer),<br />
  Make xmlXPathEvalExpression call xmlXPathEval (Nick Wellnhofer),<br />
  Remove unused variables (Nick Wellnhofer),<br />
  Don't print generic error messages in XPath tests (Nick Wellnhofer)<br />
  </li>

  <li>Cleanups:<br />
  Fix a couple of misleading indentation errors (Daniel Veillard),<br />
  Remove unnecessary calls to xmlPopInput (Nick Wellnhofer)<br />
  </li>
</ul><h3>2.9.4: May 23 2016</h3><ul>
  <li>Security:<br />
  More format string warnings with possible format string vulnerability (David Kilzer),<br />
  Avoid building recursive entities (Daniel Veillard),<br />
  Heap-based buffer overread in htmlCurrentChar (Pranjal Jumde),<br />
  Heap-based buffer-underreads due to xmlParseName (David Kilzer),<br />
  Heap use-after-free in xmlSAX2AttributeNs (Pranjal Jumde),<br />
  Heap use-after-free in htmlParsePubidLiteral and htmlParseSystemiteral (Pranjal Jumde),<br />
  Fix some format string warnings with possible format string vulnerability (David Kilzer),<br />
  Detect change of encoding when parsing HTML names (Hugh Davenport),<br />
  Fix inappropriate fetch of entities content (Daniel Veillard),<br />
  Bug 759398: Heap use-after-free in xmlDictComputeFastKey &lt;https://bugzilla.gnome.org/show_bug.cgi?id=759398&gt; (Pranjal Jumde),<br />
  Bug 758605: Heap-based buffer overread in xmlDictAddString &lt;https://bugzilla.gnome.org/show_bug.cgi?id=758605&gt; (Pranjal Jumde),<br />
  Bug 758588: Heap-based buffer overread in xmlParserPrintFileContextInternal &lt;https://bugzilla.gnome.org/show_bug.cgi?id=758588&gt; (David Kilzer),<br />
  Bug 757711: heap-buffer-overflow in xmlFAParsePosCharGroup &lt;https://bugzilla.gnome.org/show_bug.cgi?id=757711&gt; (Pranjal Jumde),<br />
  Add missing increments of recursion depth counter to XML parser. (Peter Simons)<br />
  </li>

  <li>Documentation:<br />
  Fix typo: s{ ec -&gt; cr }cipt (Jan Pokorný),<br />
  Fix typos: dictio{ nn -&gt; n }ar{y,ies} (Jan Pokorný),<br />
  Fix typos: PATH_{ SEAPARATOR -&gt; SEPARATOR } (Jan Pokorný),<br />
  Correct a typo. (Shlomi Fish)<br />
  </li>

  <li>Portability:<br />
  Correct the usage of LDFLAGS (Mattias Hansson),<br />
  Revert the use of SAVE_LDFLAGS in configure.ac (Mattias Hansson),<br />
  libxml2 hardcodes -L/lib in zlib/lzma tests which breaks cross-compiles (Mike Frysinger),<br />
  Fix apibuild for a recently added construct (Daniel Veillard),<br />
  Use pkg-config to locate zlib when possible (Stewart Brodie),<br />
  Use pkg-config to locate ICU when possible (Stewart Brodie),<br />
  Portability to non C99 compliant compilers (Patrick Monnerat),<br />
  dict.h: Move xmlDictPtr definition before includes to allow direct inclusion. (Patrick Monnerat),<br />
  os400: tell about xmllint and xmlcatalog in README400. (Patrick Monnerat),<br />
  os400: properly process SGML add in XMLCATALOG command. (Patrick Monnerat),<br />
  os400: implement CL command XMLCATALOG. (Patrick Monnerat),<br />
  os400: compile and install program xmlcatalog (qshell-only). (Patrick Monnerat),<br />
  os400: expand tabs in sources, strip trailing blanks. (Patrick Monnerat),<br />
  os400: implement CL command XMLLINT. (Patrick Monnerat),<br />
  os400: compile and install program xmllint (qshell-only). (Patrick Monnerat),<br />
  os400: initscript make_module(): Use options instead of positional parameters. (Patrick Monnerat),<br />
  os400: c14n.rpgle: allow *omit for nullable reference parameters. (Patrick Monnerat),<br />
  os400: use like() for double type. (Patrick Monnerat),<br />
  os400: use like() for int type. (Patrick Monnerat),<br />
  os400: use like() for unsigned int type. (Patrick Monnerat),<br />
  os400: use like() for enum types. (Patrick Monnerat),<br />
  Add xz to xml2-config --libs output (Baruch Siach),<br />
  Bug 760190: configure.ac should be able to build --with-icu without icu-config tool &lt;https://bugzilla.gnome.org/show_bug.cgi?id=760190&gt; (David Kilzer),<br />
  win32\VC10\config.h and VS 2015 (Bruce Dawson),<br />
  Add configure maintainer mode (orzen)<br />
  </li>

  <li>Bug Fixes:<br />
  Avoid an out of bound access when serializing malformed strings (Daniel Veillard),<br />
  Unsigned addition may overflow in xmlMallocAtomicLoc() (David Kilzer),<br />
  Integer signed/unsigned type mismatch in xmlParserInputGrow() (David Kilzer),<br />
  Bug 763071: heap-buffer-overflow in xmlStrncat &lt;https://bugzilla.gnome.org/show_bug.cgi?id=763071&gt; (Pranjal Jumde),<br />
  Integer overflow parsing port number in URI (Michael Paddon),<br />
  Fix an error with regexp on nullable counted char transition (Daniel Veillard),<br />
  Fix memory leak with XPath namespace nodes (Nick Wellnhofer),<br />
  Fix namespace axis traversal (Nick Wellnhofer),<br />
      Fix null pointer deref in docs with no root element (Hugh Davenport),<br />
  Fix XSD validation of URIs with ampersands (Alex Henrie),<br />
  xmlschemastypes.c: accept endOfDayFrag Times set to "24:00:00" mean "end of day" and should not cause an error. (Patrick Monnerat),<br />
  xmlcatalog: flush stdout before interactive shell input. (Patrick Monnerat),<br />
  xmllint: flush stdout before interactive shell input. (Patrick Monnerat),<br />
  Don't recurse into OP_VALUEs in xmlXPathOptimizeExpression (Nick Wellnhofer),<br />
  Fix namespace::node() XPath expression (Nick Wellnhofer),<br />
  Fix OOB write in xmlXPathEmptyNodeSet (Nick Wellnhofer),<br />
  Fix parsing of NCNames in XPath (Nick Wellnhofer),<br />
  Fix OOB read with invalid UTF-8 in xmlUTF8Strsize (Nick Wellnhofer),<br />
  Do normalize string-based datatype value in RelaxNG facet checking (Audric Schiltknecht),<br />
  Bug 760921: REGRESSION (8eb55d78): doc/examples/io1 test fails after fix for "xmlSaveUri() incorrectly recomposes URIs with rootless paths" &lt;https://bugzilla.gnome.org/show_bug.cgi?id=760921&gt; (David Kilzer),<br />
  Bug 760861: REGRESSION (bf9c1dad): Missing results for test/schemas/regexp-char-ref_[01].xsd &lt;https://bugzilla.gnome.org/show_bug.cgi?id=760861&gt; (David Kilzer),<br />
  error.c: *input-&gt;cur == 0 does not mean no error (Pavel Raiskup),<br />
  Add missing RNG test files (David Kilzer),<br />
  Bug 760183: REGRESSION (v2.9.3): XML push parser fails with bogus UTF-8 encoding error when multi-byte character in large CDATA section is split across buffer &lt;https://bugzilla.gnome.org/show_bug.cgi?id=760183&gt; (David Kilzer),<br />
  Bug 758572: ASAN crash in make check &lt;https://bugzilla.gnome.org/show_bug.cgi?id=758572&gt; (David Kilzer),<br />
  Bug 721158: Missing ICU string when doing --version on xmllint &lt;https://bugzilla.gnome.org/show_bug.cgi?id=721158&gt; (David Kilzer),<br />
  python 3: libxml2.c wrappers create Unicode str already (Michael Stahl),<br />
  Add autogen.sh to distrib (orzen),<br />
  Heap-based buffer overread in xmlNextChar (Daniel Veillard)<br />
  </li>

  <li>Improvements:<br />
  Add more debugging info to runtest (Daniel Veillard),<br />
  Implement "runtest -u" mode (David Kilzer),<br />
  Add a make rule to rebuild for ASAN (Daniel Veillard)<br />
  </li>
</ul><h3>v2.9.3: Nov 20 2015</h3><ul>
  <li>Security:<br />
  CVE-2015-8242 Buffer overead with HTML parser in push mode (Hugh Davenport),<br />
  CVE-2015-7500 Fix memory access error due to incorrect entities boundaries (Daniel Veillard),<br />
  CVE-2015-7499-2 Detect incoherency on GROW (Daniel Veillard),<br />
  CVE-2015-7499-1 Add xmlHaltParser() to stop the parser (Daniel Veillard),<br />
  CVE-2015-5312 Another entity expansion issue (David Drysdale),<br />
  CVE-2015-7497 Avoid an heap buffer overflow in xmlDictComputeFastQKey (David Drysdale),<br />
  CVE-2015-7498 Avoid processing entities after encoding conversion failures (Daniel Veillard),<br />
  CVE-2015-8035 Fix XZ compression support loop (Daniel Veillard),<br />
  CVE-2015-7942-2 Fix an error in previous Conditional section patch (Daniel Veillard),<br />
  CVE-2015-7942 Another variation of overflow in Conditional sections (Daniel Veillard),<br />
  CVE-2015-1819 Enforce the reader to run in constant memory (Daniel Veillard)<br />
  CVE-2015-7941_2 Cleanup conditional section error handling (Daniel Veillard),<br />
  CVE-2015-7941_1 Stop parsing on entities boundaries errors (Daniel Veillard),<br />
  </li>

  <li>Documentation:<br />
  Correct spelling of "calling" (Alex Henrie),<br />
  Fix a small error in xmllint --format description (Fabien Degomme),<br />
  Avoid XSS on the search of xmlsoft.org (Daniel Veillard)<br />
  </li>

  <li>Portability:<br />
  threads: use forward declarations only for glibc (Michael Heimpold),<br />
  Update Win32 configure.js to search for configure.ac (Daniel Veillard)<br />
  </li>

  <li>Bug Fixes:<br />
  Bug on creating new stream from entity (Daniel Veillard),<br />
  Fix some loop issues embedding NEXT (Daniel Veillard),<br />
  Do not print error context when there is none (Daniel Veillard),<br />
  Avoid extra processing of MarkupDecl when EOF (Hugh Davenport),<br />
  Fix parsing short unclosed comment uninitialized access (Daniel Veillard),<br />
  Add missing Null check in xmlParseExternalEntityPrivate (Gaurav Gupta),<br />
  Fix a bug in CData error handling in the push parser (Daniel Veillard),<br />
  Fix a bug on name parsing at the end of current input buffer (Daniel Veillard),<br />
  Fix the spurious ID already defined error (Daniel Veillard),<br />
  Fix previous change to node sort order (Nick Wellnhofer),<br />
  Fix a self assignment issue raised by clang (Scott Graham),<br />
  Fail parsing early on if encoding conversion failed (Daniel Veillard),<br />
  Do not process encoding values if the declaration if broken (Daniel Veillard),<br />
  Silence clang's -Wunknown-attribute (Michael Catanzaro),<br />
  xmlMemUsed is not thread-safe (Martin von Gagern),<br />
  Fix support for except in nameclasses (Daniel Veillard),<br />
  Fix order of root nodes (Nick Wellnhofer),<br />
  Allow attributes on descendant-or-self axis (Nick Wellnhofer),<br />
  Fix the fix to Windows locking (Steve Nairn),<br />
  Fix timsort invariant loop re: Envisage article (Christopher Swenson),<br />
  Don't add IDs in xmlSetTreeDoc (Nick Wellnhofer),<br />
  Account for ID attributes in xmlSetTreeDoc (Nick Wellnhofer),<br />
  Remove various unused value assignments (Philip Withnall),<br />
  Fix missing entities after CVE-2014-3660 fix (Daniel Veillard),<br />
  Revert "Missing initialization for the catalog module" (Daniel Veillard)<br />
  </li>

  <li>Improvements:<br />
  Reuse xmlHaltParser() where it makes sense (Daniel Veillard),<br />
  xmlStopParser reset errNo (Daniel Veillard),<br />
  Re-enable xz support by default (Daniel Veillard),<br />
  Recover unescaped less-than character in HTML recovery parsing (Daniel Veillard),<br />
  Allow HTML serializer to output HTML5 DOCTYPE (Shaun McCance),<br />
  Regression test for bug #695699 (Nick Wellnhofer),<br />
  Add a couple of XPath tests (Nick Wellnhofer),<br />
  Add Python 3 rpm subpackage (Tomas Radej),<br />
  libxml2-config.cmake.in: update include directories (Samuel Martin),<br />
  Adding example from bugs 738805 to regression tests (Daniel Veillard)<br />
  </li>

  <li>Cleanups:<br />
  </li>
</ul><h3>2.9.2: Oct 16 2014</h3><ul>
  <li>Security:<br />
  Fix for CVE-2014-3660 billion laugh variant (Daniel Veillard),<br />
  CVE-2014-0191 Do not fetch external parameter entities (Daniel Veillard)<br />
  </li>

  <li>Bug Fixes:<br />
  fix memory leak xml header encoding field with XML_PARSE_IGNORE_ENC (Bart De Schuymer),<br />
  xmlmemory: handle realloc properly (Yegor Yefremov),<br />
  Python generator bug raised by the const change (Daniel Veillard),<br />
  Windows Critical sections not released correctly (Daniel Veillard),<br />
  Parser error on repeated recursive entity expansion containing &amp;lt; (Daniel Veillard),<br />
  xpointer : fixing Null Pointers (Gaurav Gupta),<br />
  Remove Unnecessary Null check in xpointer.c (Gaurav Gupta),<br />
  parser bug on misformed namespace attributes (Dennis Filder),<br />
  Pointer dereferenced before null check (Daniel Veillard),<br />
  Leak of struct addrinfo in xmlNanoFTPConnect() (Gaurav Gupta),<br />
  Possible overflow in HTMLParser.c (Daniel Veillard),<br />
  python/tests/sync.py assumes Python dictionaries are ordered (John Beck),<br />
  Fix Enum check and missing break (Gaurav Gupta),<br />
  xmlIO: Handle error returns from dup() (Philip Withnall),<br />
  Fix a problem properly saving URIs (Daniel Veillard),<br />
  wrong error column in structured error when parsing attribute values (Juergen Keil),<br />
  wrong error column in structured error when skipping whitespace in xml decl (Juergen Keil),<br />
  no error column in structured error handler for xml schema validation errors (Juergen Keil),<br />
  Couple of Missing Null checks (Gaurav Gupta),<br />
  Add couple of missing Null checks (Daniel Veillard),<br />
  xmlschemastypes: Fix potential array overflow (Philip Withnall),<br />
  runtest: Fix a memory leak on parse failure (Philip Withnall),<br />
  xmlIO: Fix an FD leak on gzdopen() failure (Philip Withnall),<br />
  xmlcatalog: Fix a memory leak on quit (Philip Withnall),<br />
  HTMLparser: Correctly initialise a stack allocated structure (Philip Withnall),<br />
  Check for tmon in _xmlSchemaDateAdd() is incorrect (David Kilzer),<br />
  Avoid Possible Null Pointer in trio.c (Gaurav Gupta),<br />
  Fix processing in SAX2 in case of an allocation failure (Daniel Veillard),<br />
  XML Shell command "cd" does not handle "/" at end of path (Daniel Veillard),<br />
  Fix various Missing Null checks (Gaurav Gupta),<br />
  Fix a potential NULL dereference (Daniel Veillard),<br />
  Add a couple of misisng check in xmlRelaxNGCleanupTree (Gaurav Gupta),<br />
  Add a missing argument check (Gaurav Gupta),<br />
  Adding a check in case of allocation error (Gaurav Gupta),<br />
  xmlSaveUri() incorrectly recomposes URIs with rootless paths (Dennis Filder),<br />
  Adding some missing NULL checks (Gaurav),<br />
  Fixes for xmlInitParserCtxt (Daniel Veillard),<br />
  Fix regressions introduced by CVE-2014-0191 patch (Daniel Veillard),<br />
  erroneously ignores a validation error if no error callback set (Daniel Veillard),<br />
  xmllint was not parsing the --c14n11 flag (Sérgio Batista),<br />
  Avoid Possible null pointer dereference in memory debug mode (Gaurav),<br />
  Avoid Double Null Check (Gaurav),<br />
  Restore context size and position after XPATH_OP_ARG (Nick Wellnhofer),<br />
  Fix xmlParseInNodeContext() if node is not element (Daniel Veillard),<br />
  Avoid a possible NULL pointer dereference (Gaurav),<br />
  Fix xmlTextWriterWriteElement when a null content is given (Daniel Veillard),<br />
  Fix an typo 'onrest' in htmlScriptAttributes (Daniel Veillard),<br />
  fixing a ptotential uninitialized access (Daniel Veillard),<br />
  Fix an fd leak in an error case (Daniel Veillard),<br />
  Missing initialization for the catalog module (Daniel Veillard),<br />
  Handling of XPath function arguments in error case (Nick Wellnhofer),<br />
  Fix a couple of missing NULL checks (Gaurav),<br />
  Avoid a possibility of dangling encoding handler (Gaurav),<br />
  Fix HTML push parser to accept HTML_PARSE_NODEFDTD (Arnold Hendriks),<br />
  Fix a bug loading some compressed files (Mike Alexander),<br />
  Fix XPath node comparison bug (Gaurav),<br />
  Type mismatch in xmlschemas.c (Gaurav),<br />
  Type mismatch in xmlschemastypes.c (Gaurav),<br />
  Avoid a deadcode in catalog.c (Daniel Veillard),<br />
  run close socket on Solaris, same as we do on other platforms (Denis Pauk),<br />
  Fix pointer dereferenced before null check (Gaurav),<br />
  Fix a potential NULL dereference in tree code (Daniel Veillard),<br />
  Fix potential NULL pointer dereferences in regexp code (Gaurav),<br />
  xmllint --pretty crashed without following numeric argument (Tim Galeckas),<br />
  Fix XPath expressions of the form '@ns:*' (Nick Wellnhofer),<br />
  Fix XPath '//' optimization with predicates (Nick Wellnhofer),<br />
  Clear up a potential NULL dereference (Daniel Veillard),<br />
  Fix a possible NULL dereference (Gaurav),<br />
  Avoid crash if allocation fails (Daniel Veillard),<br />
  Remove occasional leading space in XPath number formatting (Daniel Veillard),<br />
  Fix handling of mmap errors (Daniel Veillard),<br />
  Catch malloc error and exit accordingly (Daniel Veillard),<br />
  missing else in xlink.c (Ami Fischman),<br />
  Fix a parsing bug on non-ascii element and CR/LF usage (Daniel Veillard),<br />
  Fix a regression in xmlGetDocCompressMode() (Daniel Veillard),<br />
  properly quote the namespace uris written out during c14n (Aleksey Sanin),<br />
  Remove premature XInclude check on URI being relative (Alexey Neyman),<br />
  Fix missing break on last() function for attributes (dcb),<br />
  Do not URI escape in server side includes (Romain Bondue),<br />
  Fix an error in xmlCleanupParser (Alexander Pastukhov)<br />
  </li>

  <li>Documentation:<br />
  typo in error messages "colon are forbidden from..." (Daniel Veillard),<br />
  Fix a link to James SAX documentation old page (Daniel Veillard),<br />
  Fix typos in relaxng.c (Jan Pokorný),<br />
  Fix a doc typo (Daniel Veillard),<br />
  Fix typos in {tree,xpath}.c (errror) (Jan Pokorný),<br />
  Add limitations about encoding conversion (Daniel Veillard),<br />
  Fix typos in xmlschemas{,types}.c (Jan Pokorný),<br />
  Fix incorrect spelling entites-&gt;entities (Jan Pokorný),<br />
  Forgot to document 2.9.1 release, regenerate docs (Daniel Veillard)<br />
  </li>

  <li>Portability:<br />
  AC_CONFIG_FILES and executable bit (Roumen Petrov),<br />
  remove HAVE_CONFIG_H dependency in testlimits.c (Roumen Petrov),<br />
  fix some tabs mixing incompatible with python3 (Roumen Petrov),<br />
  Visual Studio 14 CTP defines snprintf() (Francis Dupont),<br />
  OS400: do not try to copy unexisting doc files (Patrick Monnerat),<br />
  OS400: use either configure.ac or configure.in. (Patrick Monnerat),<br />
  os400: make-src.sh: create physical file with target CCSID (Patrick Monnerat),<br />
  OS400: Add some more C macros equivalent procedures. (Patrick Monnerat),<br />
  OS400: use C macros to implement equivalent RPG support procedures. (Patrick Monnerat),<br />
  OS400: implement XPath macros as procedures for ILE/RPG support. (Patrick Monnerat),<br />
  OS400: include in distribution tarball. (Patrick Monnerat),<br />
  OS400: Add README: compilation directives and OS/400 specific stuff. (Patrick Monnerat),<br />
  OS400: Add compilation scripts. (Patrick Monnerat),<br />
  OS400: ILE RPG language header files. (Patrick Monnerat),<br />
  OS400: implement some macros as functions for ILE/RPG language support (that as no macros). (Patrick Monnerat),<br />
  OS400: UTF8&lt;--&gt;EBCDIC wrappers for system and external library calls (Patrick Monnerat),<br />
  OS400: Easy character transcoding support (Patrick Monnerat),<br />
  OS400: iconv functions compatibility wrappers and table builder. (Patrick Monnerat),<br />
  OS400: create architecture directory. Implement dlfcn emulation. (Patrick Monnerat),<br />
  Fix building when configuring without xpath and xptr (Daniel Veillard),<br />
  configure: Add --with-python-install-dir (Jonas Eriksson),<br />
  Fix compilation with minimum and xinclude. (Nicolas Le Cam),<br />
  Compile out use of xmlValidateNCName() when not available. (Nicolas Le Cam),<br />
  Fix compilation with minimum and schematron. (Nicolas Le Cam),<br />
  Legacy needs xmlSAX2StartElement() and xmlSAX2EndElement(). (Nicolas Le Cam),<br />
  Don't use xmlValidateName() when not available. (Nicolas Le Cam),<br />
  Fix a portability issue on Windows (Longstreth Jon),<br />
  Various portability patches for OpenVMS (Jacob (Jouk) Jansen),<br />
  Use specific macros for portability to OS/400 (Patrick Monnerat),<br />
  Add macros needed for OS/400 portability (Patrick Monnerat),<br />
  Portability patch for fopen on OS/400 (Patrick Monnerat),<br />
  Portability fixes for OS/400 (Patrick Monnerat),<br />
  Improve va_list portability (Patrick Monnerat),<br />
  Portability fix (Patrick Monnerat),<br />
  Portability fix (Patrick Monnerat),<br />
  Generic portability fix (Patrick Monnerat),<br />
  Shortening lines in headers (Patrick Monnerat),<br />
  build: Use pkg-config to find liblzma in preference to AC_CHECK_LIB (Philip Withnall),<br />
  build: Add @LZMA_LIBS@ to libxml’s pkg-config files (Philip Withnall),<br />
  fix some tabs mixing incompatible with python3 (Daniel Veillard),<br />
  add additional defines checks for support "./configure --with-minimum" (Denis Pauk),<br />
  Another round of fixes for older versions of Python (Arfrever Frehtes Taifersar Arahesis),<br />
  python: fix drv_libxml2.py for python3 compatibility (Alexandre Rostovtsev),<br />
  python: Fix compiler warnings when building python3 bindings (Armin K),<br />
  Fix for compilation with python 2.6.8 (Petr Sumbera)<br />
  </li>

  <li>Improvements:<br />
  win32/libxml2.def.src after rebuild in doc (Roumen Petrov),<br />
  elfgcchack.h: more legacy needs xmlSAX2StartElement() and xmlSAX2EndElement() (Roumen Petrov),<br />
  elfgcchack.h: add xmlXPathNodeEval and xmlXPathSetContextNode (Roumen Petrov),<br />
  Provide cmake module (Samuel Martin),<br />
  Fix a couple of issues raised by make dist (Daniel Veillard),<br />
  Fix and add const qualifiers (Kurt Roeckx),<br />
  Preparing for upcoming release of 2.9.2 (Daniel Veillard),<br />
  Fix zlib and lzma libraries check via command line (Dmitriy),<br />
  wrong error column in structured error when parsing end tag (Juergen Keil),<br />
  doc/news.html: small update to avoid line join while generating NEWS. (Patrick Monnerat),<br />
  Add methods for python3 iterator (Ron Angeles),<br />
  Support element node traversal in document fragments. (Kyle VanderBeek),<br />
  xmlNodeSetName: Allow setting the name to a substring of the currently set name (Tristan Van Berkom),<br />
  Added macros for argument casts (Eric Zurcher),<br />
  adding init calls to xml and html Read parsing entry points (Daniel Veillard),<br />
  Get rid of 'REPLACEMENT CHARACTER' Unicode chars in xmlschemas.c (Jan Pokorný),<br />
  Implement choice for name classes on attributes (Shaun McCance),<br />
  Two small namespace tweaks (Daniel Veillard),<br />
  xmllint --memory should fail on empty files (Daniel Veillard),<br />
  Cast encoding name to char pointer to match arg type (Nikolay Sivov)<br />
  </li>

  <li>Cleanups:<br />
  Removal of old configure.in (Daniel Veillard),<br />
  Unreachable code in tree.c (Gaurav Gupta),<br />
  Remove a couple of dead conditions (Gaurav Gupta),<br />
  Avoid some dead code and cleanup in relaxng.c (Gaurav),<br />
  Drop not needed checks (Denis Pauk),<br />
  Fix a wrong test (Daniel Veillard)<br />
  </li>
</ul><h3>2.9.1: Apr 19 2013</h3><ul>
  <li> Features:<br />
    Support for Python3 (Daniel Veillard),<br />
    Add xmlXPathSetContextNode and xmlXPathNodeEval (Alex Bligh)<br />
  </li>

  <li> Documentation:<br />
    Add documentation for xmllint --xpath (Daniel Veillard),<br />
    Fix the URL of the SAX documentation from James (Daniel Veillard),<br />
    Fix spelling of "length". (Michael Wood)<br />
  </li>

  <li> Portability:<br />
    Fix python bindings with versions older than 2.7 (Daniel Veillard),<br />
    rebuild docs:Makefile.am (Roumen Petrov),<br />
    elfgcchack.h after rebuild in doc (Roumen Petrov),<br />
    elfgcchack for buf module (Roumen Petrov),<br />
    Fix a uneeded and wrong extra link parameter (Daniel Veillard),<br />
    Few cleanup patches for Windows (Denis Pauk),<br />
    Fix rpmbuild --nocheck (Mark Salter),<br />
    Fix for win32/configure.js and WITH_THREAD_ALLOC (Daniel Richard),<br />
    Fix Broken multi-arch support in xml2-config (Daniel Veillard),<br />
    Fix a portability issue for GCC &lt; 3.4.0 (Daniel Veillard),<br />
    Windows build fixes (Daniel Richard),<br />
    Fix a thread portability problem (Friedrich Haubensak),<br />
    Downgrade autoconf requirement to 2.63 (Daniel Veillard)<br />
  </li>

  <li> Bug Fixes:<br />
    Fix a linking error for python bindings (Daniel Veillard),<br />
    Fix a couple of return without value (Jüri Aedla),<br />
    Improve the hashing functions (Daniel Franke),<br />
    Improve handling of xmlStopParser() (Daniel Veillard),<br />
    Remove risk of lockup in dictionary initialization (Daniel Veillard),<br />
    Activate detection of encoding in external subset (Daniel Veillard),<br />
    Fix an output buffer flushing conversion bug (Mikhail Titov),<br />
    Fix an old bug in xmlSchemaValidateOneElement (Csaba László),<br />
    Fix configure cannot remove messages (Gilles Espinasse),<br />
    fix schema validation in combination with xsi:nil (Daniel Veillard),<br />
    xmlCtxtReadFile doesn't work with literal IPv6 URLs (Steve Wolf),<br />
    Fix a few problems with setEntityLoader (Alexey Neyman),<br />
    Detect excessive entities expansion upon replacement (Daniel Veillard),<br />
    Fix the flushing out of raw buffers on encoding conversions (Daniel,<br />
Veillard),<br />
    Fix some buffer conversion issues (Daniel Veillard),<br />
    When calling xmlNodeDump make sure we grow the buffer quickly (Daniel,<br />
Veillard),<br />
    Fix an error in the progressive DTD parsing code (Dan Winship),<br />
    xmllint should not load DTD by default when using the reader (Daniel,<br />
Veillard),<br />
    Try IBM-037 when looking for EBCDIC handlers (Petr Sumbera),<br />
    Fix potential out of bound access (Daniel Veillard),<br />
    Fix large parse of file from memory (Daniel Veillard),<br />
    Fix a bug in the nsclean option of the parser (Daniel Veillard),<br />
    Fix a regression in 2.9.0 breaking validation while streaming (Daniel,<br />
Veillard),<br />
    Remove potential calls to exit() (Daniel Veillard)<br />
  </li>

  <li> Improvements:<br />
    Regenerated API, and testapi, rebuild documentation (Daniel Veillard),<br />
    Fix tree iterators broken by 2to3 script (Daniel Veillard),<br />
    update all tests for Python3 and Python2 (Daniel Veillard),<br />
    A few more fixes for python 3 affecting libxml2.py (Daniel Veillard),<br />
    Fix compilation on Python3 (Daniel Veillard),<br />
    Converting apibuild.py to python3 (Daniel Veillard),<br />
    First pass at starting porting to python3 (Daniel Veillard),<br />
    updated configure.in for python3 (Daniel Veillard),<br />
    Add support for xpathRegisterVariable in Python (Shaun McCance),<br />
    Added a regression tests from bug 694228 data (Daniel Veillard),<br />
    Cache presence of '&lt;' in entities content (Daniel Veillard),<br />
    Avoid extra processing on entities (Daniel Veillard),<br />
    Python binding for xmlRegisterInputCallback (Alexey Neyman),<br />
    Python bindings: DOM casts everything to xmlNode (Alexey Neyman),<br />
    Define LIBXML_THREAD_ALLOC_ENABLED via xmlversion.h (Tim Starling),<br />
    Adding streaming validation to runtest checks (Daniel Veillard),<br />
    Add a --pushsmall option to xmllint (Daniel Veillard)<br />
  </li>

  <li> Cleanups:<br />
    Switched comment in file to UTF-8 encoding (Daniel Veillard),<br />
    Extend gitignore (Daniel Veillard),<br />
    Silent the new python test on input (Alexey Neyman),<br />
    Cleanup of a duplicate test (Daniel Veillard),<br />
    Cleanup on duplicate test expressions (Daniel Veillard),<br />
    Fix compiler warning after 153cf15905cf4ec080612ada6703757d10caba1e (Patrick,<br />
Gansterer),<br />
    Spec cleanups and a fix for multiarch support (Daniel Veillard),<br />
    Silence a clang warning (Daniel Veillard),<br />
    Cleanup the Copyright to be pure MIT Licence wording (Daniel Veillard),<br />
    rand_seed should be static in dict.c (Wouter Van Rooy),<br />
    Fix typos in parser comments (Jan Pokorný)<br />
  </li>
</ul><h3>2.9.0: Sep 11 2012</h3><ul>
  <li> Features:<br />
    A few new API entry points,<br />
    More resilient push parser mode,<br />
    A lot of portability improvement,<br />
    Faster XPath evaluation<br />
  </li>

  <li> Documentation:<br />
    xml2-config.1 markup error (Christian Weisgerber),<br />
    libxml(3) manpage typo fix (John Bradshaw),<br />
    More cleanups to the documentation part of libxml2 (Daniel Richard G)<br />
  </li>

  <li> Portability:<br />
    Bug 676544 - fails to build with --without-sax1 (Akira TAGOH),<br />
    fix builds not having stdint.h (Rob Richards),<br />
    GetProcAddressA is available only on WinCE (Daniel Veillard),<br />
    More updates and cleanups on autotools and Makefiles (Daniel Richard G),<br />
    More changes for Win32 compilation (Eric Zurcher),<br />
    Basic changes for Win32 builds of release 2.9.0: compile buf.c (Eric Zurcher),<br />
    Bundles all generated files for python into the distribution (Daniel Richard G),<br />
    Fix compiler warnings of wincecompat.c (Patrick Gansterer),<br />
    Fix non __GNUC__ build (Patrick Gansterer),<br />
    Fix windows unicode build (Patrick Gansterer),<br />
    clean redefinition of {v}snprintf in C-source (Roumen Petrov),<br />
    use xmlBuf... if DEBUG_INPUT is defined (Roumen Petrov),<br />
    fix runtests to use pthreads support for various Unix platforms (Daniel Richard G),<br />
    Various "make distcheck" and portability fixups 2nd part (Daniel Richard G),<br />
    Various "make distcheck" and portability fixups (Daniel Richard G),<br />
    Fix compilation on older Visual Studio (Daniel Veillard)<br />
  </li>

  <li> Bug Fixes:<br />
    Change the XPath code to percolate allocation errors (Daniel Veillard),<br />
    Fix reuse of xmlInitParser (Daniel Veillard),<br />
    Fix potential crash on entities errors (Daniel Veillard),<br />
    initialize var (Rob Richards),<br />
    Fix the XPath arity check to also check the XPath stack limits (Daniel Veillard),<br />
    Fix problem with specific and generic error handlers (Pietro Cerutti),<br />
    Avoid a potential infinite recursion (Daniel Veillard),<br />
    Fix an XSD error when generating internal automata (Daniel Veillard),<br />
    Patch for xinclude of text using multibyte characters (Vitaly Ostanin),<br />
    Fix a segfault on XSD validation on pattern error (Daniel Veillard),<br />
    Fix missing xmlsave.h module which was ignored in recent builds (Daniel Veillard),<br />
    Add a missing element check (Daniel Veillard),<br />
    Adding various checks on node type though the API (Daniel Veillard),<br />
    Namespace nodes can't be unlinked with xmlUnlinkNode (Daniel Veillard),<br />
    Fix make dist to include new private header files (Daniel Veillard),<br />
    More fixups on the push parser behaviour (Daniel Veillard),<br />
    Strengthen behaviour of the push parser in problematic situations (Daniel Veillard),<br />
    Enforce XML_PARSER_EOF state handling through the parser (Daniel Veillard),<br />
    Fixup limits parser (Daniel Veillard),<br />
    Do not fetch external parsed entities (Daniel Veillard),<br />
    Fix an error in previous commit (Aron Xu),<br />
    Fix entities local buffers size problems (Daniel Veillard),<br />
    Fix parser local buffers size problems (Daniel Veillard),<br />
    Fix a failure to report xmlreader parsing failures (Daniel Veillard)<br />
  </li>

  <li> Improvements:<br />
    Keep libxml2.syms when running "make distclean" (Daniel Veillard),<br />
    Allow to set the quoting character of an xmlWriter (Csaba Raduly),<br />
    Keep non-significant blanks node in HTML parser (Daniel Veillard),<br />
    Add a forbidden variable error number and message to XPath (Daniel Veillard),<br />
    Support long path names on WNT (Michael Stahl),<br />
    Improve HTML escaping of attribute on output (Daniel Veillard),<br />
    Handle ICU_LIBS as LIBADD, not LDFLAGS to prevent linking errors (Arfrever Frehtes Taifersar Arahesis),<br />
    Switching XPath node sorting to Timsort (Vojtech Fried),<br />
    Optimizing '//' in XPath expressions (Nick Wellnhofer),<br />
    Expose xmlBufShrink in the public tree API (Daniel Veillard),<br />
    Visible HTML elements close the head tag (Conrad Irwin),<br />
    Fix file and line report for XSD SAX and reader streaming validation (Daniel Veillard),<br />
    Fix const qualifyer to definition of xmlBufferDetach (Daniel Veillard),<br />
    minimize use of HAVE_CONFIG_H (Roumen Petrov),<br />
    fixup regression in Various "make distcheck" and portability fixups (Roumen Petrov),<br />
    Add support for big line numbers in error reporting (Daniel Veillard),<br />
    Avoid using xmlBuffer for serialization (Daniel Veillard),<br />
    Improve compatibility between xmlBuf and xmlBuffer (Daniel Veillard),<br />
    Provide new accessors for xmlOutputBuffer (Daniel Veillard),<br />
    Improvements for old buffer compatibility (Daniel Veillard),<br />
    Expand the limit test program (Daniel Veillard),<br />
    Improve error reporting on parser errors (Daniel Veillard),<br />
    Implement some default limits in the XPath module (Daniel Veillard),<br />
    Introduce some default parser limits (Daniel Veillard),<br />
    Cleanups and new limit APIs for dictionaries (Daniel Veillard),<br />
    Fixup for buf.c (Daniel Veillard),<br />
    Cleanup URI module memory allocation code (Daniel Veillard),<br />
    Extend testlimits (Daniel Veillard),<br />
    More avoid quadratic behaviour (Daniel Veillard),<br />
    Impose a reasonable limit on PI size (Daniel Veillard),<br />
    first version of testlimits new test (Daniel Veillard),<br />
    Avoid quadratic behaviour in some push parsing cases (Daniel Veillard),<br />
    Impose a reasonable limit on comment size (Daniel Veillard),<br />
    Impose a reasonable limit on attribute size (Daniel Veillard),<br />
    Harden the buffer code and make it more compatible (Daniel Veillard),<br />
    More cleanups for input/buffers code (Daniel Veillard),<br />
    Cleanup function xmlBufResetInput(),<br /> to set input from Buffer (Daniel Veillard)
    Switch the test program for characters to new input buffers (Daniel Veillard),<br />
    Convert the HTML tree module to the new buffers (Daniel Veillard),<br />
    Convert of the HTML parser to new input buffers (Daniel Veillard),<br />
    Convert the writer to new output buffer and save APIs (Daniel Veillard),<br />
    Convert XMLReader to the new input buffers (Daniel Veillard),<br />
    New saving functions using xmlBuf and conversion (Daniel Veillard),<br />
    Provide new xmlBuf based saving functions (Daniel Veillard),<br />
    Convert XInclude to the new input buffers (Daniel Veillard),<br />
    Convert catalog code to the new input buffers (Daniel Veillard),<br />
    Convert C14N to the new Input buffer (Daniel Veillard),<br />
    Convert xmlIO.c to the new input and output buffers (Daniel Veillard),<br />
    Convert XML parser to the new input buffers (Daniel Veillard),<br />
    Incompatible change to the Input and Output buffers (Daniel Veillard),<br />
    Adding new encoding function to deal with the new structures (Daniel Veillard),<br />
    Convert XPath to xmlBuf (Daniel Veillard),<br />
    Adding a new buf module for buffers (Daniel Veillard),<br />
    Memory error within SAX2 reuse common framework (Daniel Veillard),<br />
    Fix xmllint --xpath node initialization (Daniel Veillard)<br />
  </li>

  <li> Cleanups:<br />
    Various cleanups to avoid compiler warnings (Daniel Veillard),<br />
    Big space and tab cleanup (Daniel Veillard),<br />
    Followup to LibXML2 docs/examples cleanup patch (Daniel Veillard),<br />
    Second round of cleanups for LibXML2 docs/examples (Daniel Richard),<br />
    Remove all .cvsignore as they are not used anymore (Daniel Veillard),<br />
    Fix a Timsort function helper comment (Daniel Veillard),<br />
    Small cleanup for valgrind target (Daniel Veillard),<br />
    Patch for portability of latin characters in C files (Daniel Veillard),<br />
    Cleanup some of the parser code (Daniel Veillard),<br />
    Fix a variable name in comment (Daniel Veillard),<br />
    Regenerated testapi.c (Daniel Veillard),<br />
    Regenerating docs and API files (Daniel Veillard),<br />
    Small cleanup of unused variables in test (Daniel Veillard),<br />
    Expand .gitignore with more files (Daniel Veillard)<br />
  </li>
</ul><h3>2.8.0: May 23 2012</h3><ul>
  <li>Features:
  add lzma compression support (Anders F Bjorklund)
  </li>

  <li>Documentation:
    xmlcatalog: Add uri and delegateURI to possible add types in man page. (Ville Skyttä),
    Update README.tests (Daniel Veillard),
    URI handling code is not OOM resilient (Daniel Veillard),
    Fix an error in comment (Daniel Veillard),
    Fixed bug #617016 (Daniel Mustieles),
    Fixed two typos in the README document (Daniel Neel),
    add generated html files (Anders F Bjorklund),
    Clarify the need to use xmlFreeNode after xmlUnlinkNode (Daniel Veillard),
    Improve documentation a bit (Daniel Veillard),
    Updated URL for lxml python bindings (Daniel Veillard)
  </li>

  <li>Portability:
    Restore code for Windows compilation (Daniel Veillard),
    Remove git error message during configure (Christian Dywan),
    xmllint: Build fix for endTimer if !defined(HAVE_GETTIMEOFDAY) (Patrick R. Gansterer),
    remove a bashism in confgure.in (John Hein),
    undef ERROR if already defined (Patrick R. Gansterer),
    Fix library problems with mingw-w64 (Michael Cronenworth),
    fix windows build. ifdef addition from bug 666491 makes no sense (Rob Richards),
    prefer native threads on win32 (Sam Thursfield),
    Allow to compile with Visual Studio 2010 (Thomas Lemm),
    Fix mingw's snprintf configure check (Andoni Morales),
    fixed a 64bit big endian issue (Marcus Meissner),
    Fix portability failure if netdb.h lacks NO_ADDRESS (Daniel Veillard),
    Fix windows build from lzma addition (Rob Richards),
    autogen: Only check for libtoolize (Colin Walters),
    Fix the Windows build files (Patrick von Reth),
    634846 Remove a linking option breaking Windows VC10 (Daniel Veillard),
    599241 fix an initialization problem on Win64 (Andrew W. Nosenko),
    fix win build (Rob Richards)
  </li>

  <li>Bug fixes:
    Part for rand_r checking missing (Daniel Veillard),
    Cleanup on randomization (Daniel Veillard),
    Fix undefined reference in python module (Pacho Ramos),
    Fix a race in xmlNewInputStream (Daniel Veillard),
    Fix weird streaming RelaxNG errors (Noam),
    Fix various bugs in new code raised by the API checking (Daniel Veillard),
    Fix various problems with "make dist" (Daniel Veillard),
    Fix a memory leak in the xzlib code (Daniel Veillard),
    HTML parser error with &lt;noscript&gt; in the &lt;head&gt; (Denis Pauk),
    XSD: optional element in complex type extension (Remi Gacogne),
    Fix html serialization error and htmlSetMetaEncoding() (Daniel Veillard),
    Fix a wrong return value in previous patch (Daniel Veillard),
    Fix an uninitialized variable use (Daniel Veillard),
    Fix a compilation problem with --minimum (Brandon Slack),
    Remove redundant and ungarded include of resolv.h (Daniel Veillard),
    xinclude with parse="text" does not use the entity loader (Shaun McCance),
    Allow to parse 1 byte HTML files (Denis Pauk),
    Patch that fixes the skipping of the HTML_PARSE_NOIMPLIED flag (Martin Schröder),
    Avoid memory leak if xmlParserInputBufferCreateIO fails (Lin Yi-Li),
    Prevent an infinite loop when dumping a node with encoding problems (Timothy Elliott),
    xmlParseNodeInContext problems with an empty document (Tim Elliott),
    HTML element position is not detected properly (Pavel Andrejs),
    Fix an off by one pointer access (Jüri Aedla),
    Try to fix a problem with entities in SAX mode (Daniel Veillard),
    Fix a crash with xmllint --path on empty results (Daniel Veillard),
    Fixed bug #667946 (Daniel Mustieles),
    Fix a logic error in Schemas Component Constraints (Ryan Sleevi),
    Fix a wrong enum type use in Schemas Types (Nico Weber),
    Fix SAX2 builder in case of undefined attributes namespace (Daniel Veillard),
    Fix SAX2 builder in case of undefined element namespaces (Daniel Veillard),
    fix reference to STDOUT_FILENO on MSVC (Tay Ray Chuan),
    fix a pair of possible out of array char references (Daniel Veillard),
    Fix an allocation error when copying entities (Daniel Veillard),
    Make sure the parser returns when getting a Stop order (Chris Evans),
    Fix some potential problems on reallocation failures(parser.c) (Xia Xinfeng),
    Fix a schema type duration comparison overflow (Daniel Veillard),
    Fix an unimplemented part in RNG value validation (Daniel Veillard),
    Fix missing error status in XPath evaluation (Daniel Veillard),
    Hardening of XPath evaluation (Daniel Veillard),
    Fix an off by one error in encoding (Daniel Veillard),
    Fix RELAX NG include bug #655288 (Shaun McCance),
    Fix XSD validation bug #630130 (Toyoda Eizi),
    Fix some potential problems on reallocation failures (Chris Evans),
    __xmlRaiseError: fix use of the structured callback channel (Dmitry V. Levin),
    __xmlRaiseError: fix the structured callback channel's data initialization (Dmitry V. Levin),
    Fix memory corruption when xmlParseBalancedChunkMemoryInternal is called from xmlParseBalancedChunk (Rob Richards),
    Small fix for previous commit (Daniel Veillard),
    Fix a potential freeing error in XPath (Daniel Veillard),
    Fix a potential memory access error (Daniel Veillard),
    Reactivate the shared library versioning script (Daniel Veillard)
  </li>

  <li>Improvements:
    use mingw C99 compatible functions {v}snprintf instead those from MSVC runtime (Roumen Petrov),
    New symbols added for the next release (Daniel Veillard),
    xmlTextReader bails too quickly on error (Andy Lutomirski),
    Use a hybrid allocation scheme in xmlNodeSetContent (Conrad Irwin),
    Use buffers when constructing string node lists. (Conrad Irwin),
    Add HTML parser support for HTML5 meta charset encoding declaration (Denis Pauk),
    wrong message for double hyphen in comment XML error (Bryan Henderson),
    Fix "make tst" to grab lzma lib too (Daniel Veillard),
    Add "whereis" command to xmllint shell (Ryan),
    Improve xmllint shell (Ryan),
    add function xmlTextReaderRelaxNGValidateCtxt() (Noam Postavsky),
    Add --system support to autogen.sh (Daniel Veillard),
    Add hash randomization to hash and dict structures (Daniel Veillard),
    included xzlib in dist (Anders F Bjorklund),
    move xz/lzma helpers to separate included files (Anders F Bjorklund),
    add generated devhelp files (Anders F Bjorklund),
    add XML_WITH_LZMA to api (Anders F Bjorklund),
    autogen.sh: Honor NOCONFIGURE environment variable (Colin Walters),
    Improve the error report on undefined REFs (Daniel Veillard),
    Add exception for new W3C PI xml-model (Daniel Veillard),
    Add options to ignore the internal encoding (Daniel Veillard),
    testapi: use the right type for the check (Stefan Kost),
    various: handle return values of write calls (Stefan Kost),
    testWriter: xmlTextWriterWriteFormatElement wants an int instead of a long int (Stefan Kost),
    runxmlconf: update to latest testsuite version (Stefan Kost),
    configure: add -Wno-long-long to CFLAGS (Stefan Kost),
    configure: support silent automake rules if possible (Stefan Kost),
    xmlmemory: add a cast as size_t has no portable printf modifier (Stefan Kost),
    __xmlRaiseError: remove redundant schannel initialization (Dmitry V. Levin),
    __xmlRaiseError: do cheap code check early (Dmitry V. Levin)
  </li>

  <li>Cleanups:
    Cleanups before 2.8.0-rc2 (Daniel Veillard),
    Avoid an extra operation (Daniel Veillard),
    Remove vestigial de-ANSI-fication support. (Javier Jardón),
    autogen.sh: Fix typo (Javier Jardón),
    Do not use unsigned but unsigned int (Daniel Veillard),
    Remove two references to u_short (Daniel Veillard),
    Fix -Wempty-body warning from clang (Nico Weber),
    Cleanups of lzma support (Daniel Veillard),
    Augment the list of ignored files (Daniel Veillard),
    python: remove unused variable (Stefan Kost),
    python: flag two unused args (Stefan Kost),
    configure: acconfig.h is deprecated since autoconf-2.50 (Stefan Kost),
    xpath: remove unused variable (Stefan Kost)
  </li>
</ul><h3>2.7.8: Nov 4 2010</h3><ul>
  <li> Features:
    480323 add code to plug in ICU converters by default (Giuseppe Iuculano),
    Add xmlSaveOption XML_SAVE_WSNONSIG (Adam Spragg)
  </li>
  <li> Documentation:
    Fix devhelp documentation installation (Mike Hommey),
    Fix web site encoding problems (Daniel Veillard),
    Fix a couple of typo in HTML parser error messages (Michael Day),
    Forgot to update the news page for 0.7.7 (Daniel Veillard)
  </li>
  <li> Portability:
    607273 Fix python detection on MSys/Windows (LRN),
    614087 Fix Socket API usage to allow Windows64 compilation (Ozkan Sezer),
    Fix compilation with Clang (Koop Mast),
    Fix Win32 build (Rob Richards)
  </li>
  <li> Bug Fixes:
    595789 fix a remaining potential Solaris problem (Daniel Veillard),
    617468 fix progressive HTML parsing with style using "'" (Denis Pauk),
    616478 Fix xmllint shell write command (Gwenn Kahz),
    614005 Possible erroneous HTML parsing on unterminated script (Pierre Belzile),
    627987 Fix XSD IDC errors in imported schemas (Jim Panetta),
    629325 XPath rounding errors first cleanup (Phil Shafer),
    630140 fix iso995x encoding error (Daniel Veillard),
    make sure htmlCtxtReset do reset the disableSAX field (Daniel Veillard),
    Fix a change of semantic on XPath preceding and following axis (Daniel Veillard),
    Fix a potential segfault due to weak symbols on pthreads (Mike Hommey),
    Fix a leak in XPath compilation (Daniel Veillard),
    Fix the semantic of XPath axis for namespace/attribute context nodes (Daniel Veillard),
    Avoid a descriptor leak in catalog loading code (Carlo Bramini),
    Fix a small bug in XPath evaluation code (Marius Wachtler),
    Fix handling of XML-1.0 XML namespace declaration (Daniel Veillard),
    Fix errors in XSD double validation check (Csaba Raduly),
    Fix handling of apos in URIs (Daniel Veillard),
    xmlTextReaderReadOuterXml should handle DTD (Rob Richards),
    Autogen.sh needs to create m4 directory (Rob Richards)
  </li>
  <li> Improvements:
    606592 update language ID parser to RFC 5646 (Daniel Veillard),
    Sort python generated stubs (Mike Hommey),
    Add an HTML parser option to avoid a default doctype (Daniel Veillard)
  </li>
  <li> Cleanups:
    618831 don't ship generated files in git (Adrian Bunk),
    Switch from the obsolete mkinstalldirs to AC_PROG_MKDIR_P (Adrian Bunk),
    Various cleanups on encoding handling (Daniel Veillard),
    Fix xmllint to use format=1 for default formatting (Adam Spragg),
    Force _xmlSaveCtxt.format to be 0 or 1 (Adam Spragg),
    Cleanup encoding pointer comparison (Nikolay Sivov),
    Small code cleanup on previous patch (Daniel Veillard)
  </li>
</ul><h3>2.7.7: Mar 15 2010</h3><ul>
  <li> Improvements:
    Adding a --xpath option to xmllint (Daniel Veillard),
    Make HTML parser non-recursive (Eugene Pimenov)
  </li>
  <li> Portability:
    relaxng.c: cast to allow compilation with sun studio 11 (Ben Walton),
    Fix build failure on Sparc solaris (Roumen Petrov),
    use autoreconf in autogen.sh (Daniel Veillard),
    Fix build with mingw (Roumen Petrov),
    Upgrade some of the configure and autogen (Daniel Veillard),
    Fix relaxNG tests in runtest for Windows runtest.c: initialize ret (Rob Richards),
    Fix a const warning in xmlNodeSetBase (Martin Trappel),
    Fix python generator to not use deprecated xmllib (Daniel Veillard),
    Update some automake files (Daniel Veillard),
    598785 Fix nanohttp on Windows (spadix)
  </li>
  <li> Bug Fixes:
    libxml violates the zlib interface and crashes (Mark Adler),
    Fix broken escape behaviour in regexp ranges (Daniel Veillard),
    Fix  missing win32 libraries in libxml-2.0.pc (Volker Grabsch),
    Fix detection of python linker flags (Daniel Macks),
    fix build error in libxml2/python (Paul Smith),
    ChunkParser: Incorrect decoding of small xml files (Raul Hudea),
    htmlCheckEncoding doesn't update input-end after shrink (Eugene Pimenov),
    Fix a missing #ifdef (Daniel Veillard),
    Fix encoding selection for xmlParseInNodeContext (Daniel Veillard),
    xmlPreviousElementSibling mistake (FranÃ§ois Delyon),
    608773 add a missing check in xmlGROW (Daniel Veillard),
    Fix xmlParseInNodeContext for HTML content (Daniel Veillard),
    Fix lost namespace when copying node * tree.c: reconcile namespace if not found (Rob Richards),
    Fix some missing commas in HTML element lists (Eugene Pimenov),
    Correct variable type to unsigned (Nikolay Sivov),
    Recognize ID attribute in HTML without DOCTYPE (Daniel Veillard),
    Fix memory leak in xmlXPathEvalExpression() (Martin),
    Fix an init bug in global.c (Kai Henning),
    Fix xmlNodeSetBase() comment (Daniel Veillard),
    Fix broken escape behaviour in regexp ranges (Daniel Veillard),
    Don't give default HTML boolean attribute values in parser (Daniel Veillard),
    xmlCtxtResetLastError should reset ctxt-errNo (Daniel Veillard)
  </li>
  <li> Cleanups:
    Cleanup a couple of weirdness in HTML parser (Eugene Pimenov)
  </li>
</ul><h3>2.7.6: Oct  6 2009</h3><ul>
  <li> Bug Fixes:
     Restore thread support in default configuration (Andrew W. Nosenko),
     URI with no path parsing problem (Daniel Veillard),
     Minor patch for conditional defines in threads.c (Eric Zurcher)
  </li>
</ul><h3>2.7.5: Sep 24 2009</h3><ul>
  <li> Bug Fixes:
    Restore behavior of --with-threads without argument (Andrew W. Nosenko),
    Fix memory leak when doc is NULL (Rob Richards),
    595792 fixing a RelaxNG bug introduced in 2.7.4 (Daniel Veillard),
    Fix a Relaxng bug raised by libvirt test suite (Daniel Veillard),
    Fix a parsing problem with little data at startup (Daniel Veillard),
    link python module with python library (Frederic Crozat),
    594874 Forgot an fclose in xmllint (Daniel Veillard)
  </li>
  <li> Cleanup:
    Adding symbols.xml to EXTRA_DIST (Daniel Veillard)
  </li>
</ul><h3>2.7.4: Sep 10 2009</h3><ul>
  <li>Improvements:
    Switch to GIT (GNOME),
    Add symbol versioning to libxml2 shared libs (Daniel Veillard)
  </li>
  <li>Portability:
    593857 try to work around thread pbm MinGW 4.4 (Daniel Veillard),
    594250 rename ATTRIBUTE_ALLOC_SIZE to avoid clashes (Daniel Veillard),
    Fix Windows build * relaxng.c: fix windows build (Rob Richards),
    Fix the globals.h to use XMLPUBFUN (Paul Smith),
    Problem with extern extern in header (Daniel Veillard),
    Add -lnetwork for compiling on Haiku (Scott McCreary),
    Runtest portability patch for Solaris (Tim Rice),
    Small patch to accommodate the Haiku OS (Scott McCreary),
    584605 package VxWorks folder in the distribution (Daniel Veillard),
    574017 Realloc too expensive on most platform (Daniel Veillard),
    Fix windows build (Rob Richards),
    545579 doesn't compile without schema support (Daniel Veillard),
    xmllint use xmlGetNodePath when not compiled in (Daniel Veillard),
    Try to avoid __imp__xmlFree link trouble on msys (Daniel Veillard),
    Allow to select the threading system on Windows (LRN),
    Fix Solaris binary links, cleanups (Daniel Veillard),
    Bug 571059 â MSVC doesn't work with the bakefile (Intron),
    fix ATTRIBUTE_PRINTF header clash (Belgabor and Mike Hommey),
    fixes for Borland/CodeGear/Embarcadero compilers (Eric Zurcher)
  </li>
  <li>Documentation:
    544910 typo: "renciliateNs" (Leonid Evdokimov),
    Add VxWorks to list of OSes (Daniel Veillard),
    Regenerate the documentation and update for git (Daniel Veillard),
    560524 Â¿ xmlTextReaderLocalName description (Daniel Veillard),
    Added sponsoring by AOE media for the server (Daniel Veillard),
    updated URLs for GNOME (Vincent Lefevre),
    more warnings about xmlCleanupThreads and xmlCleanupParser (Daniel Veillard)
  </li>
  <li>Bug fixes:
    594514 memory leaks - duplicate initialization (MOD),
    Wrong block opening in htmlNodeDumpOutputInternal (Daniel Veillard),
    492317 Fix  Relax-NG validation problems (Daniel Veillard),
    558452 fight with reg test and error report (Daniel Veillard),
    558452 RNG compilation of optional multiple child (Daniel Veillard),
    579746 XSD validation not correct / nilable groups (Daniel Veillard),
    502960 provide namespace stack when parsing entity (Daniel Veillard),
    566012 part 2 fix regression tests and push mode (Daniel Veillard),
    566012 autodetected encoding and encoding conflict (Daniel Veillard),
    584220 xpointer(/) and xinclude problems (Daniel Veillard),
    587663 Incorrect Attribute-Value Normalization (Daniel Veillard),
    444994 HTML chunked failure for attribute with &lt;&gt; (Daniel Veillard),
    Fix end of buffer char being split in XML parser (Daniel Veillard),
    Non ASCII character may be split at buffer end (Adiel Mittmann),
    440226 Add xmlXIncludeProcessTreeFlagsData API (Stefan Behnel),
    572129 speed up parsing of large HTML text nodes (Markus Kull),
    Fix HTML parsing with 0 character in CDATA (Daniel Veillard),
    Fix SetGenericErrorFunc and SetStructured clash (Wang Lam),
    566012  Incomplete EBCDIC parsing support (Martin Kogler),
    541335 HTML avoid creating 2 head or 2 body element (Daniel Veillard),
    541237 error correcting missing end tags in HTML (Daniel Veillard),
    583439 missing line numbers in push mode (Daniel Veillard),
    587867 xmllint --html --xmlout serializing as HTML (Daniel Veillard),
    559501 avoid select and use poll for nanohttp (Raphael Prevost),
    559410 -  Regexp bug on (...)? constructs (Daniel Veillard),
    Fix a small problem on previous HTML parser patch (Daniel Veillard),
    592430 -  HTML parser runs into endless loop (Daniel Veillard),
    447899 potential double free in xmlFreeTextReader (Daniel Veillard),
    446613 small validation bug mixed content with NS (Daniel Veillard),
    Fix the problem of revalidating a doc with RNG (Daniel Veillard),
    Fix xmlKeepBlanksDefault to not break indent (Nick Wellnhofer),
    512131 refs from externalRef part need to be added (Daniel Veillard),
    512131 crash in xmlRelaxNGValidateFullElement (Daniel Veillard),
    588441 allow '.' in HTML Names even if invalid (Daniel Veillard),
    582913 Fix htmlSetMetaEncoding() to be nicer (Daniel Veillard),
    579317 Try to find the HTML encoding information (Daniel Veillard),
    575875 don't output charset=html (Daniel Veillard),
    571271 fix semantic of xsd:all with minOccurs=0 (Daniel Veillard),
    570702 fix a bug in regexp determinism checking (Daniel Veillard),
    567619 xmlValidateNotationUse missing param test (Daniel Veillard),
    574393 Â¿ utf-8 filename magic for compressed files (Hans Breuer),
    Fix a couple of problems in the parser (Daniel Veillard),
    585505 Â¿ Document ids and refs populated by XSD (Wayne Jensen),
    582906 XSD validating multiple imports of the same schema (Jason Childs),
    Bug 582887 Â¿ problems validating complex schemas (Jason Childs),
    Bug 579729 Â¿ fix XSD schemas parsing crash (Miroslav Bajtos),
    576368 Â¿ htmlChunkParser with special attributes (Jiri Netolicky),
    Bug 565747 Â¿ relax anyURI data character checking (Vincent Lefevre),
    Preserve attributes of include start on tree copy (Petr Pajas),
    Skip silently unrecognized XPointer schemes (Jakub Wilk),
    Fix leak on SAX1, xmllint --sax1 option and debug (Daniel Veillard),
    potential NULL dereference on non-glibc (Jim Meyering),
    Fix an XSD validation crash (Daniel Veillard),
    Fix a regression in streaming entities support (Daniel Veillard),
    Fix a couple of ABI issues with C14N 1.1 (Aleksey Sanin),
    Aleksey Sanin support for c14n 1.1 (Aleksey Sanin),
    reader bug fix with entities (Daniel Veillard),
    use options from current parser ctxt for external entities (Rob Richards),
    581612 use %s to printf strings (Christian Persch),
    584605 change the threading initialization sequence (Igor Novoseltsev),
    580705 keep line numbers in HTML parser (Aaron Patterson),
    581803 broken HTML table attributes init (Roland Steiner),
    do not set error code in xmlNsWarn (Rob Richards),
    564217 fix structured error handling problems,
    reuse options from current parser for entities (Rob Richards),
    xmlXPathRegisterNs should not allow enpty prefixes (Daniel Veillard),
    add a missing check in xmlAddSibling (Kris Breuker),
    avoid leaks on errors (Jinmei Tatuya)
  </li>
  <li>Cleanup:
    Chasing dead assignments reported by clang-scan (Daniel Veillard),
    A few more safety cleanup raised by scan (Daniel Veillard),
    Fixing assorted potential problems raised by scan (Daniel Veillard),
    Potential uninitialized arguments raised by scan (Daniel Veillard),
    Fix a bunch of scan 'dead increments' and cleanup (Daniel Veillard),
    Remove a pedantic warning (Daniel Veillard),
    555833 always use rm -f in uninstall-local (Daniel Veillard),
    542394 xmlRegisterOutputCallbacks MAX_INPUT_CALLBACK (Daniel Veillard),
    Autoregenerate libxml2.syms automated checkings (Daniel Veillard),
    Make xmlRecoverDoc const (Martin Trappel) (Daniel Veillard),
    Both args of xmlStrcasestr are const (Daniel Veillard),
    hide the nbParse* variables used for debugging (Mike Hommey),
    570806 changed include of config.h (William M. Brack),
    cleanups and error reports when xmlTextWriterVSprintf fails (Jinmei Tatuya)
  </li>
</ul><h3>2.7.3: Jan 18 2009</h3><ul>
  <li>Build fix: fix build when HTML support is not included.</li>
  <li>Bug fixes: avoid memory overflow in gigantic text nodes,
      indentation problem on the writed (Rob Richards),
      xmlAddChildList pointer problem (Rob Richards and Kevin Milburn),
      xmlAddChild problem with attribute (Rob Richards and Kris Breuker),
      avoid a memory leak in an edge case (Daniel Zimmermann),
      deallocate some pthread data (Alex Ott).</li>
  <li>Improvements: configure option to avoid rebuilding docs (Adrian Bunk),
      limit text nodes to 10MB max by default, add element traversal
      APIs, add a parser option to enable pre 2.7 SAX behavior (Rob Richards),
      add gcc malloc checking (Marcus Meissner), add gcc printf like functions
      parameters checking (Marcus Meissner).</li>
</ul><h3>2.7.2: Oct 3 2008</h3><ul>
    <li>Portability fix: fix solaris compilation problem, fix compilation
        if XPath is not configured in</li>
    <li>Bug fixes: nasty entity bug introduced in 2.7.0, restore old behaviour
        when saving an HTML doc with an xml dump function, HTML UTF-8 parsing
        bug, fix reader custom error handlers (Riccardo Scussat)
    </li><li>Improvement: xmlSave options for more flexibility to save as
        XML/HTML/XHTML, handle leading BOM in HTML documents</li>
</ul><h3>2.7.1: Sep 1 2008</h3><ul>
    <li>Portability fix: Borland C fix (Moritz Both)</li>
    <li>Bug fixes: python serialization wrappers, XPath QName corner
        case handking and leaks (Martin)</li>
    <li>Improvement: extend the xmlSave to handle HTML documents and trees</li>
    <li>Cleanup: python serialization wrappers</li>
</ul><h3>2.7.0: Aug 30 2008</h3><ul>
  <li>Documentation: switch ChangeLog to UTF-8, improve mutithreads and
      xmlParserCleanup docs</li>
  <li>Portability fixes: Older Win32 platforms (Rob Richards), MSVC
      porting fix (Rob Richards), Mac OS X regression tests (Sven Herzberg),
      non GNUCC builds (Rob Richards), compilation on Haiku (Andreas FÃ¤rber)
      </li>
  <li>Bug fixes: various realloc problems (Ashwin), potential double-free
      (Ashwin), regexp crash, icrash with invalid whitespace facets (Rob
      Richards), pattern fix when streaming (William Brack), various XML
      parsing and validation fixes based on the W3C regression tests, reader
      tree skipping function fix (Ashwin), Schemas regexps escaping fix
      (Volker Grabsch), handling of entity push errors (Ashwin), fix a slowdown
      when encoder can't serialize characters on output</li>
  <li>Code cleanup: compilation fix without the reader, without the output
      (Robert Schwebel), python whitespace (Martin), many space/tabs cleanups,
      serious cleanup of the entity handling code</li>
  <li>Improvement: switch parser to XML-1.0 5th edition, add parsing flags
      for old versions, switch URI parsing to RFC 3986,
      add xmlSchemaValidCtxtGetParserCtxt (Holger Kaelberer),
      new hashing functions for dictionaries (based on Stefan Behnel work),
      improve handling of misplaced html/head/body in HTML parser, better
      regression test tools and code coverage display, better algorithms
      to detect various versions of the billion laughts attacks, make
      arbitrary parser limits avoidable as a parser option</li>
</ul><h3>2.6.32: Apr 8 2008</h3><ul>
  <li>Documentation: returning heap memory to kernel (Wolfram Sang),
      trying to clarify xmlCleanupParser() use, xmlXPathContext improvement
      (Jack Jansen), improve the *Recover* functions documentation,
      XmlNodeType doc link fix (Martijn Arts)</li>
  <li>Bug fixes: internal subset memory leak (Ashwin), avoid problem with
      paths starting with // (Petr Sumbera), streaming XSD validation callback
      patches (Ashwin), fix redirection on port other than 80 (William Brack),
      SAX2 leak (Ashwin), XInclude fragment of own document (Chris Ryan),
      regexp bug with '.' (Andrew Tosh), flush the writer at the end of the
      document (Alfred Mickautsch), output I/O bug fix (William Brack),
      writer CDATA output after a text node (Alex Khesin), UTF-16 encoding
      detection (William Brack), fix handling of empty CDATA nodes for Safari
      team, python binding problem with namespace nodes, improve HTML parsing
      (Arnold Hendriks), regexp automata build bug, memory leak fix (Vasily
      Chekalkin), XSD test crash, weird system parameter entity parsing problem,
      allow save to file:///X:/ windows paths, various attribute normalisation
      problems, externalSubsetSplit fix (Ashwin), attribute redefinition in
      the DTD (Ashwin), fix in char ref parsing check (Alex Khesin), many
      out of memory handling fixes (Ashwin), XPath out of memory handling fixes
      (Alvaro Herrera), various realloc problems (Ashwin), UCS4 encoding
      conversion buffer size (Christian Fruth), problems with EatName
      functions on memory errors, BOM handling in external parsed entities
      (Mark Rowe)</li>
  <li>Code cleanup: fix build under VS 2008 (David Wimsey), remove useless
      mutex in xmlDict (Florent Guilian), Mingw32 compilation fix (Carlo
      Bramini), Win and MacOS EOL cleanups (Florent Guiliani), iconv need
      a const detection (Roumen Petrov), simplify xmlSetProp (Julien Charbon),
      cross compilation fixes for Mingw (Roumen Petrov), SCO Openserver build
      fix (Florent Guiliani), iconv uses const on Win32 (Rob Richards),
      duplicate code removal (Ashwin), missing malloc test and error reports
      (Ashwin), VMS makefile fix (Tycho Hilhorst)</li>
  <li>improvements: better plug of schematron in the normal error handling
      (Tobias Minich)</li>
</ul><h3>2.6.31: Jan 11 2008</h3><ul>
  <li>Security fix: missing of checks in UTF-8 parsing</li>
  <li>Bug fixes: regexp bug, dump attribute from XHTML document, fix
      xmlFree(NULL) to not crash in debug mode, Schematron parsing crash
      (Rob Richards), global lock free on Windows (Marc-Antoine Ruel),
      XSD crash due to double free (Rob Richards), indentation fix in
      xmlTextWriterFullEndElement (Felipe Pena), error in attribute type
      parsing if attribute redeclared, avoid crash in hash list scanner if
      deleting elements, column counter bug fix (Christian Schmidt),
      HTML embed element saving fix (Stefan Behnel), avoid -L/usr/lib
      output from xml2-config (Fred Crozat), avoid an xmllint crash 
      (Stefan Kost), don't stop HTML parsing on out of range chars.
      </li>
  <li>Code cleanup: fix open() call third argument, regexp cut'n paste
      copy error, unused variable in __xmlGlobalInitMutexLock (Hannes Eder),
      some make distcheck related fixes (John Carr)</li>
  <li>Improvements: HTTP Header: includes port number (William Brack),
      testURI --debug option, </li>
</ul><h3>2.6.30: Aug 23 2007</h3><ul>
  <li>Portability: Solaris crash on error handling, windows path fixes
      (Roland Schwarz and Rob Richards), mingw build (Roland Schwarz)</li>
  <li>Bugfixes: xmlXPathNodeSetSort problem (William Brack), leak when
      reusing a writer for a new document (Dodji Seketeli), Schemas
      xsi:nil handling patch (Frank Gross), relative URI build problem
      (Patrik Fimml), crash in xmlDocFormatDump, invalid char in comment
      detection bug, fix disparity with xmlSAXUserParseMemory, automata
      generation for complex regexp counts problems, Schemas IDC import
      problems (Frank Gross), xpath predicate evailation error handling
      (William Brack)</li>
</ul><h3>2.6.29: Jun 12 2007</h3><ul>
  <li>Portability: patches from Andreas Stricke for WinCEi,
      fix compilation warnings (William Brack), avoid warnings on Apple OS/X
      (Wendy Doyle and Mark Rowe), Windows compilation and threading
      improvements (Rob Richards), compilation against old Python versions,
      new GNU tar changes (Ryan Hill)</li>
  <li>Documentation: xmlURIUnescapeString comment, </li>
  <li>Bugfixes: xmlBufferAdd problem (Richard Jones), 'make valgrind'
      flag fix (Richard Jones), regexp interpretation of \,
      htmlCreateDocParserCtxt (Jean-Daniel Dupas), configure.in
      typo (Bjorn Reese), entity content failure, xmlListAppend() fix
      (Georges-AndrÃ© Silber), XPath number serialization (William Brack),
      nanohttp gzipped stream fix (William Brack and Alex Cornejo),
      xmlCharEncFirstLine typo (Mark Rowe), uri bug (FranÃ§ois Delyon),
      XPath string value of PI nodes (William Brack), XPath node set
      sorting bugs (William Brack), avoid outputting namespace decl
      dups in the writer (Rob Richards), xmlCtxtReset bug, UTF-8 encoding
      error handling, recustion on next in catalogs, fix a Relax-NG crash,
      workaround wrong file: URIs, htmlNodeDumpFormatOutput on attributes,
      invalid character in attribute detection bug, big comments before 
      internal subset streaming bug, HTML parsing of attributes with : in
      the name, IDness of name in HTML (Dagfinn I. MannsÃ¥ker) </li>
  <li>Improvement: keep URI query parts in raw form (Richard Jones),
      embed tag support in HTML (Michael Day) </li>
</ul><h3>2.6.28: Apr 17 2007</h3><ul>
  <li>Documentation: comment fixes (Markus Keim), xpath comments fixes too
      (James Dennett)</li>
  <li>Bug fixes: XPath bug (William Brack), HTML parser autoclose stack usage
      (Usamah Malik), various regexp bug fixes (DV and William), path conversion
      on Windows (Igor Zlatkovic), htmlCtxtReset fix (Michael Day), XPath
      principal node of axis bug, HTML serialization of some codepoint
      (Steven Rainwater), user data propagation in XInclude (Michael Day),
      standalone and XML decl detection (Michael Day), Python id output
      for some id, fix the big python string memory leak, URI parsing fixes
      (StÃ©phane Bidoul and William), long comments parsing bug (William),
      concurrent threads initialization (Ted Phelps), invalid char
      in text XInclude (William), XPath memory leak (William), tab in
      python problems (Andreas Hanke), XPath node comparison error
      (Oleg Paraschenko), cleanup patch for reader (Julien Reichel),
      XML Schemas attribute group (William), HTML parsing problem (William),
      fix char 0x2d in regexps (William), regexp quantifier range with
      min occurs of 0 (William), HTML script/style parsing (Mike Day)</li>
  <li>Improvement: make xmlTextReaderSetup() public</li>
  <li>Compilation and postability: fix a missing include problem (William),
      __ss_family on AIX again (BjÃ¶rn Wiberg), compilation without zlib
      (Michael Day), catalog patch for Win32 (Christian Ehrlicher),
      Windows CE fixes (Andreas Stricke)</li>
  <li>Various CVS to SVN infrastructure changes</li>
</ul><h3>2.6.27: Oct 25 2006</h3><ul>
  <li>Portability fixes: file names on windows (Roland Schwingel, 
      Emelyanov Alexey), windows compile fixup (Rob Richards), 
      AIX iconv() is apparently case sensitive</li>
  <li>improvements: Python XPath types mapping (Nic Ferrier), XPath optimization
      (Kasimier), add xmlXPathCompiledEvalToBoolean (Kasimier), Python node
      equality and comparison (Andreas Pakulat), xmlXPathCollectAndTest
      improvememt (Kasimier), expose if library was compiled with zlib 
      support (Andrew Nosenko), cache for xmlSchemaIDCMatcher structs
      (Kasimier), xmlTextConcat should work with comments and PIs (Rob
      Richards), export htmlNewParserCtxt needed by Michael Day, refactoring
      of catalog entity loaders (Michael Day), add XPointer support to 
      python bindings (Ross Reedstrom, Brian West and Stefan Anca), 
      try to sort out most file path to URI conversions and xmlPathToUri,
      add --html --memory case to xmllint</li>
  <li>building fix: fix --with-minimum (Felipe Contreras), VMS fix, 
      const'ification of HTML parser structures (Matthias Clasen),
      portability fix (Emelyanov Alexey), wget autodetection (Peter
      Breitenlohner),  remove the build path recorded in the python
      shared module, separate library flags for shared and static builds
      (Mikhail Zabaluev), fix --with-minimum --with-sax1 builds, fix
      --with-minimum --with-schemas builds</li>
  <li>bug fix: xmlGetNodePath fix (Kasimier), xmlDOMWrapAdoptNode and
      attribute (Kasimier), crash when using the recover mode, 
      xmlXPathEvalExpr problem (Kasimier), xmlXPathCompExprAdd bug (Kasimier),
      missing destroy in xmlFreeRMutex (Andrew Nosenko), XML Schemas fixes
      (Kasimier), warning on entities processing, XHTML script and style
      serialization (Kasimier), python generator for long types, bug in
      xmlSchemaClearValidCtxt (Bertrand Fritsch), xmlSchemaXPathEvaluate
      allocation bug (Marton Illes), error message end of line (Rob Richards),
      fix attribute serialization in writer (Rob Richards), PHP4 DTD validation
      crash, parser safety patch (Ben Darnell), _private context propagation
      when parsing entities (with Michael Day), fix entities behaviour when 
      using SAX, URI to file path fix (Mikhail Zabaluev), disappearing validity
      context, arg error in SAX callback (Mike Hommey), fix mixed-content
      autodetect when using --noblanks, fix xmlIOParseDTD error handling,
      fix bug in xmlSplitQName on special Names, fix Relax-NG element content
      validation bug, fix xmlReconciliateNs bug, fix potential attribute 
      XML parsing bug, fix line/column accounting in XML parser, chunking bug
      in the HTML parser on script, try to detect obviously buggy HTML
      meta encoding indications, bugs with encoding BOM and xmlSaveDoc, 
      HTML entities in attributes parsing, HTML minimized attribute values,
      htmlReadDoc and htmlReadIO were broken, error handling bug in
      xmlXPathEvalExpression (Olaf Walkowiak), fix a problem in
      htmlCtxtUseOptions, xmlNewInputFromFile could leak (Marius Konitzer),
      bug on misformed SSD regexps (Christopher Boumenot)
      </li>
  <li>documentation: warning about XML_PARSE_COMPACT (Kasimier Buchcik),
      fix xmlXPathCastToString documentation, improve man pages for
      xmllitn and xmlcatalog (Daniel Leidert), fixed comments of a few
      functions</li>
</ul><h3>2.6.26: Jun 6 2006</h3><ul>
  <li>portability fixes: Python detection (Joseph Sacco), compilation
    error(William Brack and Graham Bennett), LynxOS patch (Olli Savia)</li>
  <li>bug fixes: encoding buffer problem, mix of code and data in
    xmlIO.c(Kjartan Maraas), entities in XSD validation (Kasimier Buchcik),
    variousXSD validation fixes (Kasimier), memory leak in pattern (Rob
    Richards andKasimier), attribute with colon in name (Rob Richards), XPath
    leak inerror reporting (Aleksey Sanin), XInclude text include of
    selfdocument.</li>
  <li>improvements: Xpath optimizations (Kasimier), XPath object
    cache(Kasimier)</li>
</ul><h3>2.6.25: Jun 6 2006:</h3><p>Do not use or package 2.6.25</p><h3>2.6.24: Apr 28 2006</h3><ul>
  <li>Portability fixes: configure on Windows, testapi compile on windows
      (Kasimier Buchcik, venkat naidu), Borland C++ 6 compile (Eric Zurcher),
      HP-UX compiler workaround (Rick Jones), xml2-config bugfix, gcc-4.1
      cleanups, Python detection scheme (Joseph Sacco), UTF-8 file paths on
      Windows (Roland Schwingel).
      </li>
  <li>Improvements: xmlDOMWrapReconcileNamespaces xmlDOMWrapCloneNode (Kasimier
      Buchcik), XML catalog debugging (Rick Jones), update to Unicode 4.01.</li>
  <li>Bug fixes: xmlParseChunk() problem in 2.6.23, xmlParseInNodeContext()
      on HTML docs, URI behaviour on Windows (Rob Richards), comment streaming
      bug, xmlParseComment (with William Brack), regexp bug fixes (DV &amp;
      Youri Golovanov), xmlGetNodePath on text/CDATA (Kasimier),
      one Relax-NG interleave bug, xmllint --path and --valid,
      XSD bugfixes (Kasimier), remove debug
      left in Python bindings (Nic Ferrier), xmlCatalogAdd bug (Martin Cole),
      xmlSetProp fixes (Rob Richards), HTML IDness (Rob Richards), a large
      number of cleanups and small fixes based on Coverity reports, bug
      in character ranges, Unicode tables const (Aivars Kalvans), schemas
      fix (Stefan Kost), xmlRelaxNGParse error deallocation, 
      xmlSchemaAddSchemaDoc error deallocation, error handling on unallowed
      code point, ixmllint --nonet to never reach the net (Gary Coady),
      line break in writer after end PI (Jason Viers). </li>
  <li>Documentation: man pages updates and cleanups (Daniel Leidert).</li>
  <li>New features: Relax NG structure error handlers.</li>
</ul><h3>2.6.23: Jan 5 2006</h3><ul>
  <li>portability fixes: Windows (Rob Richards), getaddrinfo on Windows
    (Kolja Nowak, Rob Richards), icc warnings (Kjartan Maraas),
    --with-minimum compilation fixes (William Brack), error case handling fix
    on Solaris (Albert Chin), don't use 'list' as parameter name reported by
    Samuel Diaz Garcia, more old Unices portability fixes (Albert Chin),
    MinGW compilation (Mark Junker), HP-UX compiler warnings (Rick
  Jones),</li>
  <li>code cleanup: xmlReportError (Adrian Mouat), remove xmlBufferClose
    (Geert Jansen), unreachable code (Oleksandr Kononenko), refactoring
    parsing code (Bjorn Reese)</li>
  <li>bug fixes: xmlBuildRelativeURI and empty path (William Brack),
    combinatory explosion and performances in regexp code, leak in
    xmlTextReaderReadString(), xmlStringLenDecodeEntities problem (Massimo
    Morara), Identity Constraints bugs and a segfault (Kasimier Buchcik),
    XPath pattern based evaluation bugs (DV &amp; Kasimier),
    xmlSchemaContentModelDump() memory leak (Kasimier), potential leak in
    xmlSchemaCheckCSelectorXPath(), xmlTextWriterVSprintf() misuse of
    vsnprintf (William Brack), XHTML serialization fix (Rob Richards), CRLF
    split problem (William), issues with non-namespaced attributes in
    xmlAddChild() xmlAddNextSibling() and xmlAddPrevSibling() (Rob Richards),
    HTML parsing of script, Python must not output to stdout (Nic Ferrier),
    exclusive C14N namespace visibility (Aleksey Sanin), XSD datatype
    totalDigits bug (Kasimier Buchcik), error handling when writing to an
    xmlBuffer (Rob Richards), runtest schemas error not reported (Hisashi
    Fujinaka), signed/unsigned problem in date/time code (Albert Chin), fix
    XSI driven XSD validation (Kasimier), parsing of xs:decimal (Kasimier),
    fix DTD writer output (Rob Richards), leak in xmlTextReaderReadInnerXml
    (Gary Coady), regexp bug affecting schemas (Kasimier), configuration of
    runtime debugging (Kasimier), xmlNodeBufGetContent bug on entity refs
    (Oleksandr Kononenko), xmlRegExecPushString2 bug (Sreeni Nair),
    compilation and build fixes (Michael Day), removed dependencies on
    xmlSchemaValidError (Kasimier), bug with &lt;xml:foo/&gt;, more XPath
    pattern based evaluation fixes (Kasimier)</li>
  <li>improvements: XSD Schemas redefinitions/restrictions (Kasimier
    Buchcik), node copy checks and fix for attribute (Rob Richards), counted
    transition bug in regexps, ctxt-&gt;standalone = -2 to indicate no
    standalone attribute was found, add xmlSchemaSetParserStructuredErrors()
    (Kasimier Buchcik), add xmlTextReaderSchemaValidateCtxt() to API
    (Kasimier), handle gzipped HTTP resources (Gary Coady), add
    htmlDocDumpMemoryFormat. (Rob Richards),</li>
  <li>documentation: typo (Michael Day), libxml man page (Albert Chin), save
    function to XML buffer (Geert Jansen), small doc fix (Aron Stansvik),</li>
</ul><h3>2.6.22: Sep 12 2005</h3><ul>
  <li>build fixes: compile without schematron (StÃ©phane Bidoul)</li>
  <li>bug fixes: xmlDebugDumpNode on namespace node (Oleg Paraschenko)i,
    CDATA push parser bug, xmlElemDump problem with XHTML1 doc,
    XML_FEATURE_xxx clash with expat headers renamed XML_WITH_xxx, fix some
    output formatting for meta element (Rob Richards), script and style
    XHTML1 serialization (David Madore), Attribute derivation fixups in XSD
    (Kasimier Buchcik), better IDC error reports (Kasimier Buchcik)</li>
  <li>improvements: add XML_SAVE_NO_EMPTY xmlSaveOption (Rob Richards), add
    XML_SAVE_NO_XHTML xmlSaveOption, XML Schemas improvements preparing for
    derive (Kasimier Buchcik).</li>
  <li>documentation: generation of gtk-doc like docs, integration with
    devhelp.</li>
</ul><h3>2.6.21: Sep 4 2005</h3><ul>
  <li>build fixes: Cygwin portability fixes (Gerrit P. Haase), calling
    convention problems on Windows (Marcus Boerger), cleanups based on Linus'
    sparse tool, update of win32/configure.js (Rob Richards), remove warnings
    on Windows(Marcus Boerger), compilation without SAX1, detection of the
    Python binary, use $GCC inestad of $CC = 'gcc' (Andrew W. Nosenko),
    compilation/link with threads and old gcc, compile problem by C370 on
    Z/OS,</li>
  <li>bug fixes: http_proxy environments (Peter Breitenlohner), HTML UTF-8
    bug (Jiri Netolicky), XPath NaN compare bug (William Brack),
    htmlParseScript potential bug, Schemas regexp handling of spaces, Base64
    Schemas comparisons NIST passes, automata build error xsd:all,
    xmlGetNodePath for namespaced attributes (Alexander Pohoyda), xmlSchemas
    foreign namespaces handling, XML Schemas facet comparison (Kupriyanov
    Anatolij), xmlSchemaPSimpleTypeErr error report (Kasimier Buchcik), xml:
    namespace ahndling in Schemas (Kasimier), empty model group in Schemas
    (Kasimier), wildcard in Schemas (Kasimier), URI composition (William),
    xs:anyType in Schemas (Kasimier), Python resolver emitting error
    messages directly, Python xmlAttr.parent (Jakub Piotr Clapa), trying to
    fix the file path/URI conversion, xmlTextReaderGetAttribute fix (Rob
    Richards), xmlSchemaFreeAnnot memleak (Kasimier), HTML UTF-8
    serialization, streaming XPath, Schemas determinism detection problem,
    XInclude bug, Schemas context type (Dean Hill), validation fix (Derek
    Poon), xmlTextReaderGetAttribute[Ns] namespaces (Rob Richards), Schemas
    type fix (Kuba Nowakowski), UTF-8 parser bug, error in encoding handling,
    xmlGetLineNo fixes, bug on entities handling, entity name extraction in
    error handling with XInclude, text nodes in HTML body tags (Gary Coady),
    xml:id and IDness at the treee level fixes, XPath streaming patterns
  bugs.</li>
  <li>improvements: structured interfaces for schemas and RNG error reports
    (Marcus Boerger), optimization of the char data inner loop parsing
    (thanks to Behdad Esfahbod for the idea), schematron validation though
    not finished yet, xmlSaveOption to omit XML declaration, keyref match
    error reports (Kasimier), formal expression handling code not plugged
    yet, more lax mode for the HTML parser, parser XML_PARSE_COMPACT option
    for text nodes allocation.</li>
  <li>documentation: xmllint man page had --nonet duplicated</li>
</ul><h3>2.6.20: Jul 10 2005</h3><ul>
  <li>build fixes: Windows build (Rob Richards), Mingw compilation (Igor
    Zlatkovic), Windows Makefile (Igor), gcc warnings (Kasimier and
    andriy@google.com), use gcc weak references to pthread to avoid the
    pthread dependency on Linux, compilation problem (Steve Nairn), compiling
    of subset (Morten Welinder), IPv6/ss_family compilation (William Brack),
    compilation when disabling parts of the library, standalone test
    distribution.</li>
  <li>bug fixes: bug in lang(), memory cleanup on errors (William Brack),
    HTTP query strings (Aron Stansvik), memory leak in DTD (William), integer
    overflow in XPath (William), nanoftp buffer size, pattern "." apth fixup
    (Kasimier), leak in tree reported by Malcolm Rowe, replaceNode patch
    (Brent Hendricks), CDATA with NULL content (Mark Vakoc), xml:base fixup
    on XInclude (William), pattern fixes (William), attribute bug in
    exclusive c14n (Aleksey Sanin), xml:space and xml:lang with SAX2 (Rob
    Richards), namespace trouble in complex parsing (Malcolm Rowe), XSD type
    QNames fixes (Kasimier), XPath streaming fixups (William), RelaxNG bug
    (Rob Richards), Schemas for Schemas fixes (Kasimier), removal of ID (Rob
    Richards), a small RelaxNG leak, HTML parsing in push mode bug (James
    Bursa), failure to detect UTF-8 parsing bugs in CDATA sections,
    areBlanks() heuristic failure, duplicate attributes in DTD bug
  (William).</li>
  <li>improvements: lot of work on Schemas by Kasimier Buchcik both on
    conformance and streaming, Schemas validation messages (Kasimier Buchcik,
    Matthew Burgess), namespace removal at the python level (Brent
    Hendricks), Update to new Schemas regression tests from W3C/Nist
    (Kasimier), xmlSchemaValidateFile() (Kasimier), implementation of
    xmlTextReaderReadInnerXml and xmlTextReaderReadOuterXml (James Wert),
    standalone test framework and programs, new DOM import APIs
    xmlDOMWrapReconcileNamespaces() xmlDOMWrapAdoptNode() and
    xmlDOMWrapRemoveNode(), extension of xmllint capabilities for SAX and
    Schemas regression tests, xmlStopParser() available in pull mode too,
    ienhancement to xmllint --shell namespaces support, Windows port of the
    standalone testing tools (Kasimier and William),
    xmlSchemaValidateStream() xmlSchemaSAXPlug() and xmlSchemaSAXUnplug() SAX
    Schemas APIs, Schemas xmlReader support.</li>
</ul><h3>2.6.19: Apr 02 2005</h3><ul>
  <li>build fixes: drop .la from RPMs, --with-minimum build fix (William
    Brack), use XML_SOCKLEN_T instead of SOCKLEN_T because it breaks with AIX
    5.3 compiler, fixed elfgcchack.h generation and PLT reduction code on
    Linux/ELF/gcc4</li>
  <li>bug fixes: schemas type decimal fixups (William Brack), xmmlint return
    code (Gerry Murphy), small schemas fixes (Matthew Burgess and GUY
    Fabrice), workaround "DAV:" namespace brokenness in c14n (Aleksey Sanin),
    segfault in Schemas (Kasimier Buchcik), Schemas attribute validation
    (Kasimier), Prop related functions and xmlNewNodeEatName (Rob Richards),
    HTML serialization of name attribute on a elements, Python error handlers
    leaks and improvement (Brent Hendricks), uninitialized variable in
    encoding code, Relax-NG validation bug, potential crash if
    gnorableWhitespace is NULL, xmlSAXParseDoc and xmlParseDoc signatures,
    switched back to assuming UTF-8 in case no encoding is given at
    serialization time</li>
  <li>improvements: lot of work on Schemas by Kasimier Buchcik on facets
    checking and also mixed handling.</li>
  <li></li>
</ul><h3>2.6.18: Mar 13 2005</h3><ul>
  <li>build fixes: warnings (Peter Breitenlohner), testapi.c generation,
    Bakefile support (Francesco Montorsi), Windows compilation (Joel Reed),
    some gcc4 fixes, HP-UX portability fixes (Rick Jones).</li>
  <li>bug fixes: xmlSchemaElementDump namespace (Kasimier Buchcik), push and
    xmlreader stopping on non-fatal errors, thread support for dictionaries
    reference counting (Gary Coady), internal subset and push problem, URL
    saved in xmlCopyDoc, various schemas bug fixes (Kasimier), Python paths
    fixup (Stephane Bidoul), xmlGetNodePath and namespaces, xmlSetNsProp fix
    (Mike Hommey), warning should not count as error (William Brack),
    xmlCreatePushParser empty chunk, XInclude parser flags (William), cleanup
    FTP and HTTP code to reuse the uri parsing and IPv6 (William),
    xmlTextWriterStartAttributeNS fix (Rob Richards), XMLLINT_INDENT being
    empty (William), xmlWriter bugs (Rob Richards), multithreading on Windows
    (Rich Salz), xmlSearchNsByHref fix (Kasimier), Python binding leak (Brent
    Hendricks), aliasing bug exposed by gcc4 on s390, xmlTextReaderNext bug
    (Rob Richards), Schemas decimal type fixes (William Brack),
    xmlByteConsumed static buffer (Ben Maurer).</li>
  <li>improvement: speedup parsing comments and DTDs, dictionary support for
    hash tables, Schemas Identity constraints (Kasimier), streaming XPath
    subset, xmlTextReaderReadString added (Bjorn Reese), Schemas canonical
    values handling (Kasimier), add xmlTextReaderByteConsumed (Aron
  Stansvik),</li>
  <li>Documentation: Wiki support (Joel Reed)</li>
</ul><h3>2.6.17: Jan 16 2005</h3><ul>
  <li>build fixes: Windows, warnings removal (William Brack),
    maintainer-clean dependency(William), build in a different directory
    (William), fixing --with-minimum configure build (William), BeOS build
    (Marcin Konicki), Python-2.4 detection (William), compilation on AIX (Dan
    McNichol)</li>
  <li>bug fixes: xmlTextReaderHasAttributes (Rob Richards), xmlCtxtReadFile()
    to use the catalog(s), loop on output (William Brack), XPath memory leak,
    ID deallocation problem (Steve Shepard), debugDumpNode crash (William),
    warning not using error callback (William), xmlStopParser bug (William),
    UTF-16 with BOM on DTDs (William), namespace bug on empty elements in
    push mode (Rob Richards), line and col computations fixups (Aleksey
    Sanin), xmlURIEscape fix (William), xmlXPathErr on bad range (William),
    patterns with too many steps, bug in RNG choice optimization, line number
    sometimes missing.</li>
  <li>improvements: XSD Schemas (Kasimier Buchcik), python generator
    (William), xmlUTF8Strpos speedup (William), unicode Python strings
    (William), XSD error reports (Kasimier Buchcik), Python __str__ call
    serialize().</li>
  <li>new APIs: added xmlDictExists(), GetLineNumber and GetColumnNumber for
    the xmlReader (Aleksey Sanin), Dynamic Shared Libraries APIs (mostly Joel
    Reed), error extraction API from regexps, new XMLSave option for format
    (Phil Shafer)</li>
  <li>documentation: site improvement (John Fleck), FAQ entries
  (William).</li>
</ul><h3>2.6.16: Nov 10 2004</h3><ul>
  <li>general hardening and bug fixing crossing all the API based on new
    automated regression testing</li>
  <li>build fix: IPv6 build and test on AIX (Dodji Seketeli)</li>
  <li>bug fixes: problem with XML::Libxml reported by Petr Pajas,  encoding
    conversion functions return values, UTF-8 bug affecting XPath reported by
    Markus Bertheau, catalog problem with NULL entries (William Brack)</li>
  <li>documentation: fix to xmllint man page, some API function description
    were updated.</li>
  <li>improvements: DTD validation APIs provided at the Python level (Brent
    Hendricks)</li>
</ul><h3>2.6.15: Oct 27 2004</h3><ul>
  <li>security fixes on the nanoftp and nanohttp modules</li>
  <li>build fixes: xmllint detection bug in configure, building outside the
    source tree (Thomas Fitzsimmons)</li>
  <li>bug fixes: HTML parser on broken ASCII chars in names (William), Python
    paths (Malcolm Tredinnick), xmlHasNsProp and default namespace (William),
    saving to python file objects (Malcolm Tredinnick), DTD lookup fix
    (Malcolm), save back &lt;group&gt; in catalogs (William), tree build
    fixes (DV and Rob Richards), Schemas memory bug, structured error handler
    on Python 64bits, thread local memory deallocation, memory leak reported
    by Volker Roth, xmlValidateDtd in the presence of an internal subset,
    entities and _private problem (William), xmlBuildRelativeURI error
    (William).</li>
  <li>improvements: better XInclude error reports (William), tree debugging
    module and tests, convenience functions at the Reader API (Graham
    Bennett), add support for PI in the HTML parser.</li>
</ul><h3>2.6.14: Sep 29 2004</h3><ul>
  <li>build fixes: configure paths for xmllint and xsltproc, compilation
    without HTML parser, compilation warning cleanups (William Brack &amp;
    Malcolm Tredinnick), VMS makefile update (Craig Berry),</li>
  <li>bug fixes: xmlGetUTF8Char (William Brack), QName properties (Kasimier
    Buchcik), XInclude testing, Notation serialization, UTF8ToISO8859x
    transcoding (Mark Itzcovitz), lots of XML Schemas cleanup and fixes
    (Kasimier), ChangeLog cleanup (Stepan Kasal), memory fixes (Mark Vakoc),
    handling of failed realloc(), out of bound array addressing in Schemas
    date handling, Python space/tabs cleanups (Malcolm Tredinnick), NMTOKENS
    E20 validation fix (Malcolm),</li>
  <li>improvements: added W3C XML Schemas testsuite (Kasimier Buchcik), add
    xmlSchemaValidateOneElement (Kasimier), Python exception hierearchy
    (Malcolm Tredinnick), Python libxml2 driver improvement (Malcolm
    Tredinnick), Schemas support for xsi:schemaLocation,
    xsi:noNamespaceSchemaLocation, xsi:type (Kasimier Buchcik)</li>
</ul><h3>2.6.13: Aug 31 2004</h3><ul>
  <li>build fixes: Windows and zlib (Igor Zlatkovic), -O flag with gcc,
    Solaris compiler warning, fixing RPM BuildRequires,</li>
  <li>fixes: DTD loading on Windows (Igor), Schemas error reports APIs
    (Kasimier Buchcik), Schemas validation crash, xmlCheckUTF8 (William Brack
    and Julius Mittenzwei), Schemas facet check (Kasimier), default namespace
    problem (William), Schemas hexbinary empty values, encoding error could
    generate a serialization loop.</li>
  <li>Improvements: Schemas validity improvements (Kasimier), added --path
    and --load-trace options to xmllint</li>
  <li>documentation: tutorial update (John Fleck)</li>
</ul><h3>2.6.12: Aug 22 2004</h3><ul>
  <li>build fixes: fix --with-minimum, elfgcchack.h fixes (Peter
    Breitenlohner), perl path lookup (William), diff on Solaris (Albert
    Chin), some 64bits cleanups.</li>
  <li>Python: avoid a warning with 2.3 (William Brack), tab and space mixes
    (William), wrapper generator fixes (William), Cygwin support (Gerrit P.
    Haase), node wrapper fix (Marc-Antoine Parent), XML Schemas support
    (Torkel Lyng)</li>
  <li>Schemas: a lot of bug fixes and improvements from Kasimier Buchcik</li>
  <li>fixes: RVT fixes (William), XPath context resets bug (William), memory
    debug (Steve Hay), catalog white space handling (Peter Breitenlohner),
    xmlReader state after attribute reading (William), structured error
    handler (William), XInclude generated xml:base fixup (William), Windows
    memory reallocation problem (Steve Hay), Out of Memory conditions
    handling (William and Olivier Andrieu), htmlNewDoc() charset bug,
    htmlReadMemory init (William), a posteriori validation DTD base
    (William), notations serialization missing, xmlGetNodePath (Dodji),
    xmlCheckUTF8 (Diego Tartara), missing line numbers on entity
  (William)</li>
  <li>improvements: DocBook catalog build scrip (William), xmlcatalog tool
    (Albert Chin), xmllint --c14n option, no_proxy environment (Mike Hommey),
    xmlParseInNodeContext() addition, extend xmllint --shell, allow XInclude
    to not generate start/end nodes, extend xmllint --version to include CVS
    tag (William)</li>
  <li>documentation: web pages fixes, validity API docs fixes (William)
    schemas API fix (Eric Haszlakiewicz), xmllint man page (John Fleck)</li>
</ul><h3>2.6.11: July 5 2004</h3><ul>
  <li>Schemas: a lot of changes and improvements by Kasimier Buchcik for
    attributes, namespaces and simple types.</li>
  <li>build fixes: --with-minimum (William Brack),  some gcc cleanup
    (William), --with-thread-alloc (William)</li>
  <li>portability: Windows binary package change (Igor Zlatkovic), Catalog
    path on Windows</li>
  <li>documentation: update to the tutorial (John Fleck), xmllint return code
    (John Fleck), man pages (Ville Skytta),</li>
  <li>bug fixes: C14N bug serializing namespaces (Aleksey Sanin), testSAX
    properly initialize the library (William), empty node set in XPath
    (William), xmlSchemas errors (William), invalid charref problem pointed
    by Morus Walter, XInclude xml:base generation (William), Relax-NG bug
    with div processing (William), XPointer and xml:base problem(William),
    Reader and entities, xmllint return code for schemas (William), reader
    streaming problem (Steve Ball), DTD serialization problem (William),
    libxml.m4 fixes (Mike Hommey), do not provide destructors as methods on
    Python classes, xmlReader buffer bug, Python bindings memory interfaces
    improvement (with StÃ©phane Bidoul), Fixed the push parser to be back to
    synchronous behaviour.</li>
  <li>improvement: custom per-thread I/O enhancement (Rob Richards), register
    namespace in debug shell (Stefano Debenedetti), Python based regression
    test for non-Unix users (William), dynamically increase the number of
    XPath extension functions in Python and fix a memory leak (Marc-Antoine
    Parent and William)</li>
  <li>performance: hack done with Arjan van de Ven to reduce ELF footprint
    and generated code on Linux, plus use gcc runtime profiling to optimize
    the code generated in the RPM packages.</li>
</ul><h3>2.6.10: May 17 2004</h3><ul>
  <li>Web page generated for ChangeLog</li>
  <li>build fixes: --without-html problems, make check without make all</li>
  <li>portability: problem with xpath.c on Windows (MSC and Borland), memcmp
    vs. strncmp on Solaris, XPath tests on Windows (Mark Vakoc), C++ do not
    use "list" as parameter name, make tests work with Python 1.5 (Ed
  Davis),</li>
  <li>improvements: made xmlTextReaderMode public, small buffers resizing
    (Morten Welinder), add --maxmem option to xmllint, add
    xmlPopInputCallback() for Matt Sergeant, refactoring of serialization
    escaping, added escaping customization</li>
  <li>bugfixes: xsd:extension (Taihei Goi), assorted regexp bugs (William
    Brack), xmlReader end of stream problem, node deregistration with reader,
    URI escaping and filemanes,  XHTML1 formatting (Nick Wellnhofer), regexp
    transition reduction (William), various XSD Schemas fixes (Kasimier
    Buchcik), XInclude fallback problem (William), weird problems with DTD
    (William), structured error handler callback context (William), reverse
    xmlEncodeSpecialChars() behaviour back to escaping '"'</li>
</ul><h3>2.6.9: Apr 18 2004</h3><ul>
  <li>implement xml:id Working Draft, relaxed XPath id() checking</li>
  <li>bugfixes: xmlCtxtReset (Brent Hendricks), line number and CDATA (Dave
    Beckett), Relax-NG compilation (William Brack), Regexp patches (with
    William), xmlUriEscape (Mark Vakoc), a Relax-NG notAllowed problem (with
    William), Relax-NG name classes compares (William), XInclude duplicate
    fallback (William), external DTD encoding detection (William), a DTD
    validation bug (William), xmlReader Close() fix, recursive extension
    schemas</li>
  <li>improvements: use xmlRead* APIs in test tools (Mark Vakoc), indenting
    save optimization, better handle IIS broken HTTP redirect  behaviour (Ian
    Hummel), HTML parser frameset (James Bursa), libxml2-python RPM
    dependency, XML Schemas union support (Kasimier Buchcik), warning removal
    clanup (William), keep ChangeLog compressed when installing from RPMs</li>
  <li>documentation: examples and xmlDocDumpMemory docs (John Fleck), new
    example (load, xpath, modify, save), xmlCatalogDump() comments,</li>
  <li>Windows: Borland C++ builder (Eric Zurcher), work around Microsoft
    compiler NaN handling bug (Mark Vakoc)</li>
</ul><h3>2.6.8: Mar 23 2004</h3><ul>
  <li>First step of the cleanup of the serialization code and APIs</li>
  <li>XML Schemas: mixed content (Adam Dickmeiss), QName handling fixes (Adam
    Dickmeiss), anyURI for "" (John Belmonte)</li>
  <li>Python: Canonicalization C14N support added (Anthony Carrico)</li>
  <li>xmlDocCopyNode() extension (William)</li>
  <li>Relax-NG: fix when processing XInclude results (William), external
    reference in interleave (William), missing error on &lt;choice&gt;
    failure (William), memory leak in schemas datatype facets.</li>
  <li>xmlWriter: patch for better DTD support (Alfred Mickautsch)</li>
  <li>bug fixes: xmlXPathLangFunction memory leak (Mike Hommey and William
    Brack), no ID errors if using HTML_PARSE_NOERROR, xmlcatalog fallbacks to
    URI on SYSTEM lookup failure, XInclude parse flags inheritance (William),
    XInclude and XPointer fixes for entities (William), XML parser bug
    reported by Holger Rauch, nanohttp fd leak (William),  regexps char
    groups '-' handling (William), dictionary reference counting problems,
    do not close stderr.</li>
  <li>performance patches from Petr Pajas</li>
  <li>Documentation fixes: XML_CATALOG_FILES in man pages (Mike Hommey)</li>
  <li>compilation and portability fixes: --without-valid, catalog cleanups
    (Peter Breitenlohner), MingW patch (Roland Schwingel), cross-compilation
    to Windows (Christophe de Vienne),  --with-html-dir fixup (Julio Merino
    Vidal), Windows build (Eric Zurcher)</li>
</ul><h3>2.6.7: Feb 23 2004</h3><ul>
  <li>documentation: tutorial updates (John Fleck), benchmark results</li>
  <li>xmlWriter: updates and fixes (Alfred Mickautsch, Lucas Brasilino)</li>
  <li>XPath optimization (Petr Pajas)</li>
  <li>DTD ID handling optimization</li>
  <li>bugfixes: xpath number with  &gt; 19 fractional (William Brack), push
    mode with unescaped '&gt;' characters, fix xmllint --stream --timing, fix
    xmllint --memory --stream memory usage, xmlAttrSerializeTxtContent
    handling NULL, trying to fix Relax-NG/Perl interface.</li>
  <li>python: 2.3 compatibility, whitespace fixes (Malcolm Tredinnick)</li>
  <li>Added relaxng option to xmllint --shell</li>
</ul><h3>2.6.6: Feb 12 2004</h3><ul>
  <li>nanohttp and nanoftp: buffer overflow error on URI parsing (Igor and
    William) reported by Yuuichi Teranishi</li>
  <li>bugfixes: make test and path issues, xmlWriter attribute serialization
    (William Brack), xmlWriter indentation (William), schemas validation
    (Eric Haszlakiewicz), XInclude dictionaries issues (William and Oleg
    Paraschenko), XInclude empty fallback (William), HTML warnings (William),
    XPointer in XInclude (William), Python namespace serialization,
    isolat1ToUTF8 bound error (Alfred Mickautsch), output of parameter
    entities in internal subset (William), internal subset bug in push mode,
    &lt;xs:all&gt; fix (Alexey Sarytchev)</li>
  <li>Build: fix for automake-1.8 (Alexander Winston), warnings removal
    (Philip Ludlam), SOCKLEN_T detection fixes (Daniel Richard), fix
    --with-minimum configuration.</li>
  <li>XInclude: allow the 2001 namespace without warning.</li>
  <li>Documentation: missing example/index.html (John Fleck), version
    dependencies (John Fleck)</li>
  <li>reader API: structured error reporting (Steve Ball)</li>
  <li>Windows compilation: mingw, msys (Mikhail Grushinskiy), function
    prototype (Cameron Johnson), MSVC6 compiler warnings, _WINSOCKAPI_
  patch</li>
  <li>Parsers: added xmlByteConsumed(ctxt) API to get the byte offset in
    input.</li>
</ul><h3>2.6.5: Jan 25 2004</h3><ul>
  <li>Bugfixes: dictionaries for schemas (William Brack), regexp segfault
    (William), xs:all problem (William), a number of XPointer bugfixes
    (William), xmllint error go to stderr, DTD validation problem with
    namespace, memory leak (William), SAX1 cleanup and minimal options fixes
    (Mark Vadoc), parser context reset on error (Shaun McCance), XPath union
    evaluation problem (William) , xmlReallocLoc with NULL (Aleksey Sanin),
    XML Schemas double free (Steve Ball), XInclude with no href, argument
    callbacks order for XPath callbacks (Frederic Peters)</li>
  <li>Documentation: python scripts (William Brack), xslt stylesheets (John
    Fleck), doc (Sven Zimmerman), I/O example.</li>
  <li>Python bindings: fixes (William), enum support (StÃ©phane Bidoul),
    structured error reporting (StÃ©phane Bidoul)</li>
  <li>XInclude: various fixes for conformance, problem related to dictionary
    references (William &amp; me), recursion (William)</li>
  <li>xmlWriter: indentation (Lucas Brasilino), memory leaks (Alfred
    Mickautsch),</li>
  <li>xmlSchemas: normalizedString datatype (John Belmonte)</li>
  <li>code cleanup for strings functions (William)</li>
  <li>Windows: compiler patches (Mark Vakoc)</li>
  <li>Parser optimizations, a few new XPath and dictionary APIs for future
    XSLT optimizations.</li>
</ul><h3>2.6.4: Dec 24 2003</h3><ul>
  <li>Windows build fixes (Igor Zlatkovic)</li>
  <li>Some serious XInclude problems reported by Oleg Paraschenko and</li>
  <li>Unix and Makefile packaging fixes (me, William Brack,</li>
  <li>Documentation improvements (John Fleck, William Brack), example fix
    (Lucas Brasilino)</li>
  <li>bugfixes: xmlTextReaderExpand() with xmlReaderWalker, XPath handling of
    NULL strings (William Brack) , API building reader or parser from
    filedescriptor should not close it, changed XPath sorting to be stable
    again (William Brack), xmlGetNodePath() generating '(null)' (William
    Brack), DTD validation and namespace bug (William Brack), XML Schemas
    double inclusion behaviour</li>
</ul><h3>2.6.3: Dec 10 2003</h3><ul>
  <li>documentation updates and cleanup (DV, William Brack, John Fleck)</li>
  <li>added a repository of examples, examples from Aleksey Sanin, Dodji
    Seketeli, Alfred Mickautsch</li>
  <li>Windows updates: Mark Vakoc, Igor Zlatkovic, Eric Zurcher, Mingw
    (Kenneth Haley)</li>
  <li>Unicode range checking (William Brack)</li>
  <li>code cleanup (William Brack)</li>
  <li>Python bindings: doc (John Fleck),  bug fixes</li>
  <li>UTF-16 cleanup and BOM issues (William Brack)</li>
  <li>bug fixes: ID and xmlReader validation, XPath (William Brack),
    xmlWriter (Alfred Mickautsch), hash.h inclusion problem, HTML parser
    (James Bursa), attribute defaulting and validation, some serialization
    cleanups, XML_GET_LINE macro, memory debug when using threads (William
    Brack), serialization of attributes and entities content, xmlWriter
    (Daniel Schulman)</li>
  <li>XInclude bugfix, new APIs and update to the last version including the
    namespace change.</li>
  <li>XML Schemas improvements: include (Robert Stepanek), import and
    namespace handling, fixed the regression tests troubles, added examples
    based on Eric van der Vlist book, regexp fixes</li>
  <li>preliminary pattern support for streaming (needed for schemas
    constraints), added xmlTextReaderPreservePattern() to collect subdocument
    when streaming.</li>
  <li>various fixes in the structured error handling</li>
</ul><h3>2.6.2: Nov 4 2003</h3><ul>
  <li>XPath context unregistration fixes</li>
  <li>text node coalescing fixes (Mark Lilback)</li>
  <li>API to screate a W3C Schemas from an existing document (Steve Ball)</li>
  <li>BeOS patches (Marcin 'Shard' Konicki)</li>
  <li>xmlStrVPrintf function added (Aleksey Sanin)</li>
  <li>compilation fixes (Mark Vakoc)</li>
  <li>stdin parsing fix (William Brack)</li>
  <li>a posteriori DTD validation fixes</li>
  <li>xmlReader bug fixes: Walker fixes, python bindings</li>
  <li>fixed xmlStopParser() to really stop the parser and errors</li>
  <li>always generate line numbers when using the new xmlReadxxx
  functions</li>
  <li>added XInclude support to the xmlReader interface</li>
  <li>implemented XML_PARSE_NONET parser option</li>
  <li>DocBook XSLT processing bug fixed</li>
  <li>HTML serialization for &lt;p&gt; elements (William Brack and me)</li>
  <li>XPointer failure in XInclude are now handled as resource errors</li>
  <li>fixed xmllint --html to use the HTML serializer on output (added
    --xmlout to implement the previous behaviour of saving it using the XML
    serializer)</li>
</ul><h3>2.6.1: Oct 28 2003</h3><ul>
  <li>Mostly bugfixes after the big 2.6.0 changes</li>
  <li>Unix compilation patches: libxml.m4 (Patrick Welche), warnings cleanup
    (William Brack)</li>
  <li>Windows compilation patches (Joachim Bauch, Stephane Bidoul, Igor
    Zlatkovic)</li>
  <li>xmlWriter bugfix (Alfred Mickautsch)</li>
  <li>chvalid.[ch]: couple of fixes from Stephane Bidoul</li>
  <li>context reset: error state reset, push parser reset (Graham
  Bennett)</li>
  <li>context reuse: generate errors if file is not readable</li>
  <li>defaulted attributes for element coming from internal entities
    (Stephane Bidoul)</li>
  <li>Python: tab and spaces mix (William Brack)</li>
  <li>Error handler could crash in DTD validation in 2.6.0</li>
  <li>xmlReader: do not use the document or element _private field</li>
  <li>testSAX.c: avoid a problem with some PIs (Massimo Morara)</li>
  <li>general bug fixes: mandatory encoding in text decl, serializing
    Document Fragment nodes, xmlSearchNs 2.6.0 problem (Kasimier Buchcik),
    XPath errors not reported,  slow HTML parsing of large documents.</li>
</ul><h3>2.6.0: Oct 20 2003</h3><ul>
  <li>Major revision release: should be API and ABI compatible but got a lot
    of change</li>
  <li>Increased the library modularity, far more options can be stripped out,
    a --with-minimum configuration will weight around 160KBytes</li>
  <li>Use per parser and per document dictionary, allocate names and small
    text nodes from the dictionary</li>
  <li>Switch to a SAX2 like parser rewrote most of the XML parser core,
    provides namespace resolution and defaulted attributes, minimize memory
    allocations and copies, namespace checking and specific error handling,
    immutable buffers, make predefined entities static structures, etc...</li>
  <li>rewrote all the error handling in the library, all errors can be
    intercepted at a structured level, with precise information
  available.</li>
  <li>New simpler and more generic XML and HTML parser APIs, allowing to
    easily modify the parsing options and reuse parser context for multiple
    consecutive documents.</li>
  <li>Similar new APIs for the xmlReader, for options and reuse, provided new
    functions to access content as const strings, use them for Python
  bindings</li>
  <li>a  lot of other smaller API improvements: xmlStrPrintf (Aleksey Sanin),
    Walker i.e. reader on a document tree based on Alfred Mickautsch code,
    make room in nodes for line numbers, reference counting and future PSVI
    extensions, generation of character ranges to be checked with faster
    algorithm (William),  xmlParserMaxDepth (Crutcher Dunnavant), buffer
    access</li>
  <li>New xmlWriter API provided by Alfred Mickautsch</li>
  <li>Schemas: base64 support by Anthony Carrico</li>
  <li>Parser&lt;-&gt;HTTP integration fix, proper processing of the Mime-Type
    and charset information if available.</li>
  <li>Relax-NG: bug fixes including the one reported by Martijn Faassen and
    zeroOrMore, better error reporting.</li>
  <li>Python bindings (StÃ©phane Bidoul), never use stdout for errors
  output</li>
  <li>Portability: all the headers have macros for export and calling
    convention definitions (Igor Zlatkovic), VMS update (Craig A. Berry),
    Windows: threads (Jesse Pelton), Borland compiler (Eric Zurcher,  Igor),
    Mingw (Igor), typos (Mark Vakoc),  beta version (Stephane Bidoul),
    warning cleanups on AIX and MIPS compilers (William Brack), BeOS (Marcin
    'Shard' Konicki)</li>
  <li>Documentation fixes and README (William Brack), search fix (William),
    tutorial updates (John Fleck), namespace docs (Stefan Kost)</li>
  <li>Bug fixes: xmlCleanupParser (Dave Beckett), threading uninitialized
    mutexes, HTML doctype lowercase,  SAX/IO (William), compression detection
    and restore (William), attribute declaration in DTDs (William), namespace
    on attribute in HTML output (William), input filename (Rob Richards),
    namespace DTD validation, xmlReplaceNode (Chris Ryland), I/O callbacks
    (Markus Keim), CDATA serialization (Shaun McCance), xmlReader (Peter
    Derr), high codepoint charref like &amp;#x10FFFF;, buffer access in push
    mode (Justin Fletcher), TLS threads on Windows (Jesse Pelton), XPath bug
    (William), xmlCleanupParser (Marc Liyanage), CDATA output (William), HTTP
    error handling.</li>
  <li>xmllint options: --dtdvalidfpi for Tobias Reif, --sax1 for compat
    testing,  --nodict for building without tree dictionary, --nocdata to
    replace CDATA by text, --nsclean to remove surperfluous  namespace
    declarations</li>
  <li>added xml2-config --libtool-libs option from Kevin P. Fleming</li>
  <li>a lot of profiling and tuning of the code, speedup patch for
    xmlSearchNs() by Luca Padovani. The xmlReader should do far less
    allocation and it speed should get closer to SAX. Chris Anderson worked
    on speeding and cleaning up repetitive checking code.</li>
  <li>cleanup of "make tests"</li>
  <li>libxml-2.0-uninstalled.pc from Malcolm Tredinnick</li>
  <li>deactivated the broken docBook SGML parser code and plugged the XML
    parser instead.</li>
</ul><h3>2.5.11: Sep 9 2003</h3><p>A bugfix only release:</p><ul>
  <li>risk of crash in Relax-NG</li>
  <li>risk of crash when using multithreaded programs</li>
</ul><h3>2.5.10: Aug 15 2003</h3><p>A bugfixes only release</p><ul>
  <li>Windows Makefiles (William Brack)</li>
  <li>UTF-16 support fixes (Mark Itzcovitz)</li>
  <li>Makefile and portability (William Brack) automake, Linux alpha, Mingw
    on Windows (Mikhail Grushinskiy)</li>
  <li>HTML parser (Oliver Stoeneberg)</li>
  <li>XInclude performance problem reported by Kevin Ruscoe</li>
  <li>XML parser performance problem reported by Grant Goodale</li>
  <li>xmlSAXParseDTD() bug fix from Malcolm Tredinnick</li>
  <li>and a couple other cleanup</li>
</ul><h3>2.5.9: Aug 9 2003</h3><ul>
  <li>bugfixes: IPv6 portability, xmlHasNsProp (Markus Keim), Windows build
    (Wiliam Brake, Jesse Pelton, Igor), Schemas (Peter Sobisch), threading
    (Rob Richards), hexBinary type (), UTF-16 BOM (Dodji Seketeli),
    xmlReader, Relax-NG schemas compilation, namespace handling,  EXSLT (Sean
    Griffin), HTML parsing problem (William Brack), DTD validation for mixed
    content + namespaces, HTML serialization, library initialization,
    progressive HTML parser</li>
  <li>better interfaces for Relax-NG error handling (Joachim Bauch, )</li>
  <li>adding xmlXIncludeProcessTree() for XInclud'ing in a subtree</li>
  <li>doc fixes and improvements (John Fleck)</li>
  <li>configure flag for -with-fexceptions when embedding in C++</li>
  <li>couple of new UTF-8 helper functions (William Brack)</li>
  <li>general encoding cleanup + ISO-8859-x without iconv (Peter Jacobi)</li>
  <li>xmlTextReader cleanup + enum for node types (Bjorn Reese)</li>
  <li>general compilation/warning cleanup Solaris/HP-UX/... (William
  Brack)</li>
</ul><h3>2.5.8: Jul 6 2003</h3><ul>
  <li>bugfixes: XPath, XInclude, file/URI mapping, UTF-16 save (Mark
    Itzcovitz), UTF-8 checking, URI saving, error printing (William Brack),
    PI related memleak, compilation without schemas or without xpath (Joerg
    Schmitz-Linneweber/Garry Pennington), xmlUnlinkNode problem with DTDs,
    rpm problem on , i86_64, removed a few compilation problems from 2.5.7,
    xmlIOParseDTD, and xmlSAXParseDTD (Malcolm Tredinnick)</li>
  <li>portability: DJGPP (MsDos) , OpenVMS (Craig A. Berry)</li>
  <li>William Brack fixed multithreading lock problems</li>
  <li>IPv6 patch for FTP and HTTP accesses (Archana Shah/Wipro)</li>
  <li>Windows fixes (Igor Zlatkovic,  Eric Zurcher), threading (StÃ©phane
    Bidoul)</li>
  <li>A few W3C Schemas Structure improvements</li>
  <li>W3C Schemas Datatype improvements (Charlie Bozeman)</li>
  <li>Python bindings for thread globals (StÃ©phane Bidoul), and method/class
    generator</li>
  <li>added --nonet option to xmllint</li>
  <li>documentation improvements (John Fleck)</li>
</ul><h3>2.5.7: Apr 25 2003</h3><ul>
  <li>Relax-NG: Compiling to regexp and streaming validation on top of the
    xmlReader interface, added to xmllint --stream</li>
  <li>xmlReader: Expand(), Next() and DOM access glue, bug fixes</li>
  <li>Support for large files: RGN validated a 4.5GB instance</li>
  <li>Thread support is now configured in by default</li>
  <li>Fixes: update of the Trio code (Bjorn), WXS Date and Duration fixes
    (Charles Bozeman), DTD and namespaces (Brent Hendricks), HTML push parser
    and zero bytes handling, some missing Windows file path conversions,
    behaviour of the parser and validator in the presence of "out of memory"
    error conditions</li>
  <li>extended the API to be able to plug a garbage collecting memory
    allocator, added xmlMallocAtomic() and modified the allocations
    accordingly.</li>
  <li>Performances: removed excessive malloc() calls, speedup of the push and
    xmlReader interfaces, removed excessive thread locking</li>
  <li>Documentation: man page (John Fleck), xmlReader documentation</li>
  <li>Python: adding binding for xmlCatalogAddLocal (Brent M Hendricks)</li>
</ul><h3>2.5.6: Apr 1 2003</h3><ul>
  <li>Fixed W3C XML Schemas datatype, should be compliant now except for
    binHex and base64 which are not supported yet.</li>
  <li>bug fixes: non-ASCII IDs, HTML output, XInclude on large docs and
    XInclude entities handling, encoding detection on external subsets, XML
    Schemas bugs and memory leaks, HTML parser (James Bursa)</li>
  <li>portability: python/trio (Albert Chin), Sun compiler warnings</li>
  <li>documentation: added --relaxng option to xmllint man page (John)</li>
  <li>improved error reporting: xml:space, start/end tag mismatches, Relax NG
    errors</li>
</ul><h3>2.5.5: Mar 24 2003</h3><ul>
  <li>Lot of fixes on the Relax NG implementation. More testing including
    DocBook and TEI examples.</li>
  <li>Increased the support for W3C XML Schemas datatype</li>
  <li>Several bug fixes in the URI handling layer</li>
  <li>Bug fixes: HTML parser, xmlReader, DTD validation, XPath, encoding
    conversion, line counting in the parser.</li>
  <li>Added support for $XMLLINT_INDENT environment variable, FTP delete</li>
  <li>Fixed the RPM spec file name</li>
</ul><h3>2.5.4: Feb 20 2003</h3><ul>
  <li>Conformance testing and lot of fixes on Relax NG and XInclude
    implementation</li>
  <li>Implementation of XPointer element() scheme</li>
  <li>Bug fixes: XML parser, XInclude entities merge, validity checking on
    namespaces,
    <p>2 serialization bugs, node info generation problems, a DTD regexp
    generation problem.</p>
  </li>
  <li>Portability: windows updates and path canonicalization (Igor)</li>
  <li>A few typo fixes (Kjartan Maraas)</li>
  <li>Python bindings generator fixes (Stephane Bidoul)</li>
</ul><h3>2.5.3: Feb 10 2003</h3><ul>
  <li>RelaxNG and XML Schemas datatypes improvements, and added a first
    version of RelaxNG Python bindings</li>
  <li>Fixes: XLink (Sean Chittenden), XInclude (Sean Chittenden), API fix for
    serializing namespace nodes, encoding conversion bug, XHTML1
  serialization</li>
  <li>Portability fixes: Windows (Igor), AMD 64bits RPM spec file</li>
</ul><h3>2.5.2: Feb 5 2003</h3><ul>
  <li>First implementation of RelaxNG, added --relaxng flag to xmllint</li>
  <li>Schemas support now compiled in by default.</li>
  <li>Bug fixes: DTD validation, namespace checking, XInclude and entities,
    delegateURI in XML Catalogs, HTML parser, XML reader (StÃ©phane Bidoul),
    XPath parser and evaluation,  UTF8ToUTF8 serialization, XML reader memory
    consumption, HTML parser, HTML serialization in the presence of
  namespaces</li>
  <li>added an HTML API to check elements and attributes.</li>
  <li>Documentation improvement, PDF for the tutorial (John Fleck), doc
    patches (Stefan Kost)</li>
  <li>Portability fixes: NetBSD (Julio Merino), Windows (Igor Zlatkovic)</li>
  <li>Added python bindings for XPointer, contextual error reporting
    (StÃ©phane Bidoul)</li>
  <li>URI/file escaping problems (Stefano Zacchiroli)</li>
</ul><h3>2.5.1: Jan 8 2003</h3><ul>
  <li>Fixes a memory leak and configuration/compilation problems in 2.5.0</li>
  <li>documentation updates (John)</li>
  <li>a couple of XmlTextReader fixes</li>
</ul><h3>2.5.0: Jan 6 2003</h3><ul>
  <li>New <a href="xmlreader.html">XmltextReader interface</a> based on C#
    API (with help of StÃ©phane Bidoul)</li>
  <li>Windows: more exports, including the new API (Igor)</li>
  <li>XInclude fallback fix</li>
  <li>Python: bindings for the new API, packaging (StÃ©phane Bidoul),
    drv_libxml2.py Python xml.sax driver (StÃ©phane Bidoul), fixes, speedup
    and iterators for Python-2.2 (Hannu Krosing)</li>
  <li>Tutorial fixes (john Fleck and Niraj Tolia) xmllint man update
  (John)</li>
  <li>Fix an XML parser bug raised by Vyacheslav Pindyura</li>
  <li>Fix for VMS serialization (Nigel Hall) and config (Craig A. Berry)</li>
  <li>Entities handling fixes</li>
  <li>new API to optionally track node creation and deletion (Lukas
  Schroeder)</li>
  <li>Added documentation for the XmltextReader interface and some <a href="guidelines.html">XML guidelines</a></li>
</ul><h3>2.4.30: Dec 12 2002</h3><ul>
  <li>2.4.29 broke the python bindings, rereleasing</li>
  <li>Improvement/fixes of the XML API generator, and couple of minor code
    fixes.</li>
</ul><h3>2.4.29: Dec 11 2002</h3><ul>
  <li>Windows fixes (Igor): Windows CE port, pthread linking, python bindings
    (StÃ©phane Bidoul), Mingw (Magnus Henoch), and export list updates</li>
  <li>Fix for prev in python bindings (ERDI Gergo)</li>
  <li>Fix for entities handling (Marcus Clarke)</li>
  <li>Refactored the XML and HTML dumps to a single code path, fixed XHTML1
    dump</li>
  <li>Fix for URI parsing when handling URNs with fragment identifiers</li>
  <li>Fix for HTTP URL escaping problem</li>
  <li>added an TextXmlReader (C#) like API (work in progress)</li>
  <li>Rewrote the API in XML generation script, includes a C parser and saves
    more information needed for C# bindings</li>
</ul><h3>2.4.28: Nov 22 2002</h3><ul>
  <li>a couple of python binding fixes</li>
  <li>2 bug fixes in the XML push parser</li>
  <li>potential memory leak removed (Martin Stoilov)</li>
  <li>fix to the configure script for Unix (Dimitri Papadopoulos)</li>
  <li>added encoding support for XInclude parse="text"</li>
  <li>autodetection of XHTML1 and specific serialization rules added</li>
  <li>nasty threading bug fixed (William Brack)</li>
</ul><h3>2.4.27: Nov 17 2002</h3><ul>
  <li>fixes for the Python bindings</li>
  <li>a number of bug fixes: SGML catalogs, xmlParseBalancedChunkMemory(),
    HTML parser,  Schemas (Charles Bozeman), document fragment support
    (Christian Glahn), xmlReconciliateNs (Brian Stafford), XPointer,
    xmlFreeNode(), xmlSAXParseMemory (Peter Jones), xmlGetNodePath (Petr
    Pajas), entities processing</li>
  <li>added grep to xmllint --shell</li>
  <li>VMS update patch from Craig A. Berry</li>
  <li>cleanup of the Windows build with support for more compilers (Igor),
    better thread support on Windows</li>
  <li>cleanup of Unix Makefiles and spec file</li>
  <li>Improvements to the documentation (John Fleck)</li>
</ul><h3>2.4.26: Oct 18 2002</h3><ul>
  <li>Patches for Windows CE port, improvements on Windows paths handling</li>
  <li>Fixes to the validation  code (DTD and Schemas), xmlNodeGetPath() ,
    HTML serialization, Namespace compliance,  and a number of small
  problems</li>
</ul><h3>2.4.25: Sep 26 2002</h3><ul>
  <li>A number of bug fixes: XPath, validation, Python bindings, DOM and
    tree, xmlI/O,  Html</li>
  <li>Serious rewrite of XInclude</li>
  <li>Made XML Schemas regexp part of the default build and APIs, small fix
    and improvement of the regexp core</li>
  <li>Changed the validation code to reuse XML Schemas regexp APIs</li>
  <li>Better handling of Windows file paths, improvement of Makefiles (Igor,
    Daniel Gehriger, Mark Vakoc)</li>
  <li>Improved the python I/O bindings, the tests, added resolver and regexp
    APIs</li>
  <li>New logos from Marc Liyanage</li>
  <li>Tutorial improvements: John Fleck, Christopher Harris</li>
  <li>Makefile: Fixes for AMD x86_64 (Mandrake), DESTDIR (Christophe
  Merlet)</li>
  <li>removal of all stderr/perror use for error reporting</li>
  <li>Better error reporting: XPath and DTD validation</li>
  <li>update of the trio portability layer (Bjorn Reese)</li>
</ul><p><strong>2.4.24: Aug 22 2002</strong></p><ul>
  <li>XPath fixes (William), xf:escape-uri() (Wesley Terpstra)</li>
  <li>Python binding fixes: makefiles (William), generator, rpm build, x86-64
    (fcrozat)</li>
  <li>HTML &lt;style&gt; and boolean attributes serializer fixes</li>
  <li>C14N improvements by Aleksey</li>
  <li>doc cleanups: Rick Jones</li>
  <li>Windows compiler makefile updates: Igor and Elizabeth Barham</li>
  <li>XInclude: implementation of fallback and xml:base fixup added</li>
</ul><h3>2.4.23: July 6 2002</h3><ul>
  <li>performances patches: Peter Jacobi</li>
  <li>c14n fixes, testsuite and performances: Aleksey Sanin</li>
  <li>added xmlDocFormatDump: Chema Celorio</li>
  <li>new tutorial: John Fleck</li>
  <li>new hash functions and performances: Sander Vesik, portability fix from
    Peter Jacobi</li>
  <li>a number of bug fixes: XPath (William Brack, Richard Jinks), XML and
    HTML parsers, ID lookup function</li>
  <li>removal of all remaining sprintf: Aleksey Sanin</li>
</ul><h3>2.4.22: May 27 2002</h3><ul>
  <li>a number of bug fixes: configure scripts, base handling, parser, memory
    usage, HTML parser, XPath, documentation (Christian Cornelssen),
    indentation, URI parsing</li>
  <li>Optimizations for XMLSec, fixing and making public some of the network
    protocol handlers (Aleksey)</li>
  <li>performance patch from Gary Pennington</li>
  <li>Charles Bozeman provided date and time support for XML Schemas
  datatypes</li>
</ul><h3>2.4.21: Apr 29 2002</h3><p>This release is both a bug fix release and also contains the early XML
Schemas <a href="http://www.w3.org/TR/xmlschema-1/">structures</a> and <a href="http://www.w3.org/TR/xmlschema-2/">datatypes</a> code, beware, all
interfaces are likely to change, there is huge holes, it is clearly a work in
progress and don't even think of putting this code in a production system,
it's actually not compiled in by default. The real fixes are:
</p><ul>
  <li>a couple of bugs or limitations introduced in 2.4.20</li>
  <li>patches for Borland C++ and MSC by Igor</li>
  <li>some fixes on XPath strings and conformance patches by Richard
  Jinks</li>
  <li>patch from Aleksey for the ExcC14N specification</li>
  <li>OSF/1 bug fix by Bjorn</li>
</ul><h3>2.4.20: Apr 15 2002</h3><ul>
  <li>bug fixes: file descriptor leak, XPath, HTML output, DTD validation</li>
  <li>XPath conformance testing by Richard Jinks</li>
  <li>Portability fixes: Solaris, MPE/iX, Windows, OSF/1, python bindings,
    libxml.m4</li>
</ul><h3>2.4.19: Mar 25 2002</h3><ul>
  <li>bug fixes: half a dozen XPath bugs, Validation, ISO-Latin to UTF8
    encoder</li>
  <li>portability fixes in the HTTP code</li>
  <li>memory allocation checks using valgrind, and profiling tests</li>
  <li>revamp of the Windows build and Makefiles</li>
</ul><h3>2.4.18: Mar 18 2002</h3><ul>
  <li>bug fixes: tree, SAX, canonicalization, validation, portability,
  XPath</li>
  <li>removed the --with-buffer option it was becoming unmaintainable</li>
  <li>serious cleanup of the Python makefiles</li>
  <li>speedup patch to XPath very effective for DocBook stylesheets</li>
  <li>Fixes for Windows build, cleanup of the documentation</li>
</ul><h3>2.4.17: Mar 8 2002</h3><ul>
  <li>a lot of bug fixes, including "namespace nodes have no parents in
  XPath"</li>
  <li>fixed/improved the Python wrappers, added more examples and more
    regression tests, XPath extension functions can now return node-sets</li>
  <li>added the XML Canonicalization support from Aleksey Sanin</li>
</ul><h3>2.4.16: Feb 20 2002</h3><ul>
  <li>a lot of bug fixes, most of them were triggered by the XML Testsuite
    from OASIS and W3C. Compliance has been significantly improved.</li>
  <li>a couple of portability fixes too.</li>
</ul><h3>2.4.15: Feb 11 2002</h3><ul>
  <li>Fixed the Makefiles, especially the python module ones</li>
  <li>A few bug fixes and cleanup</li>
  <li>Includes cleanup</li>
</ul><h3>2.4.14: Feb 8 2002</h3><ul>
  <li>Change of License to the <a href="http://www.opensource.org/licenses/mit-license.html">MIT
    License</a> basically for integration in XFree86 codebase, and removing
    confusion around the previous dual-licensing</li>
  <li>added Python bindings, beta software but should already be quite
    complete</li>
  <li>a large number of fixes and cleanups, especially for all tree
    manipulations</li>
  <li>cleanup of the headers, generation of a reference API definition in
  XML</li>
</ul><h3>2.4.13: Jan 14 2002</h3><ul>
  <li>update of the documentation: John Fleck and Charlie Bozeman</li>
  <li>cleanup of timing code from Justin Fletcher</li>
  <li>fixes for Windows and initial thread support on Win32: Igor and Serguei
    Narojnyi</li>
  <li>Cygwin patch from Robert Collins</li>
  <li>added xmlSetEntityReferenceFunc() for Keith Isdale work on xsldbg</li>
</ul><h3>2.4.12: Dec 7 2001</h3><ul>
  <li>a few bug fixes: thread (Gary Pennington), xmllint (Geert Kloosterman),
    XML parser (Robin Berjon), XPointer (Danny Jamshy), I/O cleanups
  (robert)</li>
  <li>Eric Lavigne contributed project files for MacOS</li>
  <li>some makefiles cleanups</li>
</ul><h3>2.4.11: Nov 26 2001</h3><ul>
  <li>fixed a couple of errors in the includes, fixed a few bugs, some code
    cleanups</li>
  <li>xmllint man pages improvement by Heiko Rupp</li>
  <li>updated VMS build instructions from John A Fotheringham</li>
  <li>Windows Makefiles updates from Igor</li>
</ul><h3>2.4.10: Nov 10 2001</h3><ul>
  <li>URI escaping fix (Joel Young)</li>
  <li>added xmlGetNodePath() (for paths or XPointers generation)</li>
  <li>Fixes namespace handling problems when using DTD and validation</li>
  <li>improvements on xmllint: Morus Walter patches for --format and
    --encode, Stefan Kost and Heiko Rupp improvements on the --shell</li>
  <li>fixes for xmlcatalog linking pointed by Weiqi Gao</li>
  <li>fixes to the HTML parser</li>
</ul><h3>2.4.9: Nov 6 2001</h3><ul>
  <li>fixes more catalog bugs</li>
  <li>avoid a compilation problem, improve xmlGetLineNo()</li>
</ul><h3>2.4.8: Nov 4 2001</h3><ul>
  <li>fixed SGML catalogs broken in previous release, updated xmlcatalog
  tool</li>
  <li>fixed a compile errors and some includes troubles.</li>
</ul><h3>2.4.7: Oct 30 2001</h3><ul>
  <li>exported some debugging interfaces</li>
  <li>serious rewrite of the catalog code</li>
  <li>integrated Gary Pennington thread safety patch, added configure option
    and regression tests</li>
  <li>removed an HTML parser bug</li>
  <li>fixed a couple of potentially serious validation bugs</li>
  <li>integrated the SGML DocBook support in xmllint</li>
  <li>changed the nanoftp anonymous login passwd</li>
  <li>some I/O cleanup and a couple of interfaces for Perl wrapper</li>
  <li>general bug fixes</li>
  <li>updated xmllint man page by John Fleck</li>
  <li>some VMS and Windows updates</li>
</ul><h3>2.4.6: Oct 10 2001</h3><ul>
  <li>added an updated man pages by John Fleck</li>
  <li>portability and configure fixes</li>
  <li>an infinite loop on the HTML parser was removed (William)</li>
  <li>Windows makefile patches from Igor</li>
  <li>fixed half a dozen bugs reported for libxml or libxslt</li>
  <li>updated xmlcatalog to be able to modify SGML super catalogs</li>
</ul><h3>2.4.5: Sep 14 2001</h3><ul>
  <li>Remove a few annoying bugs in 2.4.4</li>
  <li>forces the HTML serializer to output decimal charrefs since some
    version of Netscape can't handle hexadecimal ones</li>
</ul><h3>1.8.16: Sep 14 2001</h3><ul>
  <li>maintenance release of the old libxml1 branch, couple of bug and
    portability fixes</li>
</ul><h3>2.4.4: Sep 12 2001</h3><ul>
  <li>added --convert to xmlcatalog, bug fixes and cleanups of XML
  Catalog</li>
  <li>a few bug fixes and some portability changes</li>
  <li>some documentation cleanups</li>
</ul><h3>2.4.3:  Aug 23 2001</h3><ul>
  <li>XML Catalog support see the doc</li>
  <li>New NaN/Infinity floating point code</li>
  <li>A few bug fixes</li>
</ul><h3>2.4.2:  Aug 15 2001</h3><ul>
  <li>adds xmlLineNumbersDefault() to control line number generation</li>
  <li>lot of bug fixes</li>
  <li>the Microsoft MSC projects files should now be up to date</li>
  <li>inheritance of namespaces from DTD defaulted attributes</li>
  <li>fixes a serious potential security bug</li>
  <li>added a --format option to xmllint</li>
</ul><h3>2.4.1:  July 24 2001</h3><ul>
  <li>possibility to keep line numbers in the tree</li>
  <li>some computation NaN fixes</li>
  <li>extension of the XPath API</li>
  <li>cleanup for alpha and ia64 targets</li>
  <li>patch to allow saving through HTTP PUT or POST</li>
</ul><h3>2.4.0: July 10 2001</h3><ul>
  <li>Fixed a few bugs in XPath, validation, and tree handling.</li>
  <li>Fixed XML Base implementation, added a couple of examples to the
    regression tests</li>
  <li>A bit of cleanup</li>
</ul><h3>2.3.14: July 5 2001</h3><ul>
  <li>fixed some entities problems and reduce memory requirement when
    substituting them</li>
  <li>lots of improvements in the XPath queries interpreter can be
    substantially faster</li>
  <li>Makefiles and configure cleanups</li>
  <li>Fixes to XPath variable eval, and compare on empty node set</li>
  <li>HTML tag closing bug fixed</li>
  <li>Fixed an URI reference computation problem when validating</li>
</ul><h3>2.3.13: June 28 2001</h3><ul>
  <li>2.3.12 configure.in was broken as well as the push mode XML parser</li>
  <li>a few more fixes for compilation on Windows MSC by Yon Derek</li>
</ul><h3>1.8.14: June 28 2001</h3><ul>
  <li>Zbigniew Chyla gave a patch to use the old XML parser in push mode</li>
  <li>Small Makefile fix</li>
</ul><h3>2.3.12: June 26 2001</h3><ul>
  <li>lots of cleanup</li>
  <li>a couple of validation fix</li>
  <li>fixed line number counting</li>
  <li>fixed serious problems in the XInclude processing</li>
  <li>added support for UTF8 BOM at beginning of entities</li>
  <li>fixed a strange gcc optimizer bugs in xpath handling of float, gcc-3.0
    miscompile uri.c (William), Thomas Leitner provided a fix for the
    optimizer on Tru64</li>
  <li>incorporated Yon Derek and Igor Zlatkovic  fixes and improvements for
    compilation on Windows MSC</li>
  <li>update of libxml-doc.el (Felix Natter)</li>
  <li>fixed 2 bugs in URI normalization code</li>
</ul><h3>2.3.11: June 17 2001</h3><ul>
  <li>updates to trio, Makefiles and configure should fix some portability
    problems (alpha)</li>
  <li>fixed some HTML serialization problems (pre, script, and block/inline
    handling), added encoding aware APIs, cleanup of this code</li>
  <li>added xmlHasNsProp()</li>
  <li>implemented a specific PI for encoding support in the DocBook SGML
    parser</li>
  <li>some XPath fixes (-Infinity, / as a function parameter and namespaces
    node selection)</li>
  <li>fixed a performance problem and an error in the validation code</li>
  <li>fixed XInclude routine to implement the recursive behaviour</li>
  <li>fixed xmlFreeNode problem when libxml is included statically twice</li>
  <li>added --version to xmllint for bug reports</li>
</ul><h3>2.3.10: June 1 2001</h3><ul>
  <li>fixed the SGML catalog support</li>
  <li>a number of reported bugs got fixed, in XPath, iconv detection,
    XInclude processing</li>
  <li>XPath string function should now handle unicode correctly</li>
</ul><h3>2.3.9: May 19 2001</h3><p>Lots of bugfixes, and added a basic SGML catalog support:
</p><ul>
  <li>HTML push bugfix #54891 and another patch from Jonas Borgstrom</li>
  <li>some serious speed optimization again</li>
  <li>some documentation cleanups</li>
  <li>trying to get better linking on Solaris (-R)</li>
  <li>XPath API cleanup from Thomas Broyer</li>
  <li>Validation bug fixed #54631, added a patch from Gary Pennington, fixed
    xmlValidGetValidElements()</li>
  <li>Added an INSTALL file</li>
  <li>Attribute removal added to API: #54433</li>
  <li>added a basic support for SGML catalogs</li>
  <li>fixed xmlKeepBlanksDefault(0) API</li>
  <li>bugfix in xmlNodeGetLang()</li>
  <li>fixed a small configure portability problem</li>
  <li>fixed an inversion of SYSTEM and PUBLIC identifier in HTML document</li>
</ul><h3>1.8.13: May 14 2001</h3><ul>
  <li>bugfixes release of the old libxml1 branch used by Gnome</li>
</ul><h3>2.3.8: May 3 2001</h3><ul>
  <li>Integrated an SGML DocBook parser for the Gnome project</li>
  <li>Fixed a few things in the HTML parser</li>
  <li>Fixed some XPath bugs raised by XSLT use, tried to fix the floating
    point portability issue</li>
  <li>Speed improvement (8M/s for SAX, 3M/s for DOM, 1.5M/s for
    DOM+validation using the XML REC as input and a 700MHz celeron).</li>
  <li>incorporated more Windows cleanup</li>
  <li>added xmlSaveFormatFile()</li>
  <li>fixed problems in copying nodes with entities references (gdome)</li>
  <li>removed some troubles surrounding the new validation module</li>
</ul><h3>2.3.7: April 22 2001</h3><ul>
  <li>lots of small bug fixes, corrected XPointer</li>
  <li>Non deterministic content model validation support</li>
  <li>added xmlDocCopyNode for gdome2</li>
  <li>revamped the way the HTML parser handles end of tags</li>
  <li>XPath: corrections of namespaces support and number formatting</li>
  <li>Windows: Igor Zlatkovic patches for MSC compilation</li>
  <li>HTML output fixes from P C Chow and William M. Brack</li>
  <li>Improved validation speed sensible for DocBook</li>
  <li>fixed a big bug with ID declared in external parsed entities</li>
  <li>portability fixes, update of Trio from Bjorn Reese</li>
</ul><h3>2.3.6: April 8 2001</h3><ul>
  <li>Code cleanup using extreme gcc compiler warning options, found and
    cleared half a dozen potential problem</li>
  <li>the Eazel team found an XML parser bug</li>
  <li>cleaned up the user of some of the string formatting function. used the
    trio library code to provide the one needed when the platform is missing
    them</li>
  <li>xpath: removed a memory leak and fixed the predicate evaluation
    problem, extended the testsuite and cleaned up the result. XPointer seems
    broken ...</li>
</ul><h3>2.3.5: Mar 23 2001</h3><ul>
  <li>Biggest change is separate parsing and evaluation of XPath expressions,
    there is some new APIs for this too</li>
  <li>included a number of bug fixes(XML push parser, 51876, notations,
  52299)</li>
  <li>Fixed some portability issues</li>
</ul><h3>2.3.4: Mar 10 2001</h3><ul>
  <li>Fixed bugs #51860 and #51861</li>
  <li>Added a global variable xmlDefaultBufferSize to allow default buffer
    size to be application tunable.</li>
  <li>Some cleanup in the validation code, still a bug left and this part
    should probably be rewritten to support ambiguous content model :-\</li>
  <li>Fix a couple of serious bugs introduced or raised by changes in 2.3.3
    parser</li>
  <li>Fixed another bug in xmlNodeGetContent()</li>
  <li>Bjorn fixed XPath node collection and Number formatting</li>
  <li>Fixed a loop reported in the HTML parsing</li>
  <li>blank space are reported even if the Dtd content model proves that they
    are formatting spaces, this is for XML conformance</li>
</ul><h3>2.3.3: Mar 1 2001</h3><ul>
  <li>small change in XPath for XSLT</li>
  <li>documentation cleanups</li>
  <li>fix in validation by Gary Pennington</li>
  <li>serious parsing performances improvements</li>
</ul><h3>2.3.2: Feb 24 2001</h3><ul>
  <li>chasing XPath bugs, found a bunch, completed some TODO</li>
  <li>fixed a Dtd parsing bug</li>
  <li>fixed a bug in xmlNodeGetContent</li>
  <li>ID/IDREF support partly rewritten by Gary Pennington</li>
</ul><h3>2.3.1: Feb 15 2001</h3><ul>
  <li>some XPath and HTML bug fixes for XSLT</li>
  <li>small extension of the hash table interfaces for DOM gdome2
    implementation</li>
  <li>A few bug fixes</li>
</ul><h3>2.3.0: Feb 8 2001 (2.2.12 was on 25 Jan but I didn't kept track)</h3><ul>
  <li>Lots of XPath bug fixes</li>
  <li>Add a mode with Dtd lookup but without validation error reporting for
    XSLT</li>
  <li>Add support for text node without escaping (XSLT)</li>
  <li>bug fixes for xmlCheckFilename</li>
  <li>validation code bug fixes from Gary Pennington</li>
  <li>Patch from Paul D. Smith correcting URI path normalization</li>
  <li>Patch to allow simultaneous install of libxml-devel and
  libxml2-devel</li>
  <li>the example Makefile is now fixed</li>
  <li>added HTML to the RPM packages</li>
  <li>tree copying bugfixes</li>
  <li>updates to Windows makefiles</li>
  <li>optimization patch from Bjorn Reese</li>
</ul><h3>2.2.11: Jan 4 2001</h3><ul>
  <li>bunch of bug fixes (memory I/O, xpath, ftp/http, ...)</li>
  <li>added htmlHandleOmittedElem()</li>
  <li>Applied Bjorn Reese's IPV6 first patch</li>
  <li>Applied Paul D. Smith patches for validation of XInclude results</li>
  <li>added XPointer xmlns() new scheme support</li>
</ul><h3>2.2.10: Nov 25 2000</h3><ul>
  <li>Fix the Windows problems of 2.2.8</li>
  <li>integrate OpenVMS patches</li>
  <li>better handling of some nasty HTML input</li>
  <li>Improved the XPointer implementation</li>
  <li>integrate a number of provided patches</li>
</ul><h3>2.2.9: Nov 25 2000</h3><ul>
  <li>erroneous release :-(</li>
</ul><h3>2.2.8: Nov 13 2000</h3><ul>
  <li>First version of <a href="http://www.w3.org/TR/xinclude">XInclude</a>
    support</li>
  <li>Patch in conditional section handling</li>
  <li>updated MS compiler project</li>
  <li>fixed some XPath problems</li>
  <li>added an URI escaping function</li>
  <li>some other bug fixes</li>
</ul><h3>2.2.7: Oct 31 2000</h3><ul>
  <li>added message redirection</li>
  <li>XPath improvements (thanks TOM !)</li>
  <li>xmlIOParseDTD() added</li>
  <li>various small fixes in the HTML, URI, HTTP and XPointer support</li>
  <li>some cleanup of the Makefile, autoconf and the distribution content</li>
</ul><h3>2.2.6: Oct 25 2000:</h3><ul>
  <li>Added an hash table module, migrated a number of internal structure to
    those</li>
  <li>Fixed a posteriori validation problems</li>
  <li>HTTP module cleanups</li>
  <li>HTML parser improvements (tag errors, script/style handling, attribute
    normalization)</li>
  <li>coalescing of adjacent text nodes</li>
  <li>couple of XPath bug fixes, exported the internal API</li>
</ul><h3>2.2.5: Oct 15 2000:</h3><ul>
  <li>XPointer implementation and testsuite</li>
  <li>Lot of XPath fixes, added variable and functions registration, more
    tests</li>
  <li>Portability fixes, lots of enhancements toward an easy Windows build
    and release</li>
  <li>Late validation fixes</li>
  <li>Integrated a lot of contributed patches</li>
  <li>added memory management docs</li>
  <li>a performance problem when using large buffer seems fixed</li>
</ul><h3>2.2.4: Oct 1 2000:</h3><ul>
  <li>main XPath problem fixed</li>
  <li>Integrated portability patches for Windows</li>
  <li>Serious bug fixes on the URI and HTML code</li>
</ul><h3>2.2.3: Sep 17 2000</h3><ul>
  <li>bug fixes</li>
  <li>cleanup of entity handling code</li>
  <li>overall review of all loops in the parsers, all sprintf usage has been
    checked too</li>
  <li>Far better handling of larges Dtd. Validating against DocBook XML Dtd
    works smoothly now.</li>
</ul><h3>1.8.10: Sep 6 2000</h3><ul>
  <li>bug fix release for some Gnome projects</li>
</ul><h3>2.2.2: August 12 2000</h3><ul>
  <li>mostly bug fixes</li>
  <li>started adding routines to access xml parser context options</li>
</ul><h3>2.2.1: July 21 2000</h3><ul>
  <li>a purely bug fixes release</li>
  <li>fixed an encoding support problem when parsing from a memory block</li>
  <li>fixed a DOCTYPE parsing problem</li>
  <li>removed a bug in the function allowing to override the memory
    allocation routines</li>
</ul><h3>2.2.0: July 14 2000</h3><ul>
  <li>applied a lot of portability fixes</li>
  <li>better encoding support/cleanup and saving (content is now always
    encoded in UTF-8)</li>
  <li>the HTML parser now correctly handles encodings</li>
  <li>added xmlHasProp()</li>
  <li>fixed a serious problem with &amp;#38;</li>
  <li>propagated the fix to FTP client</li>
  <li>cleanup, bugfixes, etc ...</li>
  <li>Added a page about <a href="encoding.html">libxml Internationalization
    support</a></li>
</ul><h3>1.8.9:  July 9 2000</h3><ul>
  <li>fixed the spec the RPMs should be better</li>
  <li>fixed a serious bug in the FTP implementation, released 1.8.9 to solve
    rpmfind users problem</li>
</ul><h3>2.1.1: July 1 2000</h3><ul>
  <li>fixes a couple of bugs in the 2.1.0 packaging</li>
  <li>improvements on the HTML parser</li>
</ul><h3>2.1.0 and 1.8.8: June 29 2000</h3><ul>
  <li>1.8.8 is mostly a commodity package for upgrading to libxml2 according
    to <a href="upgrade.html">new instructions</a>. It fixes a nasty problem
    about &amp;#38; charref parsing</li>
  <li>2.1.0 also ease the upgrade from libxml v1 to the recent version. it
    also contains numerous fixes and enhancements:
    <ul>
      <li>added xmlStopParser() to stop parsing</li>
      <li>improved a lot parsing speed when there is large CDATA blocks</li>
      <li>includes XPath patches provided by Picdar Technology</li>
      <li>tried to fix as much as possible DTD validation and namespace
        related problems</li>
      <li>output to a given encoding has been added/tested</li>
      <li>lot of various fixes</li>
    </ul>
  </li>
</ul><h3>2.0.0: Apr 12 2000</h3><ul>
  <li>First public release of libxml2. If you are using libxml, it's a good
    idea to check the 1.x to 2.x upgrade instructions. NOTE: while initially
    scheduled for Apr 3 the release occurred only on Apr 12 due to massive
    workload.</li>
  <li>The include are now located under $prefix/include/libxml (instead of
    $prefix/include/gnome-xml), they also are referenced by
    <pre>#include &lt;libxml/xxx.h&gt;</pre>
    <p>instead of</p>
    <pre>#include "xxx.h"</pre>
  </li>
  <li>a new URI module for parsing URIs and following strictly RFC 2396</li>
  <li>the memory allocation routines used by libxml can now be overloaded
    dynamically by using xmlMemSetup()</li>
  <li>The previously CVS only tool tester has been renamed
    <strong>xmllint</strong> and is now installed as part of the libxml2
    package</li>
  <li>The I/O interface has been revamped. There is now ways to plug in
    specific I/O modules, either at the URI scheme detection level using
    xmlRegisterInputCallbacks()  or by passing I/O functions when creating a
    parser context using xmlCreateIOParserCtxt()</li>
  <li>there is a C preprocessor macro LIBXML_VERSION providing the version
    number of the libxml module in use</li>
  <li>a number of optional features of libxml can now be excluded at
    configure time (FTP/HTTP/HTML/XPath/Debug)</li>
</ul><h3>2.0.0beta: Mar 14 2000</h3><ul>
  <li>This is a first Beta release of libxml version 2</li>
  <li>It's available only from<a href="ftp://xmlsoft.org/libxml2/">xmlsoft.org
    FTP</a>, it's packaged as libxml2-2.0.0beta and available as tar and
  RPMs</li>
  <li>This version is now the head in the Gnome CVS base, the old one is
    available under the tag LIB_XML_1_X</li>
  <li>This includes a very large set of changes. From a  programmatic point
    of view applications should not have to be modified too much, check the
    <a href="upgrade.html">upgrade page</a></li>
  <li>Some interfaces may changes (especially a bit about encoding).</li>
  <li>the updates includes:
    <ul>
      <li>fix I18N support. ISO-Latin-x/UTF-8/UTF-16 (nearly) seems correctly
        handled now</li>
      <li>Better handling of entities, especially well-formedness checking
        and proper PEref extensions in external subsets</li>
      <li>DTD conditional sections</li>
      <li>Validation now correctly handle entities content</li>
      <li><a href="http://rpmfind.net/tools/gdome/messages/0039.html">change
        structures to accommodate DOM</a></li>
    </ul>
  </li>
  <li>Serious progress were made toward compliance, <a href="conf/result.html">here are the result of the test</a> against the
    OASIS testsuite (except the Japanese tests since I don't support that
    encoding yet). This URL is rebuilt every couple of hours using the CVS
    head version.</li>
</ul><h3>1.8.7: Mar 6 2000</h3><ul>
  <li>This is a bug fix release:</li>
  <li>It is possible to disable the ignorable blanks heuristic used by
    libxml-1.x, a new function  xmlKeepBlanksDefault(0) will allow this. Note
    that for adherence to XML spec, this behaviour will be disabled by
    default in 2.x . The same function will allow to keep compatibility for
    old code.</li>
  <li>Blanks in &lt;a&gt;  &lt;/a&gt; constructs are not ignored anymore,
    avoiding heuristic is really the Right Way :-\</li>
  <li>The unchecked use of snprintf which was breaking libxml-1.8.6
    compilation on some platforms has been fixed</li>
  <li>nanoftp.c nanohttp.c: Fixed '#' and '?' stripping when processing
  URIs</li>
</ul><h3>1.8.6: Jan 31 2000</h3><ul>
  <li>added a nanoFTP transport module, debugged until the new version of <a href="http://rpmfind.net/linux/rpm2html/rpmfind.html">rpmfind</a> can use
    it without troubles</li>
</ul><h3>1.8.5: Jan 21 2000</h3><ul>
  <li>adding APIs to parse a well balanced chunk of XML (production <a href="http://www.w3.org/TR/REC-xml#NT-content">[43] content</a> of the
    XML spec)</li>
  <li>fixed a hideous bug in xmlGetProp pointed by Rune.Djurhuus@fast.no</li>
  <li>Jody Goldberg &lt;jgoldberg@home.com&gt; provided another patch trying
    to solve the zlib checks problems</li>
  <li>The current state in gnome CVS base is expected to ship as 1.8.5 with
    gnumeric soon</li>
</ul><h3>1.8.4: Jan 13 2000</h3><ul>
  <li>bug fixes, reintroduced xmlNewGlobalNs(), fixed xmlNewNs()</li>
  <li>all exit() call should have been removed from libxml</li>
  <li>fixed a problem with INCLUDE_WINSOCK on WIN32 platform</li>
  <li>added newDocFragment()</li>
</ul><h3>1.8.3: Jan 5 2000</h3><ul>
  <li>a Push interface for the XML and HTML parsers</li>
  <li>a shell-like interface to the document tree (try tester --shell :-)</li>
  <li>lots of bug fixes and improvement added over XMas holidays</li>
  <li>fixed the DTD parsing code to work with the xhtml DTD</li>
  <li>added xmlRemoveProp(), xmlRemoveID() and xmlRemoveRef()</li>
  <li>Fixed bugs in xmlNewNs()</li>
  <li>External entity loading code has been revamped, now it uses
    xmlLoadExternalEntity(), some fix on entities processing were added</li>
  <li>cleaned up WIN32 includes of socket stuff</li>
</ul><h3>1.8.2: Dec 21 1999</h3><ul>
  <li>I got another problem with includes and C++, I hope this issue is fixed
    for good this time</li>
  <li>Added a few tree modification functions: xmlReplaceNode,
    xmlAddPrevSibling, xmlAddNextSibling, xmlNodeSetName and
    xmlDocSetRootElement</li>
  <li>Tried to improve the HTML output with help from <a href="mailto:clahey@umich.edu">Chris Lahey</a></li>
</ul><h3>1.8.1: Dec 18 1999</h3><ul>
  <li>various patches to avoid troubles when using libxml with C++ compilers
    the "namespace" keyword and C escaping in include files</li>
  <li>a problem in one of the core macros IS_CHAR was corrected</li>
  <li>fixed a bug introduced in 1.8.0 breaking default namespace processing,
    and more specifically the Dia application</li>
  <li>fixed a posteriori validation (validation after parsing, or by using a
    Dtd not specified in the original document)</li>
  <li>fixed a bug in</li>
</ul><h3>1.8.0: Dec 12 1999</h3><ul>
  <li>cleanup, especially memory wise</li>
  <li>the parser should be more reliable, especially the HTML one, it should
    not crash, whatever the input !</li>
  <li>Integrated various patches, especially a speedup improvement for large
    dataset from <a href="mailto:cnygard@bellatlantic.net">Carl Nygard</a>,
    configure with --with-buffers to enable them.</li>
  <li>attribute normalization, oops should have been added long ago !</li>
  <li>attributes defaulted from DTDs should be available, xmlSetProp() now
    does entities escaping by default.</li>
</ul><h3>1.7.4: Oct 25 1999</h3><ul>
  <li>Lots of HTML improvement</li>
  <li>Fixed some errors when saving both XML and HTML</li>
  <li>More examples, the regression tests should now look clean</li>
  <li>Fixed a bug with contiguous charref</li>
</ul><h3>1.7.3: Sep 29 1999</h3><ul>
  <li>portability problems fixed</li>
  <li>snprintf was used unconditionally, leading to link problems on system
    were it's not available, fixed</li>
</ul><h3>1.7.1: Sep 24 1999</h3><ul>
  <li>The basic type for strings manipulated by libxml has been renamed in
    1.7.1 from <strong>CHAR</strong> to <strong>xmlChar</strong>. The reason
    is that CHAR was conflicting with a predefined type on Windows. However
    on non WIN32 environment, compatibility is provided by the way of  a
    <strong>#define </strong>.</li>
  <li>Changed another error : the use of a structure field called errno, and
    leading to troubles on platforms where it's a macro</li>
</ul><h3>1.7.0: Sep 23 1999</h3><ul>
  <li>Added the ability to fetch remote DTD or parsed entities, see the <a href="html/libxml-nanohttp.html">nanohttp</a> module.</li>
  <li>Added an errno to report errors by another mean than a simple printf
    like callback</li>
  <li>Finished ID/IDREF support and checking when validation</li>
  <li>Serious memory leaks fixed (there is now a <a href="html/libxml-xmlmemory.html">memory wrapper</a> module)</li>
  <li>Improvement of <a href="http://www.w3.org/TR/xpath">XPath</a>
    implementation</li>
  <li>Added an HTML parser front-end</li>
</ul><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
