github apache/fory v1.7.8

one hour ago

Highlights

Token-level UTF-8 JSON I/O in Java

Frameworks with their own serializers can now read or write a single JSON value through ForyJson.readUtf8 and writeUtf8. For example, json.writeUtf8(w -> w.writeInt(7)) returns the UTF-8 JSON encoding of 7. Integration guide

Duplicate JSON property detection

Use ForyJson.builder().failOnDuplicateProperties(true).build() to reject a repeated known property when reading an object. Use @JsonDuplicateProperties to configure this per class. The default keeps the last occurrence. Object mapping

Rust smart pointers to strings and slices

Rust applications can serialize types such as Arc<str> and Box<[u8]> in native and cross-language modes. With reference tracking enabled, shared and weak pointers can resolve to the same allocation after decoding. Rust guide

The Apache source archive and its CycloneDX SBOM are available from the ASF distribution site.

What's Changed

  • fix(java): reject null keys in Fory JSON string-keyed maps by @JasonBuildAI in #4149
  • refactor(python): remove unused codegen module by @chaokunyang in #4150
  • fix(java): ignore JSON processor artifacts in native image by @RicardoRB in #4146
  • ci: Bump handlebars from 4.7.9 to 4.7.10 in /javascript by @dependabot[bot] in #4160
  • feat(go): Enforce registration freeze after first root serialize/deserialize operation by @Swatantra-66 in #4161
  • fix(csharp): publish consistent metadata cache snapshots by @emrul in #4152
  • chore: update release references to 1.7.7 by @chaokunyang in #4167
  • docs: fix grammar and spelling errors in CONTRIBUTING.md by @mohitjoshi-hey in #4173
  • feat(rust): support strings and slices in smart pointers by @chaokunyang in #4176
  • fix(compiler): reject conflicting Python field names by @ooiuuii in #4175
  • ci: Bump the github-actions group across 1 directory with 4 updates by @dependabot[bot] in #4181
  • fix(rust): replace unmaintained paste crate by @mohitjoshi-hey in #4183
  • chore: Bump MessagePack from 2.5.301 to 2.5.303 by @dependabot[bot] in #4184
  • ci: Bump the github-actions group with 2 updates by @dependabot[bot] in #4189
  • fix(cpp): resolve sign-compare warning in row writer by @dnmohanty in #4192
  • fix(ci): pin Python 3.8 and C++ jobs to Ubuntu 24.04 by @chaokunyang in #4193
  • ci: Bump the github-actions group with 3 updates by @dependabot[bot] in #4198
  • ci: Bump undici from 6.29.0 to 6.29.1 in /javascript by @dependabot[bot] in #4199
  • ci: Bump org.xerial.snappy:snappy-java from 1.1.10.4 to 1.1.10.9 in /java by @dependabot[bot] in #4200
  • ci: Bump com.google.guava:guava from 32.1.2-jre to 33.7.1-jre in /java by @dependabot[bot] in #4201
  • fix(java): round tiny float32 values up to the smallest float16 subnormal by @NUAAwqy in #4195
  • fix(java): round UInt64 values to the nearest float and double by @NUAAwqy in #4196
  • fix(cpp): resolve memory leak and out-of-bounds access in row dimensions by @dnmohanty in #4194
  • ci: Bump the github-actions group with 4 updates by @dependabot[bot] in #4203
  • fix(java): allocate non-static inner classes without a constructor in generated codecs by @CCCLL in #4204
  • chore(deps): upgrade Guava to 33.8.0 by @chaokunyang in #4207
  • chore(deps): update JavaScript glob dependencies by @chaokunyang in #4208
  • fix(java): run descriptor warm-up on Fory's compiler pool to fix thread context classloader by @stevenschlansker in #4112
  • fix(java): cast non-public field types inside generated field accessors by @CCCLL in #4205
  • feat(java): reject repeated JSON properties on read by @pavel-ptashyts in #4166
  • fix(java): preserve sub-millisecond nanos when copying java.sql.Timestamp by @CCCLL in #4206
  • feat(java): add token-level readUtf8/writeUtf8 operations to ForyJson by @dstepanov in #4180
  • fix(json): distinguish root and declared codec factory lookups by @mohitjoshi-hey in #4186
  • ci: automate release candidate staging by @chaokunyang in #3983
  • ci: fix release staging and source artifact checks by @chaokunyang in #4216
  • ci: replace JDK 26 with JDK 27 in CI by @stevenschlansker in #4217
  • fix(ci): correct release verification and source SBOM licensing by @chaokunyang in #4218

New Contributors

Full Changelog: v1.7.7...v1.7.8

Don't miss a new fory release

NewReleases is sending notifications on new releases.