Skip to content

4.99.0

Choose a tag to compare

@jdereg jdereg released this 31 Mar 00:47
· 343 commits to master since this release

4.99.0 - 2026-03-28

  • PERFORMANCE: ToonWriter.needsQuoting() — replaced multi-method dispatch chain with a single-pass scanNeedsQuoting() method. Uses a pre-built boolean[128] lookup table per delimiter. JFR shows needsQuoting dropped from 383 samples to 25 — a 93.5% reduction.
  • PERFORMANCE: ToonReader.readLineRaw() — now uses FastReader.readLine() instead of readUntil() + separate read() + pushback. JFR shows TOON line-reading improved 28%.
  • PERFORMANCE: JsonWriter.writePrimitive() — added small-integer String cache (-128 to 16384) matching ToonWriter's range. JFR shows 898 allocation samples eliminated.
  • PERFORMANCE: ToonWriter — cycle-tracking structures allocated lazily based on cycleSupport mode. When cycleSupport=false (default), saves ~6 KB per writer. TOON write time improved 4-7%, reaching 2.02x Jackson.
  • PERFORMANCE: ToonReader.findColonInBuf() — single-pass scan with c <= ':' range guard. JFR shows 8-11% improvement in TOON read time.
  • PERFORMANCE: ToonReader string/number caching — replaced O(n) polynomial hash loops with O(1) cacheHash() sampling first, middle, and last chars + length. JFR shows 36% reduction. TOON read time improved 9-14%, reaching parity with json-io's JSON read.
  • PERFORMANCE: JsonWriter.writeObjectArray() now fast-paths Boolean, Double, Long, Integer, Float, Short, Byte, and String elements directly to writePrimitive()/writeStringValue(), bypassing the writeImpl() dispatch chain.
  • CLEANUP: Removed unused hasSameKeyOrder() method from ToonWriter.
  • CLEANUP: Removed two unreachable dead branches from writeFieldEntry() and writeFieldEntryInline().
  • CLEANUP: Fixed Javadoc tag error in getObjectFields().