This release introduces native gem support for Ruby 3.1. Please note that Windows users should use the x64-mingw-ucrt
platform gem for Ruby 3.1, and x64-mingw32
for Ruby 2.6–3.0 (see RubyInstaller 3.1.0 release notes).
This release ends support for:
This version of Nokogiri ships experimental native gem support for the aarch64-linux
platform, which should support AWS Graviton and other ARM Linux platforms. We don't yet have CI running for this platform, and so we're interested in hearing back from y'all whether this is working, and what problems you're seeing. Please send us feedback here: Feedback: Have you used the aarch64-linux
native gem?
This version of Nokogiri opts-in to the "MFA required to publish" setting on Rubygems.org. This and all future Nokogiri gem files must be published to Rubygems by an account with multi-factor authentication enabled. This should provide some additional protection against supply-chain attacks.
A related discussion about Trust exists at #2357 in which I invite you to participate if you have feelings or opinions on this topic.
LICENSE-DEPENDENCIES.md
for more information.) [#2206]~> 2.6.1
to ~> 2.7.0
. ("ruby" platform gem only.){XML,HTML4}::DocumentFragment
constructors all now take an optional parse options parameter or block (similar to Document constructors). [#1692] (Thanks, @JackMc!)Nokogiri::CSS.xpath_for
allows an XPathVisitor
to be injected, for finer-grained control over how CSS queries are translated into XPath.XML::Reader#encoding
will return the encoding detected by the parser when it's not passed to the constructor. [#980]Node#line
is no longer capped at 65535. libxml v2.9.0 and later support a new parse option, exposed as Nokogiri::XML::ParseOptions::PARSE_BIG_LINES
, which is turned on by default in ParseOptions::DEFAULT_{XML,XSLT,HTML,SCHEMA}
(Note that JRuby already supported large line numbers.) [#1764, #1493, #1617, #1505, #1003, #533]RuntimeError
is raised. libxml2 does no checking for this, which means cycles would otherwise result in infinite loops on subsequent operations. (Note that JRuby already did this.) [#1912]Node#line
behavior has been modified to return the line number of the node in the final DOM structure. This behavior is different from CRuby, which returns the node's position in the input string. Ideally the two implementations would be the same, but at least is now officially documented and tested. The real-world impact of this change is that the value returned in JRuby is greater by 1 to account for the XML prolog in the output. [#2380] (Thanks, @dabdine!)XML::Builder
blocks restore context properly when exceptions are raised. [#2372] (Thanks, @ric2b and @rinthedev!)Nokogiri::CSS::Parser
cache now uses the XPathVisitor
configuration as part of the cache key, preventing incorrect cache results from being returned when multiple XPathVisitor
options are being used.Node#parse
) now always uses the correct DocumentFragment
class. Previously Nokogiri::HTML4::DocumentFragment
was always used, even for XML documents. [#1158]DocumentFragment#>
now works properly, matching a CSS selector against only the fragment roots. [#1857]XML::DocumentFragment#errors
now correctly contains any parsing errors encountered. Previously this was always empty. (Note that HTML::DocumentFragment#errors
already did this.)Document#canonicalize
when inclusive namespaces are passed in. [#2345]Document#canonicalize
when an argument type error is raised. [#2345]EncodingHandler
where iconv handlers were not being cleaned up. [#2345]Reader#base_uri
where the string returned by libxml2 was not freed. [#2347]Namespace
from a NodeSet
no longer modifies the href
to be the default namespace URL.Nokogiri::XML::Node
as the second parameter to Node.new
is deprecated and will generate a warning. This parameter should be a kind of Nokogiri::XML::Document
. This will become an error in a future version of Nokogiri. [#975]Nokogiri::CSS::Parser
, Nokogiri::CSS::Tokenizer
, and Nokogiri::CSS::Node
are now internal-only APIs that are no longer documented, and should not be considered stable. With the introduction of XPathVisitor
injection into Nokogiri::CSS.xpath_for
there should be no reason to rely on these internal APIs.Nokogiri::CSS::XPathVisitorAlwaysUseBuiltins
and XPathVisitorOptimallyUseBuiltins
are deprecated. Prefer Nokogiri::CSS::XPathVisitor
with appropriate constructor arguments. These classes will be removed in a future version of Nokogiri.