./textproc/ruby-multi_json, General-purpose swappable JSON backend library

[ Image CVSweb ] [ Image Homepage ] [ Image RSS ] [ Image Required by ]


Branch: CURRENT, Version: 1.21.1, Package name: ruby33-multi_json-1.21.1, Maintainer: pkgsrc-users

MultiJSON

Lots of Ruby libraries utilize JSON parsing in some form, and everyone has
their favorite JSON library. In order to best support multiple JSON parsers
and libraries, multi_json is a general-purpose swappable JSON backend library.


Required to run:
[lang/ruby26-base]

Required to build:
[pkgtools/cwrappers]

Master sites:

Filesize: 26 KB

Version history: (Expand)


CVS history: (Expand)


   2026-05-05 15:25:47 by Takahiro Kambe | Files touched by this commit (3) | Package updated
Log message:
textproc/ruby-multi_json: update to 1.21.1

1.21.0 (2026-05-02)

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.21.1 (2026-05-04)

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.
   2026-04-12 17:12:59 by Takahiro Kambe | Files touched by this commit (3) | Package updated
Log message:
textproc/ruby-multi_json: update to 1.20.1

1.20.0 (2026-04-10)

Changrs from 1.19.1 are too many to write here, please refer:
<https://github.com/sferik/multi_json/blob/main/CHANGELOG.md>.

1.20.1 (2026-04-12)

* 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.

* 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.
   2026-01-18 15:30:25 by Takahiro Kambe | Files touched by this commit (3) | Package updated
Log message:
textproc/ruby-multi_json: update to 1.19.1

1.18.0 (2025-12-01)

* Fix conflict between JSON gem and ActiveSupport

1.19.0 (2025-12-26)

* Fix serialization of ActiveSupport-enhanced objects

1.19.1 (2025-12-26)

* Restore deprecated encode/decode methods
   2025-08-02 07:11:32 by Takahiro Kambe | Files touched by this commit (3) | Package updated
Log message:
textproc/ruby-multi_json: update to 1.17.0

1.16.0 (2025-07-10)

* Remove NSJSONSerialization
* Stop referencing JSON::PRETTY_STATE_PROTOTYPE
* Drop support for Ruby versions < 3.2
* Move repo from @intridea to @sferik
* JsonCommon: force encoding to UTF-8, not binary
* Stop setting defaults in JsonCommon
* Make json_pure an alias of json_gem

1.17.0 (2025-07-19)

* Revert minimum ruby version requirement
   2021-10-26 13:23:42 by Nia Alarie | Files touched by this commit (1161)
Log message:
textproc: Replace RMD160 checksums with BLAKE2s checksums

All checksums have been double-checked against existing RMD160 and
SHA512 hashes

Unfetchable distfiles (fetched conditionally?):
./textproc/convertlit/distinfo clit18src.zip
   2021-10-07 17:02:49 by Nia Alarie | Files touched by this commit (1162)
Log message:
textproc: Remove SHA1 hashes for distfiles
   2020-09-14 18:06:03 by Takahiro Kambe | Files touched by this commit (2) | Package updated
Log message:
textproc/ruby-multi_json: update to 1.15.0

Update ruby-multi_json pacakge to 1.15.0.

1.15.0 (2020-07-10)

* Improve detection of json_gem adapter
   2020-03-24 17:57:02 by Takahiro Kambe | Files touched by this commit (2) | Package updated
Log message:
textproc/ruby-multi_json: update to 1.14.1

Update ruby-multi_json to 1.14.1.
pkgsrc change: add "USE_LANGUAGES=	# none".

1.14.1
------

* [Fix a warning in Ruby \ 
2.7](https://github.com/intridea/multi_json/commit/26a94ab8c78a394cc237e2ea292c1de4f6ed30d7)

1.14.0
------

* [Support Oj 3.x \ 
gem](https://github.com/intridea/multi_json/commit/5d8febdbebc428882811b90d514f3628617a61d5)