-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathChanges
671 lines (614 loc) · 32.3 KB
/
Changes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
{{$NEXT}}
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 <include-path> 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
<!ATTLIST...> is seen without a corresponding <!ELEMENT...> 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
<XML::Grammar::pident>, which (rightfully) no longer exists, with
<XML::Grammar::name>. 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<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