-
Notifications
You must be signed in to change notification settings - Fork 72
/
HISTORY
908 lines (577 loc) · 33.8 KB
/
HISTORY
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
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
= Release History
== 5.0.2 / 2024-01-08
* Fix broken DTD creation (DTD name is not required)
== 5.0.1 / 2024-01-08
* Fix broken Document#io method that was broken by switching Parsers to use keyword arguments
== 5.0.0 / 2024-01-07
* This release is major version bump because it removes access to global parser options
that libxml2 version 2.12.0 deprecated (see https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.12.0)
In the unlikely event your code uses these options, then you will need to update it.
Specifically, instead of setting global parser options, pass them directly to either Parsers
or ParserContexts when creating them. Options are defined as constants in
LibXML::XML::Parser::Options and LibXML::HTML::Parser::Options
* Update Parser initialize methods to take keyword parameters instead of a hash table (you may have to update your code due to this change)
* Fix broken compilation with libxml2 version 2.12.0 (due to libxml2 header changes)
* Add support for Ruby 3.3.*
* Remove support for Ruby 2.7.* (gem should still work but is no longer tested)
== 4.1.2 / 2023-11-04
* Fix Ruby warnings about undefined allocators (yuuji.yaginuma, Christopher Sahnwaldt)
* Fix Schema::Element required? and array? (John Andrews)
* Remove SchemaElement#minOccurs and SchemaElement#maxOccurs since they actually did not work (Charlie Savage)
* Fix typo: XPatch -> XPath (Christopher Sahnwaldt)
* Introduce new alternative Homebrew installation search paths to extconf makefile (Pierce Brooks)
== 4.1.1 / 2023-05-01
* Fix compile warning (or error) for input_callbacks_register_input_callbacks (Charlie Savage)
* Remove call to deprecated function htmlDefaultSAXHandlerInit (Charlie Savage)
== 4.1.0 / 2023-04-30
* Fix compile warning (or error) for rxml_encoding_to_rb_encoding (Charlie Savage)
* Breaking - Remove LibXML::XML.features since its uses functionality deprecated in LibXML (Charlie Savage)
== 4.0.0 / 2022-12-28
* Breaking - Remove support for XPointer since libxml2 has deprecated it and will remove it (Charlie Savage)
* Breaking - Remove support for ancient setup.rb script (Charlie Savage)
== 3.2.4 / 2022-10-29
* Support libxml2 version 2.10.2 (Charlie Savage)
* Reduce number of globally included C header files (Charlie Savage)
== 3.2.3 / 2022-05-22
* Change some getter methods to instance variables with attr_accessors for easier debuggability (David Hansen)
* Add a number of tests related to schemas (David Hansen)
* Add schema.imported_elements so we can find imported elements (David Hansen)
* Fix segfault under windows when dereferencing a pre-existing error where the node has already been freed (David Hansen)
* Update to change name from imported_elements to imported_ns_elements and return a hash of hashes for namespaced elements (David Hansen)
* Only call xmlGetFeaturesList if LIBXML_LEGACY_ENABLED is defined. Most distros still ship libxml2 with legacy features enabled, but this will change (Nick Wellnhofer)
* Update GitHub Actions to use ruby/setup-ruby (Greg)
* Fix memory leak in rxml_node_path, node.path (vovanmozg)
== 3.2.2 / 2022-01-15
* Switch to Github actions for CI/CD (Greg)
* Test fixes (Greg, Sergio Durigan Junior)
* Fix typo on test/test_sax_parser.rb (Sergio Durigan Junior)
* Update homepage in gemspec (Pirate Praveen Arimbrathodiyil)
== 3.2.1 / 2020-11-05
* Fix incorrect handling of encodings when using XMLWriter.io (Charlie Savage)
* Clean up README (Richard Michael)
== 3.2.0 / 2020-05-09 Charlie Savage
* Fix crash when creating an empty DTD
* Modernize tests to use Bundler to load gem
* Add libxml-ruby.rb file so gem loads in expected way.
* Add support for xmlSaveNoEmptyTags.
* Clean up extconf.rb file
== 3.1.0 / 2018-02-03 Charlie Savage
* Fix segmentation fault when adding one node to another node (Charlie Savage)
* Fix deprecated "assert_equal(nil, expected)" calls. #148 and #151. (utilum)
* Remove assigned but unused variables. #150 (utilum)
* Add Gemfile. #146. (Dorian Marié)
* Remove duplicate hash key in setup.rb. #147. (Dorian Marié)
* Fix gemspec by requiring Date. #149 (utilum)
* Restore default internal encoding after tests are completed. #123 (Charlie Savage)
* Remove duplicate method definitions. #145. (Charlie Savage)
* Remove SchemaElement#minOccurs and SchemaElement#maxOccurs since they actually did not work (Charlie Savage)
* Rename test files to follow Ruby conventions (Charlie Savage)
* Fix handling of node returned by Reader#expand. #142. (Charlie Savage)
* Add Travis Build support (Charlie Savage)
* Fix Fixnum deprecation (Charlie Savage)
* Cleanup schema code (Charlie Savage)
* Update Visual Studio project to 2017 (Charlie Savage)
== 3.0.0 / 2017-02-07 Charlie Savage
* Revamp how libxml-ruby manages memory. Instead of trying to return the same ruby object for each xmlnode,
the bindings now create wrapper ruby objects as needed which are then freed at the end of use.
This allows most memory management to be handled by libxml itself. Ruby only manages the lifespan of
documents and parent xml nodes. When those go out of scope, the underlying libxml objects are also freed.
This implementation requires almost no overhead, plays nicely with Nokogiri and appears to work much
better (Charlie Savage).
* Change XML::Node#eql? API. Nodes are now considered equal only if they wrap the same underlying
libxml node. Previously, they would also be considered equal if they contained the same content
(Charlie Savage)
* Change XML::Reader.expand API. Previously it would automatically instantiate a reader document so
the an xpath expression could be used to search the returned node. Now you should first call
reader.doc (Charlie Savage)
* Update Visual Studio project for Visual Studio 15 - requires ruby 2.4+ (Charlie Savage)
* Remove APIs that have been deprecated for several years (Charlie Savage)
== 2.9.0 / 2016-06-13 Charlie Savage
* Revamp libxml-ruby's memory management to not cause crashes when used with Nokogiri (James Laird-Wah)
* Fix garbage collection issue that sometimes caused the library to hang (Charlie Savage)
* Improved multi-threading support (Charlie Savage)
* Fix crash sometimes caused by a xml node being being freed twice (Charlie Savage)
* Fix memory leak when setting the text content of a node (Charlie Savage)
* Set a default task in the Rakefile - use "test" (Robert Haines)
* Add "hanna_gudao" gem and add "rake-compiler" to develpoment dependencies (Robert Haines)
* Use Process.getrlimit instead of `ulimit` in the tests (Robert Haines)
* Build on smartos (Steven Williamson)
* Fix compiler warnings (Charlie Savage)
* Add Xcode project for easier debugging on OSX (Charlie Savage)
* Switch from unit test to minitest (Charlie Savage)
== 2.8.0 / 2015-01-09 Charlie Savage
* Use RbConfig instead of Config in extconf.rb (Robert Haines)
* Correct xpath documentation XML (Bill Mill)
* Correct from_string method documentation (Bill Mill)
* Fix compile error with debug not enabled in libxml (Patrick Ziegler)
* Update gemspec to include license (Charlie Savage)
* In XML::Writer prevent writing to io while being GCed (Brett Gibson)
== 2.7.0 / 2013-08-13 Charlie Savage
* Don't call rb_warning in GC mark function (Dirkjan Bussink)
* Set libxml error handler when a libxml-ruby error handler is set (Geoffrey Giesemann)
* Fix tests for nil TypeErrors for ruby 2.0=< (Geoffrey Giesemann)
* Fix segmentation fault for issue #62 (Charlie Savage)
* Add #node_type method to dtd (Charlie Savage)
* Fixing equality check of LibXML::XML::Error against other objects (Michał Szajbe)
* Fix #63, XML::Writer.set_quote_char UT, wrong expected string (julp)
* Fix potential segfault when GC occurs while creating ns from xpath (Timothy Elliott)
* Fix for #59, segmentation fault after failure to load external schema (Clifford Heath)
== 2.6.0 / 2013-02-16 Charlie Savage
* Fix uninitialized constant LibXML::XML::Error::I18N (NameError) that occurred
with older versions of libxml.
* Various updates/fixes to new XML::Writer class and update how flushing works (julp)
== 2.5.0 / 2013-01-27 Charlie Savage
* Compatibility with older versions for IO::write (rb_io_bufwrite is specific to ruby >= 1.9.3?)
and symbols are VALUE not ID (julp).
* Fix version for xmlTextWriterSetQuoteChar, it appeared in libxml2 2.9.0, last version (julp)
* Update use of LIBXML_VERSION (julp).
* Fix misuse of rb_scan_args (julp).
* Update documentation, including DTD docs and added XML Writer (julp).
* Added a new XML::Writer class (julp).
* Improved xml reader api and add namespace support. Note that passing a numeric value
to XML::Reader::move_to_attribute has been deprecated. Instead you should now
use #move_to_attribute_no. (julp).
* Improve error handling and messages (Jarl Friis)
== 2.4.0 / 2012-12-14 Charlie Savage
* Support libxml 2.9.0 (Daniel Veillard)
* Extensive new interfaces for xml schema functionality including suppor for
schemal elements, types, facets and attributes (Anton Sozontov)
* Fix Encoding#from_s bug and update docs (Nikita Afanasenko)
* Node#content= encoding (Nikita Afanasenko)
== 2.3.3 / 2012-07-01 Charlie Savage
* Add LibXML::XML::Error.get_handler (Carsten Zimmermann)
* Fix variable name in example (Marcus)
== 2.3.2 / 2012-03-20 Charlie Savage
* Define various canonicalize constants to support libxml2 versions
older than 1.1.25 (thanks Apple!)
== 2.3.1 / 2012-03-20 Charlie Savage
* Yanked - didn't fix the OSX canonicalize issue
== 2.3.0 / 2012-03-18 Charlie Savage
* Add ability to insert new PI-nodes into the xmltree (Axel Struebing).
* Added full pass-through access to libxml2 xmlC14NDocDumpMemory method via
LibXML::XML::Document#canonicalize method with optional arguments.
* Added full test data for C14N based off of W3C spec.
(http://www.w3.org/TR/xml-c14n#Examples)
* Update sax handler to support encodings on Ruby 1.9 and higher.
== 2.2.2 / 2011-08-29 Charlie Savage
* ++API CHANGE+++
Reader#relax_ng_validate now takes a RelaxNG object. This is
what the documentation has always said it takes, but it previously
took a string. In addition, it now returns true or false instead of 0 or -1.
Reader#schema_validate now takes a Schema object. This is
what the documentation has always said it takes, but it previously
took a string. In addition, it now returns true or false instead of 0 or -1.
Fixes GitHub issue #30.
* Added Parser::Context#close and HTMLParser::Context#close methods that
allow the underlying io stream (file, string, etc) to be closed. Once a
parser is done parsing its data, it now calls one of these methods.
This means that if you parse thousands of files at the same time,
without running Ruby's garbage colllector, you won't get a too
many files open error. Fixes GitHub issue #29.
* Fixed bug where Node#inner_xml caused an error when it had no child nodes.
Fixes GitHub issues #31
* Don't require 'rake' in the gemspec to avoid annoying Bundler bugs
== 2.2.1 / 2011-08-13 Charlie Savage
* Packaging fix - include the custom .def file in the gem.
== 2.2.0 / 2011-08-09 Charlie Savage
* Update encoding support for Ruby 1.9 so that libxml-ruby returns
strings encoded in UTF-8. This change was required since libxml internally
stores strings in UTF-8. The exceptions to this rule are the #to_s methods
which return UTF-8 by default but can return other encodings if requested.
== 2.1.2 / 2011-08-03 Charlie Savage
* Fix segmentation fault that could occur when an XPathContext was marked
before it was fully initialized (Charlie Savage).
* Add mark method to document to mark all nodes currently being accessed
by ruby. This make Ruby Enterprise Edition happy (Charlie Savage).
== 2.1.1 / 2011-07-31 Charlie Savage
* Switch to using def files to control library exports (Charlie Savage).
== 2.1.0 / 2011-07-31 Charlie Savage
* Ruby 1.9.3 compatability (Charlie Savage).
* Added XPath expression <-> Ruby value conversion methods (Jens Wille).
* Extracted rxml_xpath_to_value from rxml_xpath_context_find (Jens Wille).
* Adapted rxml_xpath_from_value from Gregoire Lejeune's ruby-xslt
library, see https://github.com/glejeune/ruby-xslt (Jens Wille).
* Allow calling #find on nodes returned from Reader (Charlie Savage).
* Change document handling in XPath::Context to address segmentation fault on
Ruby Enterprise Edition (Charlie Savage).
* Update gemspec file to work directly with bundler thereby allowing git
repository to be used as gem (Charlie Savage).
* Support gem buld (Charlie Savage).
* Simplify memory management of attributes namespaces to fix
segmentation faults that occurred when using Ruby 1.9.3 (Charlie Savage).
== 2.0.8 / 2011-06-23 Charlie Savage
* Add in 2 new HTML Parser constants - NODEFDTD and NOIMPLIED.
* Fix compile issue on Ruby 1.9.3
== 2.0.6 / 2011-05-23 Charlie Savage
* Fix segfault that sometimes occurred when looking up encodings on 1.9.
In some cases the Ruby encoding infrastructure was not properly
initialized (nkriege).
== 2.0.5 / 2011-05-05 Charlie Savage
* Document#validate_dtd would sometimes cause segmentation faults due to
an improperly initialized data structure (Charlie Savage)
== 2.0.4 / 2011-05-02 Charlie Savage
* Fix compile issues on platforms using older versions of libxml2.
The problem as using a C14N constants that was added to libxml2
in July 2009 (Charlie Savage).
== 2.0.3 / 2011-05-01 Charlie Savage
* The biggest change in this release is supporting the use of libxml-ruby in
native background Ruby threads. Previously, the use of libxml-ruby in
background threads in Ruby 1.9.x and higher would often cause
segmentation faults. This has now been fixed (Charlie Savage).
* Update Reader#expand so that returned node correctly remembers its
encoding in Ruby 1.9.x (zerebubuth).
* Add check to verify a node has not been deleted. This can happen when
a ruby variable holds a reference to a child node that gets freed
when its parent gets freed. Previously when this happened a
segmentation fault would occur, now an exception is raised (Charlie Savage, fixes
RubyForge #26839.
* Do not unlink nodes before internal validations have run - avoids
segmentation faults caused by freeing a node twice (Charlie Savage).
* Add support for Document#canonicalization (Victor Lin).
* Fix memory leak in Reader#lookup_namespace (Charlie Savage).
* Fix memory leak in Reader#[] (Nathan Kriege).
* Fix usage of @io instance variable (Jeffrey Taylor)
* Removed old sax error handling code that has been fixed in newer
versions of libxml (Charlie Savage).
* Code cleanup - remove unused variables and commented out code (Charlie Savage)
* Minor text changes and documentation fixes (Charlie Savage).
* Fix documentation error (fixes RubyForge #26888).
* Update documentation for Document#validation* methods (fixes RubyForge #24833).
* Update documentation and test (fixes Ruby Forge Issue #28770).
* Updated documentation in README (Anurag Priyam):
1. rake doc does not work; use rake rdoc.
2. gem mislav-hanna does not exist; use hanna.
3. rake rdoc 'depends' on hanna; no need of RDOCOPTS
4. Point to the github issue tracker instead of Ruby Forge
5. Point to the github (gh-pages) site for docs
* Add tc_error to test suite (Charlie Savage).
* Add sax test (Stanislav O.Pogrebnyak).
== 2.0.2 / 2011-04-17 Charlie Savage
* Added binaries for windows (Charlie Savage).
* Update Ruby 1.9 encoding handling to support libxml versions older than
version 2.6.26 which was released on June 6, 2006 (Charlie Savage).
* Add publish_with_docs rake task - combines publishing the
website and docs (Anurag Priyam).
* Correctly copy the documentation directory (Anurag Priyam)
* Use relative link for rdoc so the links are correct on
both rubyforge and github (Anurag Priyam).
* Update Rakefile to use Hanna RDco template (Charlie Savage).
* Update dates on license file (Charlie Savage).
* Add api to allow setting of attribute namespaces. Fixes issue #10 (Charlie Savage).
* Remove old hack to call the on_error method. This hack isn't needed anymore
since a better workaround was put in place in the parser context. Fixes
This fixes issue #12 (Charlie Savage).
* Remove references to passing blocks to validation functions. The blocks are no
longer called since the bindings use libxml's structured error handling. See
issue #6 (Charlie Savage).
* Fix up comment in Document and Node. See issue #8 (Charlie Savage).
* Update website text (Charlie Savage).
== 2.0.0 / 2011-04-16 Charlie Savage
* Ruby 1.9.2 support. The biggest addition is encoding support.
Strings returned by the libxml bindings are now set to the encoding
of the underlying xml document (Charlie Savage).
* Rubinius compatability. Removed unnecessary use of RHASH_TBL (Aman Gupta)
* Added .gemspec file (Dudley Flanders).
* Updated Windows checks to take into account mingw32 (Yaohan Chen).
* Fix memory leak in Reader#Expand (Szymon Nowak).
* Fix memory leaks in Reader#read_string, Reader#read_inner_xml
and Reader#read_outer_xml (Sean Geoghegan).
* Node#space_preserve= was backwards (Dudley Flanders)
* Fixed typo in readme, added rdoc extension (Loren Sands-Ramshaw).
* Switched to Rake Compiler (Charlie Savage).
* Use xmlMalloc() memory for ctxt->sax structure. Sometimes the ctxt->sax pointer
may not be zeroed in rxml_sax_parser_parse(), for example when exception is raised
in one of callbacks. This lets xmlFreeParserCtxt() clean this up (Alexey I. Froloff).
* Added a rake task to publish the website to github. Moved the jekyll website to
web directory (Anurag Priyam).
* Modernize project metadata and layout (7rans)
== 1.1.3 / 2009-03-18 Charlie Savage
* Improve performance 10 to 20% by turning on libxml2's dictionary
feature that allows parsers to reuse previously parsed strings.
* Fix XML::Node#remove! to work correctly with libxml's dictionary feature.
* Correctly set up parser context options.
* Simplify DOM modification code (Node#next=, Node#prev=, Node#sibling=) and
update documentation.
* Deprecated Node#add_child and Node#child=, use Node#<< instead
* Fix documentation for Node#<<
* Added Document#import to enable moving nodes from one document
to another document.
== 1.1.2 / 2009-03-12 Charlie Savage
* Added XML::Node#inner_xml helper method.
* Fix segmentation that could occur when calling the mark function on a
previously freed node.
== 1.1.1 / 2009-03-10 Charlie Savage
* Fix - Only include extra html parser context methods for versions of libxml
older than 2.6.27.
== 1.1.0 / 2009-03-09 Charlie Savage
* Fix bug caused by the mark function being called on partially initialized
attributes.
* Revert back to libxml2's internal memory manager.
== 1.0.0 / 2009-03-05 Charlie Savage
* OS X (Charlie Savage). Update bindings to support the default installed
version of libxml2 (2.6.16) on OS X 10.5 and the latest version available
via MacPorts.
== 0.9.9 / 2009-03-05 Charlie Savage
* Ruby 1.9.1 support (Charlie Savage). libxml-ruby now compiles and runs on either
1.8.6 and 1.9.1. With 1.8.6 all tests should pass while on 1.9.1 all but
for encoding tests pass. The port to Ruby 1.9.1 revealed two memory
allocation bugs (one with dtds, one with nodes) which are now fixed.
* Better OS X support (Joe Khoobyar). The default version of libxml2
on OS X 10.5 is fairly old, resulting in this link error:
NSLinkModule() error
dyld: Symbol not found: _htmlNewParserCtxt
This can be fixed by using MacPorts to get a newer version of libxml2.
To make use of MacPorts, the build script has been updated to use xml2-config.
This can be fine-tuned using the new --with-xml2-config / --without-xml2-config
options to extconf.rb (default is --without-xml2-config to match existing behavior).
* Greatly reduced memory usage (Joe Khoobyar).
See http://rubyforge.org/pipermail/libxml-devel/2009-February/001375.html.
* Add Document#xhtml? and document#node_type methods (Joe Khoobyar)
* Add XPath::Object#last (Joe Khoobyar)
* Provide finer control over CDATA nodes on a parser by parser basis (Joe Khoobyar).
* Bug fix - Namespaces were incorrectly merged with attributes in the new sax2
handler (Charlie Savage).
* Bug fix - Support iterating over nodes and attributes even with blocks
that call remove! (Charlie Savage)
* Bug fix - If reader.node is NULL, return nil instead of crashing (Charlie Savage)
* Bug fix - Dtd's owned by documents were freed twice in some circumstances (Joe Khoobyar).
* Bug fix - Fix output escaping on attributes nodes (Joe Khoobyar).
* Bug fix - Make sure IO objects are not garbage collected when used
as parser sources (Charlie Savage).
== 0.9.8 / 2009-1-24 Charlie Savage
* Refactored XML::Parser, XML::HTMLParser, XML::SaxParser and
XML::Reader to have consistent APIs. All the parsers
now take a context object in their constructors, allowing fine
grained control over the parsers for advanced use cases. These
API changes are backwards compatible except
for XML::Reader, which now takes an optional hash table as a
second parameter in its various constructors versus an optional
boolean value.
* Updated all APIs to use the encoding constants defined
in XML::Encoding versus string values. This API change
is not backwards compatible.
* Added support for attribute declarations in DTD's via the new
XML::AttrDecl class (Len Lattanzi)
* Support libxml's content escaping capabilities for text nodes by
wrapping libxml's "xmlStringText" and "xmlStringTextNoenc"
(Joe Khoobyar).
* Updated XML::Reader#read API to return true if a node was read,
false if node was not read and raises an exception on an error.
Previously #read returned 1 if a node was read, 0 if a node was
not read and -1 for an error. This change is not backwards
compatible, but provides a more natural interface for Ruby by
allowing code like this:
while reader.read
# do stuff
end
* Changed XML::Error exception objects to return copies of nodes that
cause parse errors instead of the original node. This prevents
segmentation faults when the error is reraised.
* Added XML::Reader#node method.
* Fixed compile errors on OS X which uses an older version of libxml.
* Fixed memory leak when performing XPath searches.
* Fixed rdocs.
* Don't override libxml's default settings for entity substitution and
loading external DTDs. This may break some code - you may need to
add in a call to XML.default_substitute_entities = true or
XML.default_load_external_dtd = true.
== 0.9.7 / 2008-12-08 Charlie Savage
* Added SAX2 support. SAX handlers now define two new callbacks,
on_start_element_ns and on_end_element_ns methods. These
new callbacks support namespaces, making them superior to the older
callbacks on_start_element and on_end_element methods. The old callbacks
are still supported, but may be deprecated in the future depending
on community feedback.
* Added SAX support for libxml's structured error handling.
That menas sax handlers now define a new callback, on_error,
which takes one parameter, an instance of XML::Error. The older
on_parser_error, on_parser_warning and on_parser_fatal_error
callbacks are no longer suported so you must port your code.
Note that the older callbacks took one string parameter, instead of
an XML::Error object.
* Experimental work-around for libxml error handling bug - see
http://mail.gnome.org/archives/xml/2008-December/msg00014.html
for more information.
* Fix compilation bugs on Solaris.
* Fix Rdoc compilation bug.
== 0.9.6 / 2008-12-08 Charlie Savage
* Refactored namespace handling. The existing, and inconsistent,
namespace methods defined on XML::Node have been deprecated.
They have been replaced by a the new XML::Namespaces class.
Use this class to inspect a node's namespace, its default
namespace, its namespace definitions and which namespaces
are in scope. It can be accessed via the the
XML::Node#namespaces method.
* Rationalized XML::Document#save, XML::Document#to_s and
XML::Node#to_s to take an optional hash table of parameters
that control how output is generated. Supported parameters
include setting indentation on or off, the indentation level
and the output encoding. This is an API change and may break
existing calls to XML::Document#save. However, the previous
API was broken - setting the encoding resulted in an error so
its unlikely anyone is using it.
* Rationalized XML::Document#debug, XML::Node#debug, XML::XPath::XPathObject#Debug.
* Deprecated a number of duplicate dump* and debug_* methods in
XML::Document and XML::Node.
* Additional Ruby 1.9.1 compatability fixes.
* Cleaned up header file guards.
== 0.9.5 / 2008-11-29 Charlie Savage
* Ruby 1.9.1 preview release compatability (Felipe Contreras)
* Update Node#remove! to return the removed node and to set
its document to nil. This allows the node to be either
moved to another document, another part of the same document
or to be freed on the next garbage collection once its
references have gone out of scope.
* Fix bug where XPathExpression#compile mistakenly overwrote
RegExp#compile.
* Update Node to use standard ruby allocators and initializers.
* Update HTML parser to be more forgiving of invalid documents.
* Update include paths for Darwin Ports on OS X.
* Updated C code base to use BSD/Allman style
== 0.9.4 / 2008-11-24 Charlie Savage
* Update HTML parser so that it can read files, strings and io
streams.
* Update HTML parser to support user specified encodings.
* Additional C code cleanup.
== 0.9.3 / 2008-11-22 Charlie Savage
* Fixed segmentation fault caused by documents being freed
before xpath results that referenced the document (take 2).
* Allowed sax parser to use io stream
* Combined encoding and input classes
* Cleaned up C code - removed remaining legacy structures,
added static to most methods, changed C namespace from ruby_xml
to rxml
== 0.9.2 / 2008-11-19 Charlie Savage
* Add support for compiled XPath expressions (donated by Pavel Valodzka)
* Fixes for compiling on OS X 10.5.4 and 10.5.5
== 0.9.1 / 2008-11-18 Charlie Savage
* Expose LibXML's encoding support via a new Encoding object.
* Revamp error handling to be much easier to use. Errors are now
wrapped by the new XML::Error class and are thrown as exceptions
when it is appropriate.
* Fixed segmentation fault caused by documents being freed
before xpath results that referenced the document.
* Add Node#register_default_namespace to simplify default namespace handling.
* Significantly improve documentation
* A number of bug fixes and patches.
== 0.9.0 / 2008-11-18 Charlie Savage
* Version 0.9.0 was removed due to packaging errors.
== 0.8.3 / 2008-07-21 Charlie Savage
* Missed several files in last release
== 0.8.2 / 2008-07-21 Charlie Savage
* To use LibXML you can either require 'xml' or require 'libxml'.
The differences is that require 'xml' mixes the LibXML module into
the global namespace, thereby allowing you to write code such
as document = XML::Document.new. Note that this is different
from 0.8.0 and 0.8.1 and may require updating your code.
* Support RelaxNG validation (thanks to Morus Walter)
* Support passing IO objects to XmlReaders (thanks to Tom Hughes)
* Fix segmentation fault caused by adding an attribute to a CDATA node
* Moved node checking functions from C to Ruby
* Improved Windows support - libxml-ruby should now work out of the box.
* Improved Windows support - turned on libxml's zlib and iconv support.
== 0.8.1 / 2008-07-09 Charlie Savage
* Reimplmented Node#each_attr for backwards compatability
* Moved node type test to Ruby.
== 0.8.0 / 2008-07-09 Charlie Savage
* Fixed bug in returning attributes from XPath results
* Fixed DOM traversal methods
* Changed Node#children to return an array of nodes
* Fixed bug in returning attributes from XPath results
* Refactored XPath support, providing more user hooks in the XPath::Context class
* Added Node#properties for backwards compatibility
* Updated setup.rb
* Added more tests
* Updated rdocs and README file
* Moved libxml into LibXML namespace
== 0.7.0 / 2008-07-09 Charlie Savage
* Added new attributes class to provide a more natural way of working with attributes
* Fixed XML::Attr to better support namespaces
* Added documentation on how to use namespaces with XPath
* Removed allocation of extraneous structures used to wrap nodes, namespaces and attributes
* Cleaned up tests and added new test suite
* Updated rdocs and README file
* Cleaned out most of the bug list
== 0.6.0 / 2008-07-01 Charlie Savage
* Fixed memory allocation errors in Windows. On Windows, it is essential that the same library that allocates memory must free it. Thus ALLOC calls must be matched to ruby_xfree calls, which they were not. In addition, in one case Ruby was allocating memory to be freed by libxml. On Windows, that's a segmentation fault. On Linux it might fly, but still seems like a bad idea.
* Fixed segmentation fault in xml reader expand (same xml tree freed twice)
* Applied a number of patches from Tom Bagby, including fixes for xpath segmentation faults and fixes for various memory leaks
* Cleaned up a number of compiler warnings
* Renamed libxml_so.so to libxml_ruby.so (same for xslt). That wasn't actually my original intention, but um, it kind of sort of happened. It should not be noticeable from an end-user perspective.
* Added rake files for building with MingW
* Added rake files for packing gems. Note that I did this outside the existing rake tasks because I didn't see how they were actually building the gems.
* Cleaned up the tests and added a few more based on bug reports from the Tracker and mailing list.
* Cleaned out the patch queue and went through about 1/2 the bug list
=== 2007-11-16 "Dan Janowski" <danj at 3skel.com>
* Merged Dan's MEM2 branch to trunk.
== 0.5.3 /
=== 2007-11-16 "Dan Janowski" <danj at 3skel.com>
* Merged Dan's MEM2 branch to trunk.
== 0.5.2 / 2007-10-10
=== 2007-10-10 "Dan Janowski" <danj at 3skel.com>
* (Dan, fill in the major points of the changes you made up to here -thanks)
=== 2007-01-14 "Laurent Sansonetti" <lrz at chopine.be>
* Added some preliminary RDoc comments for XML::Reader.
=== 2006-12-05 "Laurent Sansonetti" <lrz at chopine.be>
* Added XML::Reader, a set of bindings to the xmlTextReader API.
== 0.3.8.4 / 2006-12-02
=== 2006-04-15 "Ross Bamform" <rosco at roscopeco.co.uk>
* Implemented SAX parser callback handling.
=== 2006-04-12 "Ross Bamford" <rosco at roscopeco.co.uk>
* Integrated and tested community patches.
* Defined XML::Node (hash) equality in terms of XML representation.
=== 2006-04-12 "Tim Yamin" <plasmaroo at gentoo.org>
* Fixed XML::Node#content inoperable bug (plasmaroo) [patch]
* Fixed memory leak in same
=== 2006-04-12 "Mark Van Holstyn" <mvette13 at gmail.com>
* Added XML::Node::Set#first (mvette13) [patch]
* Added XML::Node::Set#empty?
* Fixed XML::Node::Set#to_a
* Added XML::Node#find_first
* Added XML::Node#remove!
=== 2006-03-27 "Ross Bamford" <rosco at roscopeco.co.uk>
* Integrated contributed XML::Parser.register_error_handler patch (rosco)
=== 2006-02-27 "Ross Bamford" <rosco at roscopeco.co.uk>
* Fixed all multiple symbol definitions for -fno-common.
* Removed OSX -fno-common workaround.
== 0.3.6 / 2006-02-23
=== 2006-02-21 "Ross Bamford" <rosco at roscopeco.co.uk>
* Patched extconf.rb with OSX -fno-common workaround
* Added gem and packaging support to Rakefile
* Moved version update to Rakefile
* Removed legacy project utility scripts
=== 2005-02-19 "Ross Bamford" <rosco at roscopeco.co.uk>
* Fixed doublefree bug in ruby_xml_attr.
* Fixed small leak in parser
=== 2005-12-18 "Ross Bamford" <rosco at roscopeco.co.uk>
* Updated for GCC 4.0 (community patches)
* Fixed default validation bug
* Refactored project, removed outdated files, cleaned up tests.
* Added RDoc documentation across .c files.
* Fixed up a few strings.
=== 2004-04-04 "Mangler Jurgen" <[email protected]>
* ruby_xml_node.cz: fixed ruby_xml_node_property_set. The ill-behaviour
was, that there was added a second attribute of the same
name, when you were setting the value of an already existing
attribute.
=== 2004-03-17 "Lukas Svoboda" <[email protected]>
* ruby_xml_node.c: ruby_xml_node_to_s now returns XML subtree dump.
=== 2004-02-27 "Martin Povolny" <[email protected]>
* ruby_xml_node.c: added XML::Node.copy, this makes possible building
of xml documents from nodes taken from other xml documents
without making ruby SIGSEGV (see tests/copy_bug.rb).
=== 2004-02-26 "Martin Povolny" <[email protected]>
* ruby_xml_dtd.c, ruby_xml_dtd.h, ruby_xml_schema.c, ruby_xml_schema.h:
more work on validation, now you can actually validate
document using dtd or xml schema, also solved warning and
error propagation (see tests/{dtd|schema}-test.rb).
=== 2003-12-30 "Martin Povolny" <[email protected]>
* ruby_xml_dtd.c, ruby_xml_dtd.h, ruby_xml_schema.c, ruby_xml_schema.h:
prelimitary support for dtd and schema validation
=== 2003-09-15 "Martin Povolny" <[email protected]>
* ruby_xml_input_cbg.c, libxml.c: added class InputCallbacks to make
possible registering custom input callbacks
handlers (xmlRegisterInputCallbacks) written in ruby
=== 2003-08-01 "Martin Povolny" <[email protected]>
* ruby_xml_document.c: corrected argument handling in ruby_xml_document_find
* ruby_xml_node.c: corrected argument handling in ruby_xml_node_find