Skip to content

0.9.0

Choose a tag to compare

@iliaal iliaal released this 30 Sep 03:21
· 54 commits to master since this release
0.9.0
e966d5a

Changed

  • Bundled yyjson is 0.13.0; lowercase \uXXXX now uses upstream YYJSON_WRITE_LOWERCASE_HEX, retiring patch P-001.
  • fastjson_validate() reads the input in place and tracks depth during the parse: peak memory is constant and it runs ~30% fewer instructions.
  • Decode shares repeated object-key strings (up to 64 bytes, inputs of 4 KiB+): key-heavy documents peak ~15% lower and decode 3-4% faster, while mostly unique or 256+ distinct names cost 3-5%.
  • fastjson_file_decode() frees the file contents before building the result, lowering its peak 9-33%.
  • Encode writes escaped strings of 8 KiB+ in 2 KiB chunks instead of a 6x reserve; a 1 MiB string with ordinary escaping peaks 59-83% lower.

Fixed

  • The "trailing comma is not allowed" error position now points at the comma itself, in decode, validate, pointer, and merge-patch calls.
  • fastjson_validate() no longer accepts a trailing comma after container elements, such as [[],] or [{"a":1},].
  • On 32-bit builds, the validate-only reader's stack growth no longer overflows its allocation size at depth 2^28 (vendor patch P-006).
  • Restore decoder and pointer error state after partial-output and throw-mode replacement failures.
  • fastjson_validate() reports "expected a string key" and "expected ':' after key" like fastjson_decode().