Revision history for Perl extension JSON::SIMD

1.08 Sun Nov  1 10:03:31 PM CET 2026
	Security release
	
	A number of potentially vulnerable bugs were found by an AI-assisted review,
	then, independently, several CVEs were issued against Cpanel::JSON::XS,
	several of which where found to be applicable to this module.
	Most of the fixes are relevant to the legacy or incremental decoder,
	none of them affect encoding/decoding JSON with the default configuration.
	
	Breaking changes:
	- croak when boolean_values is called with one argument
	- require an explicit allow_nonref(1) to accept top-level scalars in the incremental parser
	
	[incr_parse] -Fix: quadratic rescanning during incremental parsing (similar to CVE-2026-110688)
	[allow_tags] -Fix: free arguments when THAW dies (CVE-2026-110685)
	[incr_parse] -Fix: require explicit allow_nonref for bare scalars (CVE-2026-110682)
	[legacy decoder] -Fix: filter_object: retain filter callbacks while active (CVE-2026-110686)
	[incr_parse] -Fix: enforce max_size on buffered text (CVE-2026-110678)
	[legacy decoder] -Fix: decode_tag: charge tagged values against max_depth (CVE-2026-110673)
	[legacy decoder] -Fix: decode_str() could allocate an accumulated string, then return from its failure path without decrementing it
	[legacy decoder] -Fix: decode_hv: free slow-path keys on errors (CVE-2026-110672)
	-Fix: don't leak scalars in boolean_values, core_bools; croak when boolean_values is called with one argument
	[legacy decoder] -Add: complete rewrite of the emulated decode_at_pointer functionality for the legacy decoder (hallucinated by AI), add tests
	-Change: disable simdjson mode with filter_json_object and filter_json_object_key
	-Fix: actually use simdjson's bigint parsing, fix the 1.e2 bad floating point number case in our own validate_large_number, add some test cases for bad numbers
	-Change: import simdjson 5.0.5, work around the changes in its api

1.07 Sun Sep  7 07:13:49 PM CEST 2025
	- Fix CVE-2025-40930 - buffer overread in the FP number parser of the legacy decoder
	- Import simdjson 3.13.0, with it, better big integer support

1.06 Thu Apr 27 17:55:29 CEST 2023
	- fix core_bools with false argument (now restores default)
	- make is_bool aware of core booleans on perl >= 5.36
	- more benchmark scripts

1.05 Sat Apr 22 21:55:43 CEST 2023
	- fix build issue with "invalid register for .seh_savexmm" (prev fix caused other problems, was reverted)
	- add ppport.h
	- add core_bools and encode_core_bools methods to support builtin::true and false on perl >= 5.36
		core_bools also works towards compatibility with JSON::PP, and with both of these options
		it is possible to have correct, full round-trip encode/decode between Perl and JSON booleans.

1.04 Thu Apr 20 19:48:29 CEST 2023
	- fix floating point precision issues with -Duselongdouble and -Dusequadmath
	- fix intermittent garbage in floating point numbers from encode with -Dusequadmath (fix taken from Cpanel::JSON::XS ad072b4)
	- fix build issue with "invalid register for .seh_savexmm"
	- drop common::sense as a direct dependency (it's still used via Types::Serialiser, though)
	- fix repository and issue tracker for CPAN (thanks to Gabor Szabo)

1.03 Apr 18 20:11:05 CEST 2023
	- fix hardcoded g++ in Makefile
	- document requirements and incompatibilites

1.02 Mon Apr 17 20:00:08  CEST 2023
	- update repository and issue tracker?
	- split old changes into separate file

1.01 Mon Apr 17 19:32:46 CEST 2023
	- update repository and issue tracker

1.00 Mon Apr 17 18:49:49 CEST 2023
	- first version of JSON::SIMD, forked from JSON::XS
	- add simdjson decoder, make it the default
	- add decode_at_pointer method
	- add simdjson_version function
