Skip to main content

Fory v1.6.1 Released

· 3 min read
Shawn Yang
Apache Fory PMC Chair

The Apache Fory team is pleased to announce the 1.6.1 release. This focused patch release improves Swift and Go serialization performance, fixes Java compatible-metadata state regressions, and simplifies C++ metadata tracking. See the Getting Started page to get the libraries for your platform.

Highlights

  • Improved Swift serialization and deserialization performance across buffer access, strings, primitive arrays, collection elements, and compatible metadata reads.
  • Optimized Go root-value handling, primitive struct fields, error checks, and local type metadata reuse.
  • Fixed Java compatible-mode regressions caused by remote read metadata leaking into later local writes and copies.
  • Simplified C++ TypeMeta index tracking while preserving the single-type fast path.

Faster Swift and Go Serialization

Fory 1.6.1 removes several sources of overhead from Swift's hot serialization paths. Synchronous buffer state no longer pays for dynamic exclusivity checks; packed primitive arrays use specialized readers and uninitialized destination storage; ASCII strings are detected eight bytes at a time while preserving UTF-8 validation; and non-null arrays take a direct element-reading path. Exact-schema compatible reads also reuse the TypeMeta header hash directly.

In the checked-in Swift benchmark report, Fory leads Protocol Buffers in every listed serialization and deserialization case, from 1.65× to 5.57× on the measured workloads.

Swift serialization benchmark throughput

The Go runtime now avoids reference-tracking work for root values when reference tracking is disabled, specializes common primitive varint struct fields, reduces repeated error-state checks, and reuses local TypeDef metadata after it has been built. The refreshed Go benchmark report shows Fory running 1.32×–3.64× as many operations per second as Protocol Buffers and 3.19×–12.00× as many as MessagePack across the listed cases.

Go serialization benchmark throughput

See the complete Swift and Go benchmark reports for the environment, per-case throughput, and serialized sizes.

Java Compatible-Metadata Fixes

Java compatible mode can retain remote schema metadata while reading data written by an older or different class definition. In affected 1.6.0 paths, that remote read state could be reused by a later local write or copy operation, especially for arrays and collection-like values. Fory 1.6.1 separates remote-read metadata holders from local-write holders and preserves each remote field's codec category when generated code skips or reads compatible fields.

The fix covers generated and interpreted serializers, arrays, collections, container fields, and ConcurrentHashMap.KeySetView. It also avoids resolving non-root declaring-class names as dynamic object types when decoding native type definitions.

Features

Bug Fix

Other Improvements

New Contributors

Full Changelog: https://github.com/apache/fory/compare/v1.6.0...v1.6.1