0.5.9 2020-08-xx
    - Add $node.isBlank() method; mapped to raw xmlIsBlankNode() method.
    - Fix LibXML::DocumentFragment error handling to return structured
      X::LibXML::Parser exceptions; similar to LibXML::Parser.
0.5.8 2020-08-07
    - Add :%ns option to node find(), find-nodes(), find-value(), exists(),
      xpath-context(), and xpath context new() method.
0.5.7 2020-08-06
    - Indicate position of parsing errors (Perl port) #15
    - Hide reader op() methods from backtrace
    - Make it illegal to move a DTD owned by one document into another.
      This prevents the subsequent memory management and valgrind errors
      noted in #35. A cloned copy of the Dtd can be inserted:
          $to-doc.setInternalSubset: $from-doc.getInternalSubset.clone();
0.5.6 2020-07-13
    - Hide validate() methods from backtrace
    - Tweak multi candidate parse(_U:) and parse($) candidates to
      ensure all options are processed by the parser.
0.5.5 2020-07-07
    - Changed LibXML::HashMap node handling:
      -- Store nodes directly; avoid coercement to node-sets
      -- Remove XPathDomain subset (now the same as XPathRange)
0.5.4 2020-07-04
    - Add live object metrics to 11memory.t.
    - Add LibXML::Parser::Context.publish() method with early
      destruction of xmlParserCtxt objects. Reduce number of live
      objects and memory usage #45
0.5.3 2020-07-02
    - Add LibXML::HashMap; bindings to xmlHashTable.
    - Use it for node lists and sets associative interfaces #43
    - Fix double referencing of node-set elements #44
0.5.2 2020-06-18
    - Fix #42 .parent() on root element dying
0.5.1 2020-06-18
    - Fix #41 getElementsByXxxx() order scrambling (broken in 0.5.0)
0.5.0 2020-06-17
    - #36 fixed install failure / Dtd premature free issue
    - #38 Performance improvements and bench-marking
      -- Convert node and XPath object classes to CPointer representations. This
         allows for faster lower-memory thrifty stantation of objects via nativecast.
      -- .native() methods and options have globally renamed to .raw() ('native' no longer
          makes sense as both the inner [CStruct] and outer [CPointer] classes are both
          native variants).
      -- Optimised the getElementsByXxx() DOM methods. Changed from using XPath searches
        to custom binding functions [dom.c]
      -- Fixed thread-safety of LibXML::Node::List and LibXML::Node::Set iterators (see
         also https://github.com/Raku/doc/issues/3477)
0.4.0 2020-05-21
    - Fix $node.getOwner() method to return the root of the
      current node. Distinguish it from .getOwnerDocument
      which always returns a LibXML::Document object.
    - Fix $node.replace() method to work on the root element
    - Overhaul of Pod documentation.
    - Rename .Str(), .Blob() options; :expand -> :tag-expansion,
      :skip-decl -> :skip-xml-declaration. Make them consistant
      with configuration defaults.
    - Implemented $node.last(:!blank) option
    - renamed role LibXML::_DOMNode -> LibXML::_ParentRole
    - Added 'dom-native' trait for native wrapping of simple methods
    - DOM method appendTextChild now returns the added element
    - Fix for #36 - failing close() count tests (due to erratic
      calling of close callback)
    - Rename config methods: keep-blanks-default() -> keep-blanks(),
      default-parser-flags() -> parser-flags()
    - Issue#37 fix mixup between XmlStandaloneYes and XmlStandaloneNo
0.3.1 2020-04-29
    - Add $node.ACCEPTS() method for XPath matching, e.g.:
      'self::foo' ~~ $node
    - renamed github project p6-xml -> libxml-raku
    - moved directory doc/ -> docs/
0.3.0 2020-02-08
    - Rename module source files *.pm6 -> *.rakumod
0.2.7 2020-01-14
    - [LibXML::Native] - Fixes to 'rw-ptr' and 'rw-str' for Rakudo 2019.11+ Blead
0.2.6 2019-12-13
    - Replaces references to Perl with Raku
    - This includes LICENSE sections of 'Perl' with 'Artistic'. Replace
      LICENSE file with a more recent version of the Artistic license.
    - Fixes for Rakudo 2018.10
0.2.4 2019-12-08
    - [xml6_gbl.c]
      Add xml6_gbl_save_error_handlers() and xml6_gbl_restore_error_handlers().
    - [LibXML::XPath::Context]
      -- save/restore error handlers
    - [LibXML::ErrorHandling][LibXML::Reader][LibXML::Schema][LibXML::RelaxNG]
      -- save/restore error handlers
      -- Replace X::LibXML::Reader::OpFail with X::LibXML::OpFail. Fix usage
         in schema and relax-ng.
    - [LibXML::{Pattern|Dtd|Schema|RelaxNg|RegExp}]
      -- Added ACCEPTS() multi methods for more Rakuish matching, e.g.:
          $node ~~ $pattern; $doc ~~ $dtd; "abc" ~~ $regexp
    - [t/26schema.t][t/43options.t] fix tests that were accessing the network #32
      (were failing when http/https was not available).
0.2.3 2019-12-05
    - [dom.c][LibXML::Node] take out case conversion from domXPathGetKey()
      .xpath-key() to case handling semantics. tags are converted to
      lowercase on :html parse., but retain case when from the API.
      XPath searches then need to match the case (see 12html.t).
    - [LibXML::_Options] fix compilation on Rakudo 2018.07
0.2.2 2019-11-29
    - [domXPath] fixed reference counting in domPushNodeSet() #29
    - [LibXML::ErrorHandling][LibXML::SAX::Builder]
      -- Changed the SAX `serror($err)` callback argument from an native `xmlError`
         structure to a `X::LibXML` exception object.
      -- Fixed SAX Handler dispatch of Raku callback raised exceptions #31
   - Rename classes LibXML::AttrDecl -> LibXML::Dtd::Attr, LibXML::ElementDecl
     -> LibXML::Dtd::Element; work in progress on #30
0.2.1 2019-11-27
    - [dom.c] Split-off domASTKey() and domXPathKey() functions from domNodeName().
    - [LibXML::Node]
      -- revert .nodeName(), 0.1.9 changes; restore to DOM compliant names:
         #cdata => #data-section, #fragment' => #document-fragment,
         #xml|#html|#docb => #document
      -- instead, introduce new method .ast-key() which returns short-forms:
         (#cdata, #fragment, #xml, #html, #doc) for AST construction.
      -- from-ast() now accepts all of the above (i.e.. #cdata, or #cdata-section;
         #document or #xml, #fragment, or #document-fragment)
0.2.0 2019-11-26
    - [LibXML::Native][LibXML::Config] really disable network access this time.
      Started, but not completed properly in release 0.1.0.
    - [LibXML::Schema] Disable network loading of `xsd:import` statements by
      default. These can be enabled via the :network flag. Further control is
      then possible by setting up custom entity loaders and/or input callbacks.
0.1.12 2019-11-23
    - [doc][META6.json] Replace 'Perl 6' with 'Raku'
    - [LibXML::_Options] fix options parsing, broken in 0.1.11
0.1.11 2019-11-22
    - [LibXML::Node::Set] add .reverse() method
    - [LibXML::Namespace] bug-fix to .unique-key() method
    - [dom.c] fix handling of DTD nodes as arguments to domAppendChild(),
      domReplaceChild(), domInsertBefore(), domReplaceNode() and domAddSibling()
    - [LibXML::Parser][LibXML::_Options] tweak options processing
0.1.10 2019-11-20
    - [LibXML::Find::Context] fix memory leaks in .find() and .findnodes(). Fix
      find() so it now iterates on node sets e.g.: for $e.find { ... }
0.1.9 2019-11-07
    New AST construction mode:
    - [LibXML::Item] add ast-to-xml() - for succint construction of nodes from data
    - [LibXML::PI] nodeName() method now prepends '?'
    - [LibXML::CData] - nodeName shortened from '#cdata-section' to '#cdata'
    - [LibXML::Node]
      -- getElementsByTag name can now select '?pi-name', '?*', '@*' 
      -- added .ast() method
    'Pluggable' CSS Selectors:
    - [LibXML::XPath::Context] Implement querySelector() and querySelectorAll()
      methods. Can be delegated CSS::Selector::To::XPath (or similar)
    Issues:
    - [LibXML::Item] #27 improved class loading in box-class()
0.1.8 2019-11-03
    - [LibXML::Node][LibXML::XPath::Context] Added:
      -- $node.first($xpath) and $node.last($xpath) multi-methods
      -- $node.elements() and .text() methods
      -- $.children(:!blank) option
    - [LibXML::Item] $.isSameNode() method now allows comparisons between
      nodes and namespaces (always False for defined values)
    - [dom.c] add domUniqueKey(), domIsSameNode()
    - [xml6_ns.c] add xml6_ns_unique_key()
0.1.7 2019-10-29
    - [LibXML::Node::List] add AT-KEY method
    - [LibXML::XPath::Context] recover queries when a result is returned;
      die otherwise. Matches behavious of Perl 5 module.
    - [LibXML::Native::Defs] changed constants to variables: XML2, BIND-XML2, CLIB
      Just to make it easier to override them if needed:
      use LibXML::Native::Defs :$XML2; $XML2 = "/someother-path/file.so"
0.1.6 2019-10-21
    - Replace class LibXML::ErrorHandler with role LibXML::ErrorHandling. Fixes #24.
    - [LibXML::DocumentFragment]. Add subclass ParserContext. Use it to
      bundle various parameters. Tidier and hopefully fixes some memory
      leaks from closures in native callbacks
0.1.5 2019-10-18
    - Added $node.findnodes :deref option. Use it in the call from
      the .AT-KEY() method. This changes:
          '$node<species><species/humps>' to a more natural:
          '$node<species><humps>'
0.1.4 2019-10-14
    - [src/dom.c] return HTML xpath keys as lowercase; make them case-insensitive.
0.1.3 2019-10-13
    - [LibXML::Node][LibXML::Node::Set][LibXML::Node::List]
      -- add .xpath-key() method; returns a key that can be used to
        refetch the node in an xpath expression. e.g.
        'comment-node()' for comment nodes.
      -- use .xpath-key() to compute Hash keys. This leads to a
         more natural round-trip, but does change some fixed keys.
         E.g. $elem<#text> is now $elem<text()>
0.1.2 2019-10-12
    - [LibXML::DocumentFragment] make .parse() method consistant with LibXML::Document
      -- allow .parse() as a class-level method.
      -- return the document fragment (not an integer status)
      -- rename :repair option to :recover
    - [LibXML::Node::Set][LibXML::Node::List] modify .Str() method to return a
      concatonation of nodes. This can be reparsed as a document fragment
    - [LibXML::Node] add .cononicalize() method for c14n serialization (borrowed
      from libxml-ruby bindings)
0.1.1 2019-10-06
    - [LibXML][LibXML;:Config] add .config-version method; this is the version of
      libxml2 that the module was configured and built against.
    - [LibXML::Node::Set][LibXML::Node::List] - add .first() and .tail() methods
    - [LibXML::Native][LibXML::ErrorHandler]
      -- add xml6_gbl_message_func() - a native wrapper for marshalling formatted
         string arguments from varargs
      -- remove LibXML::Native.GenericErrorFunc() method
      -- replace with LibXML::ErrorHandler.SetGenericErrorFunc(), which uses
         xml6_gbl_message_func() for constructing string format arguments.
0.1.0 2019-09-27
    - [LibXML::Parser] More secure default parser options. #23
      -- The parser defaults `network` and `expand-entities` have been changed from
         True to False.  This is partially in reponse to an equivalent ticket for
         the Perl 5 XML::LibXML module https://rt.cpan.org/Public/Bug/Display.html?id=118032
      -- Document the `dtd` parser option as a quick way of setting up these options in
         a secure and trusted environment and restoring Perl 5 XML::LibXML like access.
0.0.9 2019-09-23
    - [LibXML::ErrorHandler improvements for LibXSLT:
      -- catch input handler exceptions
      -- alllow for multiple '%s' arguments in generic errors
      -- display multiple errors
    - [LibXML::XPATH::Context] fixed object GC #22. Added $*XPATH-CONTEXT
    - Ported XML::XPath tests to xt/xpath/. Added methods for improved
      compatibility with  XML::XPath and XML modules:
      -- [LibXML::Element] add .attribs() [alias for .attributes()]
      -- [LibXML::Node] added:
         --- .nodes() method [alias for .childNodes()]
         --- .gist() method [alias for .Str()]
      -- [LibXML::Node::Set] added .is-equiv() method
      -- [LibXML::Text] add .text() [alias for data]
0.0.8 2019-09-17
    - [LibXML::Parser::Context] fixed object GC #21. Added $*XML-CONTEXT
      dynamic variable.
0.0.7 2019-09-13
    - [LibXML::SAX::Handler::SAX2]
      -- replace .finish method with .publish
      -- Add error handling callbacks: .warning, .error, fatalError, serror
    - [LibXML::Parser] combine with [LibXML].
0.0.6 2019-09-10
    - [LibXML::Native] Change cglobals from constants to subs (avoid compilation failures #16)
    - [LibXML::Native::Defs] rename library constants LIB -> XML2, BIND-LIB -> BIND-XML2; add CLIB for windows.
0.0.5 2019-09-08
    - [LibXML::Reader]
      -- fix get/set of parser options #20
      -- implement .setParserProp method
    - [LibXML::XPath:::Context] - imnproved error handling
    - reduced displayed errors in test suite #19
0.0.4 2019-09-06
    - [LibXML::Node] remove custom native accessor
    - drop min supported libxml version from v2.09.00 to v2.08.00
    - skip too successful 'comment' test for open issue #18 (segfaulting)
0.0.3 2019-09-05
    - [src/xml6_ref.6] fix 'uint' compilation error #16
    - [META6.json] fix source URL #17
0.0.2 2019-09-04
    - [LibXML::Node] adopt LibXML::Element associative interface. Fix
      handling of '#text', '#comment' and '#cdata' DOM classes (which
      can be returned by the .keys method).
    - [LibXML::Node::List] optimisations to .AT-POS method
    - [LibXML::Node::Set] rename .push method to .add
    - [LibXML::Reader] add missing :!network option. Fix unintended
      network fetch of an external Dtd in 40reader_mem_error.t
0.0.1 2019-09-03
    Initial release
