nokogiri version 1.6.8 has been released!
* Tutorials: http://nokogiri.org
* Installation: http://nokogiri.org/tutorials/installing_nokogiri.html
* Mailing List: https://groups.google.com/group/nokogiri-talk
Nokogiri (鋸) is an HTML, XML, SAX, and Reader parser. Among Nokogiri's
many features is the ability to search documents via XPath or CSS3
selectors.
Changes:
*==== Security Notes*
[MRI] Bundled libxml2 is upgraded to 2.9.4, which fixes many security
issues. Many of these had previously been patched in the vendored libxml
2.9.2 in the 1.6.7.x branch, but some are newer.
See these libxml2 email posts for more:
* https://mail.gnome.org/archives/xml/2015-November/msg00012.html
* https://mail.gnome.org/archives/xml/2016-May/msg00023.html
For a more detailed analysis, you may care to read Canonical's take on
these security issues:
* http://www.ubuntu.com/usn/usn-2994-1
[MRI] Bundled libxslt is upgraded to 1.1.29, which fixes a security issue
as well as many long-known outstanding bugs, some features, some
portability improvements, and general cleanup.
See this libxslt email post for more:
* https://mail.gnome.org/archives/xslt/2016-May/msg00004.html
*==== Features*
Several changes were made to improve performance:
* [MRI] Simplify NodeSet#to_a with a minor speed-up. (#1397)
* XML::Node#ancestors optimization. (#1297) (Thanks, Bruno Sutic!)
* Use Symbol#to_proc where we weren't previously. (#1296) (Thanks, Bruno
Sutic!)
* XML::DTD#each uses implicit block calls. (Thanks, @glaucocustodio!)
* Fall back to the `pkg-config` gem if we're having trouble finding the
system libxml2. This should help many FreeBSD users. (#1417)
* Set document encoding appropriately even on blank document. (#1043)
(Thanks, @batter!)
*==== Bug Fixes*
* [JRuby] fix slow add_child (#692)
* [JRuby] fix load errors when deploying to JRuby/Torquebox (#1114)
(Thanks, @atambo and @jvshahid!)
* [JRuby] fix NPE when inspecting nodes returned by NodeSet#drop (#1042)
(Thanks, @mkristian!)
* [JRuby] fix nil attriubte node's namespace in reader (#1327) (Thanks,
@codekitchen!)
* [JRuby] fix Nokogiri munging unicode characters that require more than 2
bytes (#1113) (Thanks, @mkristian!)
* [JRuby] allow unlinking an unparented node (#1112, #1152) (Thanks, @esse!)
* [JRuby] allow Fragment parsing on a frozen string (#444, #1077)
* [JRuby] HTML `style` tags are no longer encoded (#1316) (Thanks,
@tbeauvais!)
* [MRI] fix assertion failure while accessing attribute node's namespace in
reader (#843) (Thanks, @2potatocakes!)
* [MRI] fix issue with GCing namespace nodes returned in an xpath query.
(#1155)
* [MRI] Ensure C strings are null-terminated. (#1381)
* [MRI] Ensure Rubygems is loaded before using mini_portile2 at
installation. (#1393, #1411) (Thanks, @JonRowe!)
* [MRI] Handling another edge case where the `libxml-ruby` gem's global
callbacks were smashing the heap. (#1426). (Thanks to @bbergstrom for
providing an isolated test case!)
* [MRI] Ensure encodings are passed to Sax::Parser xmldecl callback. (#844)
* [MRI] Ensure default ns prefix is applied correctly when reparenting
nodes to another document. (#391) (Thanks, @ylecuyer!)
* [MRI] Ensure Reader handles non-existent attributes as expected. (#1254)
(Thanks, @ccutrer!)
* [MRI] Cleanup around namespace handling when reparenting nodes. (#1332,
#1333, #1444) (Thanks, @cuttrer and @bradleybeddoes!)
* unescape special characters in CSS queries (#1303) (Thanks, @twalpole!)
* consistently handle empty documents (#1349)
* Update to mini_portile2 2.1.0 to address whitespace-handling during
patching. (#1402)
* Fix encoding of xml node namespaces.
* Work around issue installing Nokogiri on overlayfs (commonly used in
Docker containers). (#1370, #1405)
*==== Other Notes*
* Removed legacy code remaining from Ruby 1.8.x support.
* Removed legacy code remaining from REE support.
* Removing hacky workarounds for bugs in some older versions of libxml2.
* Handling C strings in a forward-compatible manner, see