Skip to content
Choose a tag to compare

1.12.0 / 2021-08-02

@flavorjones flavorjones released this
· 421 commits to main since this release
Choose a tag to compare

1.12.0 / 2021-08-02

Notable Addition: HTML5 Support (CRuby only)

HTML5 support has been added (to CRuby only) by merging Nokogumbo into Nokogiri. The Nokogumbo public API has been preserved, so this functionality is available under the Nokogiri::HTML5 namespace. [#2204]

Please note that HTML5 support is not available for JRuby in this version. However, we feel it is important to think about JRuby and we hope to work on this in the future. If you're interested in helping with HTML5 support on JRuby, please reach out to the maintainers by commenting on issue #2227.

Many thanks to Sam Ruby, Steve Checkoway, and Craig Barnes for creating and maintaining Nokogumbo and supporting the Gumbo HTML5 parser. They're now Nokogiri core contributors with all the powers and privileges pertaining thereto. 🙌

Notable Change: Nokogiri::HTML4 module and namespace

Nokogiri::HTML has been renamed to Nokogiri::HTML4, and Nokogiri::HTML is aliased to preserve backwards-compatibility. Nokogiri::HTML and Nokogiri::HTML4 parse methods still use libxml2's (or NekoHTML's) HTML4 parser in the v1.12 release series.

Take special note that if you rely on the class name of an object in your code, objects will now report a class of Nokogiri::HTML4::Foo where they previously reported Nokogiri::HTML::Foo. Instead of relying on the string returned by Object#class, prefer Class#=== or Object#is_a? or Object#instance_of?.

Future releases of Nokogiri may deprecate HTML methods or otherwise change this behavior, so please start using HTML4 in place of HTML.


  • [CRuby] Nokogiri::VERSION_INFO["libxslt"]["datetime_enabled"] is a new boolean value which describes whether libxslt (or, more properly, libexslt) has compiled-in datetime support. This generally going to be true, but some distros ship without this support (e.g., some mingw UCRT-based packages, see msys2/MINGW-packages#8957). See #2272 for more details.


  • Introduce a new constant, Nokogiri::XML::ParseOptions::DEFAULT_XSLT, which adds the libxslt-preferred options of NOENT | DTDLOAD | DTDATTR | NOCDATA to ParseOptions::DEFAULT_XML.
  • Nokogiri.XSLT parses stylesheets using ParseOptions::DEFAULT_XSLT, which should make some edge-case XSL transformations match libxslt's default behavior. [#1940]


  • [CRuby] Namespaced attributes are handled properly when their parent node is reparented into another document. Previously, the namespace may have gotten dropped. [#2228]
  • [CRuby] Reparented nodes no longer inherit their parent's namespace. Previously, a node without a namespace was forced to adopt its parent's namespace. [#1712]


  • [CRuby] Speed up (slightly) the compile time of packaged libraries libiconv, libxml2, and libxslt by using autoconf's --disable-dependency-tracking option. ("ruby" platform gem only.)


  • Deprecating Nokogumbo's Nokogiri::HTML5.get. This method will be removed in a future version of Nokogiri.


  • [CRuby] Upgrade mini_portile2 dependency from ~> 2.5.0 to ~> 2.6.1. ("ruby" platform gem only.)


b0b5650ba7903c317e0ebd4ca67ed10617735719cf3595ad98dd21974404e5d2  nokogiri-1.12.0.gem
60360d9994bb2e8852deb39f8833ba81a819df921c4192d857323c181645d95e  nokogiri-1.12.0-java.gem
c439f29de83294e61eca919edfea9d6176f23fa51b23d8a3d7261de6268e5847  nokogiri-1.12.0-x64-mingw32.gem
89d43ad2ea4f492ebc4c380288077186f0242ccfd65afe14fa0b45529d1f4b5e  nokogiri-1.12.0-x86-mingw32.gem
20fc8eba21f6e6b82720c05d694d2879ebdf6756351d5d2fb236e93febd346d0  nokogiri-1.12.0-x86-linux.gem
a21c803d17f89cceda599af1adc139ae17454539276e3f9dbdafea34081b1983  nokogiri-1.12.0-x86_64-linux.gem
f6b01a013829a499a0bf72a7d5109d117b9d4333823295dcd34eb002be0f0054  nokogiri-1.12.0-arm64-darwin.gem
97b4260b3912dcfad8427b5ea15ba094790dec1f4725ee074cfc5e9b45906352  nokogiri-1.12.0-x86_64-darwin.gem