Revision history for XML-PugiXML 0.10 2026-10-16 - Avoid quadratic removal with retained stale handles. - Declare build and test prerequisites for older Perls. - Keep C compiler flags out of C++ builds. 0.09 2026-09-15 - Fix use-after-free after reassigning the variable holding a document - Fix double free after an explicit DESTROY - Destroyed or uninitialized handles croak instead of crashing 0.08 2026-07-29 - Fix use-after-free in $doc->select_nodes (results past the first got a bogus document handle; ->root segfaulted) - Fix use-after-free after remove_child/remove_attr (handles into the removed subtree now go stale instead of dangling) - Reject embedded NULs in lookup and removal args, not just mutation args - path() requires a single-character delimiter - CLONE_SKIP on all classes (ithreads double-free) - Keep perl's $Config{ccflags} instead of replacing them 0.07 2026-06-25 - Add ensure_child / ensure_attr (get-or-create) - Expose FORMAT_NO_EMPTY_ELEMENT_TAGS and PUGIXML_VERSION constants - Support system pugixml >= 1.8 (Alien::pugixml 0.03) 0.06 2026-06-01 - Catch C++ exceptions at the XS boundary - Reject cross-doc node args and embedded NULs - Don't leak caught C++ exception objects - Capture errno before formatting save error - Fix default indent (was " t", now tab) 0.05 2026-04-27 - Don't double-encode raw UTF-8 byte input - Stale-handle checks on secondary node arguments - NODE_* type constants; Attr::set_name 0.03 2026-03-16 - Fix XSUB stack panic on Perl 5.42+ (RC stack) - Fix floating-point test comparison portability 0.02 2026-03-14 - Stale handle detection after reset/reload (no more segfaults) - XPath attribute selection support (//@id now works) - Attr::element() for parent navigation - UTF-8 input upgrade for all string parameters - Safe 64-bit integers on 32-bit Perl 0.01 2026-03-04 - Initial release - Fast XML parsing via pugixml (8-12x faster than XML::LibXML) - Document: load_file, load_string, save_file, to_string, reset - DOM navigation: root, child, children, parent, first_child, last_child, next_sibling, previous_sibling, find_child_by_attribute - Attributes: attr, attrs, append_attr, prepend_attr, set_attr, remove_attr - Modification: append_child, prepend_child, insert_child_before/after, append_copy, prepend_copy, insert_copy_before/after, remove_child - Special nodes: append_cdata, append_comment, append_pi - XPath: select_node, select_nodes, compile_xpath with evaluate_node/nodes/string/number/boolean - Node info: name, value, text, type, path, hash, offset_debug, valid - Attribute types: as_int, as_uint, as_llong, as_ullong, as_double, as_bool - Parse/format constants for fine-grained control - UTF-8 support - Reference-counted memory model (nodes keep document alive)