close
Skip to content

v1.0.0

Choose a tag to compare

@chaokunyang chaokunyang released this 21 May 06:19
· 215 commits to main since this release

The Apache Fory team is pleased to announce the 1.0.0 release. This milestone release includes 84 PRs from 11 distinct contributors and turns the cross-language runtime into the default path across supported languages. See the Install page to get the libraries for your platform.

Highlights

Apache Fory 1.0.0 standardizes the cross-language serialization model. The unified xlang type system is now the default mode across languages, with compatible-mode reads, simplified field ordering, and better list/array compatibility. The release also adds decimal and bfloat16 support for xlang serialization.

The language runtimes continue to converge around the same schema and metadata model. Nested container and field codec support landed across Rust, C++, C#, Go, Dart, Python, and Swift. Kotlin gains xlang, KSP, and schema IDL support, while Scala adds schema IDL support and updated generated annotations.

This release also expands deployment coverage and performance work. Java gains Android serialization support, annotation processor support and nested type-use serialization metadata. Dart typed-container fast paths and generated struct optimizations improve throughput, alongside refreshed benchmark plots.

Key Features:

Features

Bug Fixes

  • fix(dart): resolve fory pub.dev score issues by @chaokunyang in #3585
  • fix(dart): fix dart ci by @chaokunyang in #3586
  • fix(dart): use getUint32 for correctly encoding u64 value by @ayush00git in #3592
  • fix(c++): fix c++ duration serialization by @chaokunyang in #3598
  • fix(javascript): align TypeMeta preamble constants with python/java/rust/go xlang bindings by @emrul in #3603
  • fix(javascript): fix javascript schema idl tests by @chaokunyang in #3604
  • fix(dart): added >>> for correct logical right shift semantics in uint by @ayush00git in #3607
  • fix(go): ensure physical buffer space for unsafe varint fast-paths by @ayush00git in #3613
  • fix(go): add bound checking for refResolver and metaStringResolver reads by @ayush00git in #3615
  • fix(go): added pre-allocation bounds checks for slices and strings by @ayush00git in #3618
  • fix(go): added maxBinarySize limit to decimal deserialization by @ayush00git in #3623
  • fix(go): add configurable fieldCount and fieldDepth guardrails by @ayush00git in #3620
  • fix(java): honor record field encoding in generated decode by @mandrean in #3626
  • fix(java): preserve externalizable containers in compatible mode by @mandrean in #3628
  • fix(python): enforce more checks in read by @chaokunyang in #3632
  • fix(xlang): fix xlang type system by @chaokunyang in #3646
  • fix(java): use REPLACE_STUB_ID for unregistered writeReplace classes to prevent cross-JVM ClassNotFoundException by @wakilurislam in #3638
  • fix(java): fix set view ref tracking by @chaokunyang in #3649
  • fix(java): recover map declared serializers for compatible reads by @mandrean in #3654
  • fix: include TypeMeta header bits in hash by @chaokunyang in #3659
  • fix(java): serialize suppressed exceptions by @chaokunyang in #3663
  • fix(javascript): preserve getTypeInfo in regenerated read serializer by @xhzq233 in #3669
  • fix(java): validate subclass serializer layer counts by @chaokunyang in #3676
  • fix(java): avoid instantiating abstract meta-share types by @chaokunyang in #3677
  • fix: fix release script by @chaokunyang in #3687

Other Improvements

New Contributors

Full Changelog: v0.17.0...v1.0.0