An open index of dependabot pull requests across open source projects.

Bump multi_json from 1.19.1 to 1.21.1

Open
Number: #40
Type: Pull Request
State: Open
Author: dependabot[bot] dependabot[bot]
Association: Unknown
Comments: 2
Created: May 05, 2026 at 02:57 AM UTC
(about 2 months ago)
Updated: May 05, 2026 at 02:58 AM UTC
(about 2 months ago)
Labels:
dependencies ruby
Description:

Bumps multi_json from 1.19.1 to 1.21.1.

Release notes

Sourced from multi_json's releases.

v1.21.1

Full Changelog: https://github.com/sferik/multi_json/compare/v1.21.0...v1.21.1

v1.21.0

Full Changelog: https://github.com/sferik/multi_json/compare/v1.20.1...v1.21.0

Changelog

Sourced from multi_json's changelog.

[1.21.1]

Fixed

  • Fix MultiJson.method(:load) resolving to Kernel#load instead of the legacy-constant forwarder (#66). The 1.21.0 shim forwarded calls via method_missing, but Module#method doesn't consult method_missing, so libraries that capture decoders as Method objects (Sawyer, used by Octokit and Danger) crashed with LoadError when the captured method tried to interpret the JSON string as a file path. Define an explicit singleton method on MultiJson for every public method MultiJSON exposes so Module#method finds the forwarder directly.

[1.21.0]

Every deprecation introduced here will be removed in 2.0.0. Upgrade to 1.21.0, run your app or test suite with ruby -W:deprecated to surface the warnings, migrate each call site to the new canonical names, then pin ~> 2.0 once 2.0.0 ships.

Added

  • Rename the MultiJson constant to MultiJSON (all-caps) to match the project name, Ruby stdlib JSON, and the all-caps treatment of the JSON acronym across other languages. The legacy MultiJson constant continues to work as a thin delegator via method_missing and const_missing, so MultiJson.parse(...), MultiJson::Adapters::Oj, and rescue MultiJson::ParseError all resolve to their MultiJSON counterparts.
  • Add MultiJSON.parse and MultiJSON.generate as the new canonical names for the primary parse and generate methods, matching Ruby stdlib JSON.parse / JSON.generate, the JSON spec (RFC 8259), and sister library MultiXml.
  • Add MultiJSON.parse_options / MultiJSON.parse_options= and MultiJSON.generate_options / MultiJSON.generate_options= as the new canonical option setters.
  • Accept symbolize_names: as the canonical option name matching Ruby stdlib's JSON.parse(str, symbolize_names: true). The deprecated symbolize_keys: option continues to work and emits a one-time warning when passed at any of the three option layers (call-site, MultiJSON.parse_options=, adapter defaults :load).
  • Replace the two-adapter Benchmark.ips smoke test in benchmark.rb with a full adapter comparison matrix (parse + dump across nine workloads) and promote it to a top-level rake benchmark task. A new --verify-preference flag asserts that MultiJSON::AdapterSelector::ADAPTERS matches the observed throughput ranking, with a 10% tolerance for adjacent ties; CI runs it on every push so the ordering can't silently drift.

Changed

  • Reorder MultiJSON::AdapterSelector::ADAPTERS so the JSON gem is tried before fast_jsonparser/oj/yajl on MRI and TruffleRuby, matching the throughput ranking in the bundled benchmark suite on Ruby 3.4+. The hash is split per platform so JRuby still prefers jr_jackson. Affects auto-detection only when more than one of those adapters is loaded; explicitly selecting an adapter with MultiJSON.use(:adapter) is unchanged.

Deprecated

  • The MultiJson constant in favor of MultiJSON.
  • MultiJSON.load in favor of MultiJSON.parse.
  • MultiJSON.dump in favor of MultiJSON.generate.
  • MultiJSON.load_options / MultiJSON.load_options= in favor of MultiJSON.parse_options / MultiJSON.parse_options=.
  • MultiJSON.dump_options / MultiJSON.dump_options= in favor of MultiJSON.generate_options / MultiJSON.generate_options=.
  • The :symbolize_keys parse option in favor of :symbolize_names.

All deprecated names continue to work and emit a one-time warning on first use. Warnings are tagged with Ruby's :deprecated category, so noisy apps can silence the whole set with Warning[:deprecated] = false and deprecation-aware tooling (ruby -W:deprecated, CI linters) picks them up. The old names will be removed in 2.0.

[1.20.1]

Fixed

  • Fix JsonGem#load raising ParseError on ASCII-8BIT strings that contain valid UTF-8 bytes (#64). Ruby HTTP clients tag response bodies as ASCII-8BIT by default; the 1.20.0 change from force_encoding to encode broke the dominant real-world case by trying to transcode each byte individually. Switch back to force_encoding followed by a valid_encoding? guard so genuinely invalid byte sequences still surface as ParseError.

Added

  • Validate custom adapters during MultiJson.use and MultiJson.load/dump with an :adapter option, raising MultiJson::AdapterError immediately if the adapter does not respond to .load, .dump, or define a ParseError constant.
  • Validate OptionsCache.max_cache_size= to reject nil, zero, negative, and non-integer values with a clear ArgumentError.
  • Expand the benchmark suite (benchmark.rb) into a full adapter comparison matrix covering load, dump, and round-trip across small, medium, and large payloads in both object-heavy and array-heavy shapes.

[1.20.0]

Added

  • Surface parse error locations as error.line and error.column on MultiJson::ParseError, extracted from the underlying adapter's message for adapters that include one (Oj, the json gem).

... (truncated)

Commits
  • 9ae5a42 Version 1.21.1
  • f3604c5 Fix MultiJson.method(:load) resolving to Kernel#load
  • 8339719 Version 1.21.0
  • 2217775 Tag deprecation warnings as :deprecated and document the bridge in the README
  • 6f6b756 Reorder ADAPTERS by benchmark throughput and verify the order in CI
  • 72d3ea1 Add adapter benchmark suite as a rake task
  • 112d0af Mirror stdlib JSON in the public API: MultiJSON, parse/generate, symbolize_names
  • ddc802a Rewrite CHANGELOG in Keep a Changelog format
  • d4c6fe1 Whitelist gemspec files instead of globbing all .md files
  • c50c595 Fix flaky symbol-count tests that fail when GC reclaims symbols
  • 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)
Package Dependencies
Package:
multi_json
Ecosystem:
rubygems
Version Change:
1.19.1 → 1.21.1
Update Type:
Minor
Technical Details
ID: 15659222
UUID: 4381178778
Node ID: PR_kwDOR-g9jc7YPrAS
Host: GitHub
Repository: ruby-benchmark/errbit