Update ruby-libxml to 3.2.0.
== 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 expted way.
* Add support for xmlSaveNoEmptyTags.
* Clean up extconf.rb file
pkglint --only "https instead of http" -r -F
With manual adjustments afterwards since pkglint 19.4.4 fixed a few
indentations in unrelated lines.
This mainly affects projects hosted at SourceForce, as well as
freedesktop.org, CTAN and GNU.
== 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)
Problems found locating distfiles:
Package cabocha: missing distfile cabocha-0.68.tar.bz2
Package convertlit: missing distfile clit18src.zip
Package php-enchant: missing distfile php-enchant/enchant-1.1.0.tgz
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
= Release History
== 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-03 Charlie Savage
* Do not call Ruby code during a GC cycle (Dirkjan Bussink)
* Fix thread error handling (Geoffrey Giesemann)
* Set libxml error handler when a libxml-ruby error handler is set (Geoffrey Giesemann)
* Fix tests for nil TypeErrors (Geoffrey Giesemann)
* Fix segmentation fault for issue #62. The deregisternode function was incorrectly
NULLing out a node's mark and free functions for nodes removed from a document tree (Charlie Savage)
* Cleanup writer code (Charlie Savage)
* Fix equality check of LibXML::XML::Error against other objects (Michał Szajbe)
* Fix XML::Writer.set_quote_char UT, wrong expected string (#63). (julp)
* Fix potential segfault when GC occurs while creating ns from xpath (Timothy Elliott)
* Fix segmentation fault after failing to load external schema (#59). (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)
= Release History
== 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)
= Release History
== 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)
= Release History
== 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
= Release History
== 2.3.0 / 2012-02-22 Ryan Johnson
* 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.
= Release History
== 2.2.2 / 2011-08-13 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 Bunlder bugs
== 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 documenation.
* 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 eith
er
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-confi
g
options to extconf.rb (default is --without-xml2-config to match existing beh
avior).
* 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 Khoob
yar).
* 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 Sava
ge)
* 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#Deb
ug.
* 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.
Changes:
== 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 all ocates 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 segment ation 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 fo r 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, b ut 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 did n'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.
+ Install as a Ruby gem.
* Added XML::Reader, a set of bindings to the xmlTextReader API.
* Other changes were made, but they were done on a branch with no
changelog available.