Skip to content

v3.0.0.rc1

Pre-release
Pre-release

Choose a tag to compare

@byroot byroot released this 11 Aug 08:14
· 1 commit to master since this release

With the removal of the insecure create_additions option, JSON.load and JSON.dump are
now safe to use. Them being unsafe by default caused multiple security vulnerabilites in the past.

If you did depend on create_additions, the recommended migration is to implement a custom serializer using
JSON::Coder
.

All the mutable default options, such as JSON.load_default_options have been removed.
They were preventing Ractor compatiblity, and causing bug in libraries using JSON expecting the default behavior.
JSON methods now always behave the same unless monkey patched.

All methods options are now either keyword arguments or checked like keyword arguments, meaning
unknown options such as typos raise ArgumentError.

Duplicated keys are now rejected by default.

JavaScript comments in documents are no longer supported by default.

Numerous rarely used aliases have been removed.

  • JSON.load defaults are now safe to use.
  • All unknown options are now cause an ArgumentError rather than to be ignored.
  • The allow_comments parsing option now default to false.
  • The allow_duplicate_key option now defaults to false, for both parsing and generating JSON.
  • Removed the limit positional argument of JSON.dump.
  • Removed the escape_slash alias of script_safe.
  • Removed Kernel#j and Kernel#jj.
  • Removed JSON.load_default_options.
  • Removed JSON.unsafe_load_default_options.
  • Removed JSON.dump_default_options.
  • Removed JSON::State#[] and JSON::State#[]=.
  • Removed JSON.unparse.
  • Removed JSON.fast_generate.
  • Removed JSON.fast_unparse.
  • Removed JSON.pretty_unparse.
  • Removed JSON.restore.
  • Removed JSON::PRETTY_STATE_PROTOTYPE.
  • Removed the insecure create_additions option.
  • Removed JSON::GenericObject.

Full Changelog: v2.21.2...v3.0.0.rc1