0.10.13 2024-11-26T07:32:08+13:00
- Fix failing libxml v2.14+ test in t/00dtd.t
0.10.12 2024-11-26T06:56:59+13:00
- Filter suppressed errors and warnings early for improved error
handling performance #115
- Provide a domNodeSetAtPos() binding. Avoid direct access to
xmlNodeSet C struct NodeTab field.
- Re-enable local error handling for libxml 2.14, which resolves
https://gitlab.gnome.org/GNOME/libxml2/-/issues/808.
- Fix Dtd IO error handling by promoting some libxml2 warnings to errors.
- Create t/META6.json for test suite modules and rename test modules
from *.pm6 to *.rakumod
- Remove internal class LibXML::HashMap::NodeSet, which is equivalent
to LibXML::HashMap.^parameterize(LibXML::Node::Set)
0.10.11 2024-11-05T09:21:51+13:00
- Disable local error handling for libxml2 2.13 Dtd parsing. Waiting
on https://gitlab.gnome.org/GNOME/libxml2/-/issues/808
0.10.10 2024-11-05T07:31:45+13:00
- Deprecate LibXML::Document input-compressed() which has proven to
be inconsistent across libxml2 versions and platforms.
- Fix initialization in Lib:XML::ErrorHandling.set-error-handling()
- Rework DocumentFragment balanced chunk parsing for pending libxml
2.14+ implementation. Remove deprecated xmlKeepBlanksGlobal from
xml6 bindings.
- Fix some libxml 2.14+ test regressions and deprecation warnings
in xml6 bindings.
- Fix xmlBufCreate() to require a 'size' argument.
- Refactor LibXML::_CharacterData string manipulation methods
- Structure LibXML::DocumentFragment parse() method as multis;
making it consistent with LibXML::Parser
0.10.9 2024-06-02T11:28:45+12:00
- Deprecation of xmlLastError() global variable #111
- Implement context-specific error handlers to be switched on with libxml
2.13.0+ #111. There's still some more libxml support needed in areas
such as Dtd and balanced chunk parsing.
- Don't reference-count static predefined entities ('>', '<', etc).
- Fix reference-counting in associative node-sets and some Dtd internal
tables #112
- Fix stack leakage/eventual overflow in input-callback set-up/tear-down.
- Deprecate AddChild() for LibXML::Attr;
0.10.8 2024-05-17T07:29:02+12:00
- Fix flapping t/00dtd.t test #111
0.10.7 2024-05-14T11:18:11+12:00
- Fix compilation against libxml2 v2.12.6 #111
- Fix Windows install
- Further expunge _xmlDefaultSAXLocator definitions
0.10.6 2023-10-31T05:46:03+13:00
- Remove references to deprecated _xmlDefaultSAXLocator #108
- Save HTML as HTML, not XHTML due to issues in browsers handling
CDATA blocks #109
0.10.5 2023-08-28T08:51:47+12:00
- Simplify generic error handling. Replace unnecessary Raku-side
format string processing with vnsprintf() in C wrapper code.
Fixes #107
0.10.4 2023-06-22T06:21:36+12:00
- Add file-level locking to Windows DLL installation
- Add ability to accept pre-existing xmlXPathContext to
LibXML::XPath::Context PR #105
0.10.3 2023-05-31T15:45:47+12:00
- Fix handling of name-space objects in C bindings; Eliminate
some valgrind warnings.
0.10.2 2023-04-13T08:33:33+12:00
- Fix clearNamespace() method
0.10.1 2023-03-30T08:15:47+13:00
- Fix segfault in LibXML::Reader.new(:$file) on non-existent file
- Consistently use $config.class-from() in ast-to-xml()
0.10.0 2023-03-06T06:15:27+13:00
- Make LibXML::Item use :config for boxing (#97)
Any config supplied by upstream was previously ignored and class mapping
was expected to be done by `LibXML::Node`. This resulted in limited
abilities of user code in controlling how boxing is done. See #94.
Note that `LibXML::Node` still does its own class mapping because this
is the point of final decision and in many cases it is invoked directly.
- Added config attribute `with-cache` (#102). This defines whether
simple caching based on node's `unique-key` should be used.
- Fixed LibXML::EntityRef DOM class (#99). Remove local $.raw attribute
and base it on LibXML::_Rawish. Like other node types.
- Refactors:
-- LibXML::Raw composition of xmlNode and xmlNs classes. These
are now composed via the domNode parameterized role.
-- Rename try() method to do() in various contexts, including
parsing and validation.
-- fix some types in bindings parameters and return types. Mostly,
xmlNode -> anyNode,
0.9.10 2023-02-20T08:10:13+13:00
- Lessen impact of #95 (.raku method handing). Override LibXML::Node:D
raku() to call LibXML::Node:U raku().
- Add intermediate domNode() role. This eases class composition
and bypasses the need to nativecast raw nodes, when the type
is known in advance. E.g. getElementsByTagName() is about
25% faster.
- Further optimize LibXML::Node::Set by nativecasting a CArray
as a whole to the container type, rather than casting individual
members.
- Add elementIndex() method to LibXML::Element. After invoking
doc.indexElements(), this returns distinct element numbers,
with the root element having value 1.
- Change xmlElement content() access to return a string. This
is where the element-index (above) is stored.
- Lock-protect error handling.
0.9.9 2023-02-10T08:23:28+13:00
- Enable threading in libxml.dll resource for Windows.
However, LibXML::Config.parser-locking now defaults to True on
Windows due to unresolved failures in 90threads.t
- Regress against latest libxml2 blead.
-- adjust 35huge_mode.t and 60err_prev_chain.t for changes in
some limits;
-- xmlElem struct size has changed! Affected tail members of the
struct have been made private and t/00native.t has been fixed.
- Build.pm6 -I now works on non-Windows platforms
- Add LibXML::Config.have-iconv method to detect if libxml was built
with the inconv library for Unicode encoding and decoding
- Fix some tests to skip for the right reasons; that the library
was built without iconv or compression, rather than we're running
under Windows.
0.9.8 2023-02-08T09:09:26+13:00
- Fix more xmlMalloc() not paired with xmlFree()
- Block parse(:$io) from running on Windows. I don't think it's
ever worked and may crash.
- Add CStruct size tests to t/00native.t
0.9.7 2023-02-07T07:58:24+13:00
- Implement DLL name demangling to fix installation on Windows #66
0.9.6 2023-02-04T21:04:27+13:00
- Update prebuilt xml6.dll on Windows
- Fix mixed use of alloc() & xmlMalloc(). Ensure objects created via
xmlMalloc() are freed via xmlFree().
0.9.5 2023-02-03T07:52:04+13:00
- Fix de-ASTfication of the default (xmlns) namespace PR #92 vrurg++
- Fix xmlBuffer32 and xmlBuf to work with binary data
- Fix return values on xml6_sax_locator_set_{getPublicId|getSystemId}
- Refactor of LibXML::_Options get-option() and set-option() methods
0.9.4 2023-01-19T06:26:19+13:00
- Deprecate HTML serialization via htmlDoc.dump() method in
favour of xml6_node_to_buf(), which uses xmlSaveTree().
- Added node method isHTMLish(). This is used to default
the :$html option in Str() and Blob() methods.
0.9.3 2023-01-15T06:20:09+13:00
- Add :%attribs argument to startElementNs() SAX handler
0.9.2 2022-12-02T10:49:43+13:00
- Fix valgrind errors in xmlEncodingStr subset.
- Remove references to DocBook (DOCB). Not used in the Raku bindings,
deprecated in libxml2, and causing compilation warnings.
0.9.1 2022-11-10T13:48:54+13:00
- Fix LibXML::XPath::Context get-value() for LibXSLT
0.9.0 2022-08-18T06:01:31+12:00
- Simplify subclassing in complex cases
This can now be done by inheriting from `LibXML::Config` and adding
a custom `class-from` method. See t/00subclass.t
0.8.1 2022-08-15T10:53:29+12:00
- Fix installation v0.8 api installation #84
0.8.0 2022-08-15T09:36:08+12:00
- Improved encapsulation and inheritability
-- Provide ways of overriding default classes with user-provided children
on per-parser (per-document) base.
-- Implement common config object across all elements of the same document.
-- Replace CPointer classes with P6opaque
-- Introduce dedicated exception classes
- Add `api` key to META6 and LibXML metadata. Add test xt/release/version.t
this ensures that x.y.0 <= api <= x.y.z, when x.y.z is the current version.
0.7.10 2022-06-28T07:33:30+12:00
- Fix error handling in SAX callbacks. These are now trapped by
LibXML::ErrorHandler. Note that exceptions in SAX callbacks now
halt parsing unless `recover` has been set.
- Also fix error handling in XPath evaluations. Exceptions were
incidentally failing by causing stack errors (1223).
- Define some newly added XPath error codes in LibXML::Enums,
including 1223 (XML_XPATH_STACK_ERROR)
- Use generic error-handler in XPath expressions anyway; structured
errors are geared more towards parsing.
- More minor optimizations of DOM methods
0.7.9 2022-06-22T07:57:17+12:00
- Optimize resolve-package for a significant speedup #79
0.7.8 2022-06-20T15:15:05+12:00
- Remove memory leaks
-- Fix anyNode Str() method leak, by basing it on $node.Blob #77
-- Add LibXML::Raw AllocedStr class for pointers to strings that need to be freed #78
-- Add xml6_gbl_cache() to mimimise leaks on repetitive data (e.g. tag-names) #78
- Created xml6_gbl module to house most of the xml6_gbl_* subroutines
0.7.7 2022-06-13T10:47:07+12:00
- Update prebuilt xml6.dll on Windows
0.7.6 2022-06-13T06:51:41+12:00
- Handle NULL in xml6_gbl_restore_error_handlers(). This could happen if
an exception occurred before error handlers have been set-up.
0.7.5 2022-06-12T08:27:39+12:00
- LibXML::Config
-- More documentation, checks and protection
-- Correct handling of &external-entity-loader, which is a true
global in libxml2; make it similar to input-callbacks
-- Detect and warn on OS thread change.
- xml6_gbl.c: use longer accessor sub names for thread-scoped accessors,
e.g. xml6_gbl_os_thread_get_tag_expansion()
0.7.4 2022-06-03T12:33:17+12:00
#13 we can't rely on Raku threads maintaining an association with LibXML
global variables which are scoped to OS threads. This release locally
re-initializes settings whenever they are used.
- Avoid side effects from changing LibXML::Config settings. This now just
holds the settings, until the new setup() method is called to apply them.
The new restore() method can be called later to restore original settings.
- Parsing, validation and XPath contexts now call setup() to apply the
global setting locally and restore() to clean up afterwards..
0.7.3 2022-05-30T07:38:33+12:00
- Minor threading fixes
- Fix DocumentFragment DESTROY cleanup
0.7.2 2022-05-06T06:48:46+12:00
- Remove further locks to allow multi-threading in validation and
XPath queries.
0.7.1 2022-05-05T07:05:24+12:00
- Update Windows binary (resources\libraries\xml6.dll)
- Don't allow mutation of active LibXML::InputCallback objects.
- Fix handling of LibXML::Config:U parser-locking when True.
0.7.0 2022-05-04T07:50:06+12:00
- Remove parser lock in most cases to allow concurrent parsing.
- Use of parser-specific input-callbacks is not thread-safe. The
LibXML::Config:U parser-locking flag has been introduced to this
or any other potential thread-safety issues with parsing. Setting it
restores the old locking behaviour.
0.6.16 2022-04-28T08:15:40+12:00
- Support for multiple configurations. Added the LibXML::_Configurable role, with
$.config attribute to various parsing, validation and reading contexts.
Replace internal referencing of global configuration in DOM classes with
parameters. For example the document processXIncludes() method now accepts
a :$config parameter.
0.6.15 2022-04-26T06:00:31+12:00
- Replace LibXML::HashMap::Maker with LibXML::HashMap::NodeSet.
- Further thread safety improvements, including bare uses of
'require' and use of the $!hstore attribute in LibXML::Node:Set
and LibXML::Node::List.
0.6.14 2022-04-07T14:39:40+12:00
- Fixed thread safety issues in catalog and class loading - vrurg++
0.6.13 2022-04-01T11:04:54+13:00
- Fix LibXSLT broken in 0.6.11 by the withdrawal of xml6_gbl_message_func()
external symbol. Replaced by LibXML::ErrorHandling :&set-generic-error-handler
exported sub.
0.6.12 2022-03-31T17:06:34+13:00
- Add LibXML::Raw::CLib module. To encapsulate existing use of memcpy
and free
- move release repository from CPAN to zef ecosystem
0.6.11 2022-01-22T16:18:22+13:00
- Add LibXML::_Validator role. Performed by LibXML::{Dtd|Schema|RelaxNG}
- Add Windows support. This module pre-builds the binding library
(xml6) and installs a copy of libxml.dll.
0.6.10 2021-10-30T06:00:36+13:00
- Fix LibXML::Parser options setup and etc/benchmark.raku core-dump #64
0.6.9 2021-09-20T11:21:08+12:00
- Move @ClassMap from LibXML::Item to LibXML::Config and change it
from a constant to an 'our' scoped variable. Tweak the box-class()
sub in LibXML::Item to better support subclassing - see t/00subclass.t
- baseURI() now defaults to the document URI().
0.6.8 2021-08-27T15:35:11+12:00
Conformance to W3C::DOM 0.0.3:
- Default to DOM style createDocument() unless the first argument is defined
and matches /^\d'.'\d$/, i.e. it's an XML version string.
- Provide a cloneNode($deep) multi candidate.
- Add a LibXML::Text splitText() DOM method
- Rename role LibXML::_StringyNode to LibXML::_CharacterData. Base it
squarely on the W3C DOM CharacterData abstract role.
0.6.7 2021-08-24T08:14:25+12:00
- protect all parse and validation contexts. These require global
state setup and are not reentrant or thread-safe.
0.6.6 2021-08-23T13:10:48+12:00
- Complete porting of t/90threads.t from Perl. This involved adding:
-- protection locks in setup and finalization stages in
parsing and validation contexts.
-- protection locks to push parser methods in LibXML:Parser
- Add maximum error limit of 100 #61. Configurable via XML::Config.max-errors().
- Fix LibXML::Text to do the W3C::DOM::Text role
- Factor tests into subtests. Remove most 'TODO' test descriptions.
0.6.5 2021-07-15T13:05:19+12:00
- Fix for #60 type check error on reader values. Reader name() return
value was erroneously constrained to QName, whereas return value
could also be '#text', '#comment', etc. Relaxed to Str. Similar
fix to localName() method to return Str instead of NCName.
- Work in with LibXML's handling of missing element Declarations. If a
is seen without a corresponding declaration,
LibXML creates a place-holder record with `etype` 0 (undefined). Change
LibXML::Dtd::ElementDecl to no longer box and return these.
0.6.4 2021-07-14T16:12:56+12:00
- Add associative methods to LibXML::Dtd::ElementDecl, including keys(),
values(), pairs(), AT-KEY)() and Hash
0.6.3 2021-06-17T11:25:31+12:00
- Fixed t/02parser.t segfault on Rakudo 2020.05.1 introduced in 0.6.1 #59
- Fixed node over-visitation in reference checking #58
- Revised document Str and Buf method. :skip-dtd option to copy then
update the document rather than mutating it.
0.6.2 2021-06-16T13:57:49+12:00
- Remove entity reference content when a DtD is unlinked
- Make it illegal to add declaration nodes to the general DOM
- Add $elem.validate() and $elem.is-valid() methods
0.6.1 2021-06-14T13:16:33+12:00
- Improved Dtd Handling #30
-- Added raw class xmlNotation,
-- Added API class LibXML::Dtd::Notation
-- Added LibXML::Dtd methods:
--- notations() entities(), element-declarations(), attribute-declarations()
getNotation(), getEntity(), getElementDeclaration(),
getAttrDeclaration(), getNodeDeclaration()
-- Changed LibXML::Dtd repr from 'CStruct' to default, so that it may
contain additional attributes.
-- Rename classes:
--- LibXML::Dtd::Attr -> LibXML::Dtd::AttrDecl and
--- LibXML::Dtd::Element -> LibXML::Dtd::ElementDecl
--- LibXML::Entity -> LibXML::Dtd::Entity
-- Add LibXML::Dtd elements() method
- Removed some module loading work-arounds for Rakudo < 2019.03
- Fixed memory leaks in $doc.setDocumentElement and document parse failure #55
- Fixed segfault in unlinking DtD #56
- Fixed valgrind errors in t/07dtd.t. Specifically, $doc.replaceChild($dtd), which
should be a no-op.
- Fix GC on entities. Don't attempt to free predefined entities.
0.6.0 2021-05-29T09:37:12+12:00
- Fix attribute isId() method to return Bool, as documented.
- Integration with W3C::DOM interface roles:
-- Implementation: add createDocumentType(), hasFeature()
-- Attr: add specified() [NYI]
-- Node: add isSupported(), localName()
-- Moved attributes() and hasAttributes from Element to Node
-- NamedNodeMap: add length() method
-- CDATASection: add splitText() [NYI]
-- DocumentType: add entities(), notations() internalSubset [all NYI]
-- Entity: add publicId(), systemId() and notationName() methods
-- ProcessingInstruction: add data() method
-- Text: add splitText() method [NYI]
- Fixes to DtD handling #54:
-- $doc.setExternalSubset no longer removes internal subset
-- Reimplement $doc.setInternalSubset using xmlCreateInSubset().
$doc.raw.setInternalSubset keeps the old behaviour
0.5.15 2021-02-24T09:45:59+13:00
- Exported disused and bit rotted etc/libxml2-api.xml, etc/LibXML and
etc/generator.raku to https://github.com/libxml-raku/LibXML-Raw-Gen-raku
#51
- Fix for dependency on latest XML #52. Replace references to
, which (rightfully) no longer exists, with
. Detect namespaces after parsing.
0.5.14 2020-12-27
- Fix circa Rakudo 2019.11 04node.t regression #50
0.5.13 2020-12-23
- Fix return type of xmlSAXLocation getPublicId and getSystemId methods
- Fix LibXML::SAX::Builder entityDecl() method
- Add LibXML::SAX::Handler:SAX2 base methods for externalSubset(),
internalSubSet(), processingInstruction(), cdataBlock(),
elementDecl(), entityDecl(), notationDecl(), reference(),
comment(), unparsedEntityDecl(), and attributeDecl()
- Die if any of the remaining unimplemented callbacks are invoked:
getParameterEntity(), hasExternalSubset(), hasInternalSubset(),
ignorableWhitespace()
- More performance improvements
0.5.12 2020-12-19
- Various performance improvments #49
0.5.11 2020-11-18
- Fix breakage on Rakudo 2020.10+ blead #48
- Add native xml6_config:: module
0.5.10 2020-10-16
- Add LibXML::Dict see() and seen() methods.
- Fix compiler warnings in dom.c
- Fix childNode() regression #47 (unbreak Spreadsheet::XLSX)
0.5.9 2020-08-17
- Add $node.isBlank() method; mapped to raw xmlIsBlankNode() method.
- Fix LibXML::DocumentFragment parse() 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 match 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' to a more natural:
'$node'
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
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