Skip to content

Bump multi_xml from 0.8.1 to 0.9.1#94

Open
dependabot[bot] wants to merge 1 commit intomasterfrom
dependabot/bundler/multi_xml-0.9.1
Open

Bump multi_xml from 0.8.1 to 0.9.1#94
dependabot[bot] wants to merge 1 commit intomasterfrom
dependabot/bundler/multi_xml-0.9.1

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github May 5, 2026

Bumps multi_xml from 0.8.1 to 0.9.1.

Release notes

Sourced from multi_xml's releases.

v0.9.1

Full Changelog: sferik/multi_xml@v0.9.0...v0.9.1

Changelog

Sourced from multi_xml's changelog.

0.9.1

  • Fix MultiXml.method(:load) resolving to Kernel#load. The legacy MultiXml constant forwarded calls to MultiXML via method_missing, but Module#method doesn't consult method_missing, so MultiXml.method(:load) resolved to the inherited Kernel#load and crashed with LoadError when invoked. Replaces method_missing with explicit singleton-method forwarders for every public method on MultiXML, mirroring the analogous fix in MultiJSON.

0.9.0

  • Add MultiXML.with_parser for fiber-local scoped parser overrides, matching MultiJSON.with_adapter. The override lives in Fiber[:multi_xml_parser], so concurrent fibers and threads each see their own parser without racing on a shared module variable; nested calls save and restore the previous value.
  • Add MultiXML.parse_options / MultiXML.parse_options= for process-wide default options, matching MultiJSON.parse_options. Accepts a Hash or a callable (Proc/lambda); a callable receives the call-site hash as its sole positional argument so defaults can be computed per-call. Defaults merge between DEFAULT_OPTIONS and call-site overrides.
  • Introduce MultiXML::Parser base module — built-in parsers declare their backend exception class via a ParseError constant, matching the MultiJSON::Adapter convention. Custom parsers can either extend MultiXML::Parser and define ParseError or keep defining a .parse_error method directly; both styles are accepted.
  • Add MultiXML::ParserLoadError, raised when the parser spec is invalid, requiring the parser file raises LoadError, or the resolved parser doesn't satisfy the contract (must respond to .parse and define either a ParseError constant or a .parse_error method). Inherits from ArgumentError and carries the original exception's class name in its message, matching MultiJSON::AdapterError.
  • Rename MultiXml constant to MultiXML (all caps), matching the style of MultiJSON. The old MultiXml constant continues to work but emits a one-time deprecation warning on first use and will be removed in v1.0.
  • Add MultiXML.load as a deprecated alias for MultiXML.parse, matching the style of MultiJSON.loadMultiJSON.parse. Will be removed in v1.0.
  • Rename the :symbolize_keys option to :symbolize_names, matching Ruby stdlib's JSON.parse and MultiJSON. The old option continues to work but emits a one-time deprecation warning; it will be removed in v1.0.
  • Add :namespaces option to MultiXML.parse for consistent namespace handling across parsers — two modes produce byte-identical output on every backend:
    • :strip (default) — drop xmlns declarations and prefixes; keeps today's libxml/nokogiri output so most users see no change
    • :preserve — keep source prefixes (e.g. "atom:rel") and surface xmlns / xmlns:* declarations as attributes
  • Fix REXML keeping attribute prefixes ("gd:etag") while other backends stripped them (#31)
  • Fix Ox prepending namespace prefixes to element names ("aws:Item") when other backends didn't (#30)
  • Handle namespaced attribute name collisions consistently across backends. When attributes with different prefixes strip to the same local name (e.g. foo:id and bar:id both becoming id), values are collected in an array in document order, with attribute values ahead of any colliding child elements. The libxml SAX parser falls back to its DOM backend in this case since the SAX callback drops attribute prefixes.
  • Fix Ox mixed-content text aggregation in the SAX parser
  • Raise ArgumentError on an unknown :namespaces mode
  • undasherize_keys now runs only in :strip mode so prefixed keys aren't rewritten under :preserve
  • Reorder PARSER_PREFERENCE so oga is tried before rexml, matching the throughput ranking in the bundled benchmark suite. Affects auto-detection only when neither ox, libxml-ruby, nor nokogiri is available; explicitly selecting a parser is unchanged.
  • Use a TruffleRuby-specific PARSER_PREFERENCE ordering (rexml, libxml, oga, nokogiri) since TruffleRuby's JIT favors pure-Ruby parsers and penalizes FFI-bound ones. On other engines the default ordering is unchanged.
  • Add a parser benchmark suite (rake benchmark) and document per-engine throughput rankings in the README. CI verifies that PARSER_PREFERENCE matches the benchmark ranking on MRI, JRuby, and TruffleRuby.
  • Restore JRuby support (dropped in 0.8.0) and add TruffleRuby (native + JVM) to the CI matrix, matching the test coverage of MultiJSON. TruffleRuby is excluded from Windows runners since the setup-ruby action doesn't support it there.
  • Add Ruby 4.0 to the CI matrix
  • Support libxml-ruby 6.0.0 by switching from require "libxml" (removed in 6.0) to require "libxml-ruby", which is present in both 5.x and 6.x
  • Drop redundant ::Psych::SyntaxError declaration from the RBS signature to fix a "Different superclasses are specified" type-checking error under rbs v4
Commits
  • 52a0352 Bump version to 0.9.1
  • 1c34a5c Create a GitHub release on tag push
  • 533d505 Fix MultiXml.method(:load) resolving to Kernel#load
  • f785ca1 Bump version to 0.9.0
  • 9164cc4 Skip Ox tests on TruffleRuby
  • d4887e3 Replace benchmark scores in README with per-engine preference table
  • af45aad Tolerate noise in PARSER_PREFERENCE verifier
  • d6f805e Add TruffleRuby-specific PARSER_PREFERENCE
  • 4143002 Verify PARSER_PREFERENCE on JRuby in addition to MRI
  • d770884 Verify PARSER_PREFERENCE matches benchmark ranking in CI
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [multi_xml](https://github.com/sferik/multi_xml) from 0.8.1 to 0.9.1.
- [Release notes](https://github.com/sferik/multi_xml/releases)
- [Changelog](https://github.com/sferik/multi_xml/blob/main/CHANGELOG.md)
- [Commits](sferik/multi_xml@v0.8.1...v0.9.1)

---
updated-dependencies:
- dependency-name: multi_xml
  dependency-version: 0.9.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file ruby Pull requests that update ruby code labels May 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file ruby Pull requests that update ruby code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants