Releases: apache/fory
v0.16.0
Highlights
- feat(c#): c# serialization implementation by @chaokunyang in #3383
- feat(c#): add csharp target and idl integration tests by @chaokunyang in #3406
- feat(swift): implement fory serialization for swift language by @chaokunyang in #3359
- feat(swift): fory swift schema idl codegen by @chaokunyang in #3433
- feat(JavaScript): Support EXT,NAMED_EXT by @theweipeng in #3312
- feat(JavaScript): align xlang protocol by @theweipeng in #3316
- refactor(python): unify read/write api for python xlang and native mode by @chaokunyang in #3348
- feat(c++/python): support stream deserialization for c++ and python by @chaokunyang in #3307
- feat(python): fast cython struct serializer by @chaokunyang in #3443
- refactor(java): unify serializer write/read APIs and remove xwrite/xread by @chaokunyang in #3400
Features
- feat(grpc): update lexer/parser to support service and rpc definitions for idl compilers by @ayush00git in #3308
- feat(JavaScript): Support EXT,NAMED_EXT by @theweipeng in #3312
- feat(go): add missing type resolver for uint{16,32,64}slice by @BrianLii in #3311
- feat(JavaScript): support ForyField by @theweipeng in #3314
- feat(JavaScript): align xlang protocol by @theweipeng in #3316
- feat(javascript): add float16 support by @ayush00git in #3253
- feat(JavaScript): Align testcases by @theweipeng in #3319
- feat(go): update float16 array/slice logic in createSerializer by @BrianLii in #3318
- feat(JavaScript): Align testcase by @theweipeng in #3320
- feat(JavaScript): Align testcases by @theweipeng in #3321
- feat(dart): align dart xlang serialization by @chaokunyang in #3322
- feat(go): improve test coverage for int slice primitive serializers by @BrianLii in #3313
- refactor(dart): revamp runtime API and unify codegen naming by @chaokunyang in #3323
- feat(JavaScript): Align xlang protocol by @theweipeng in #3326
- feat(JavaScript): fix test_polymorphic_map by @theweipeng in #3327
- feat(dart): align dart with xlang serialization spec by @chaokunyang in #3325
- feat(go): add support for bfloat16 by @BrianLii in #3310
- feat(javascript): add bfloat16 and bfloat16_array support by @miantalha45 in #3328
- feat(JavaScript): fix testcase by @theweipeng in #3334
- refactor(dart): register xlang types by Type by @chaokunyang in #3332
- feat(javascript): align buffer read/write API with Java naming by @miantalha45 in #3346
- refactor(python): unify read/write api for python xlang and native mode by @chaokunyang in #3348
- feat(dart): add float16 to dart by @ayush00git in #3336
- feat(swift): implement fory serialization for swift language by @chaokunyang in #3359
- feat(compiler): add gRPC flags to fory compiler by @ayush00git in #3361
- feat(swift): implement schema evolution compatible mode for fory swift by @chaokunyang in #3363
- feat(swift): dynamic any serializer for polymorphism by @chaokunyang in #3368
- feat(swift): support enum/time serialization for swift by @chaokunyang in #3371
- feat(c++): add msgpack cpp benchmark by @chaokunyang in #3365
- feat(swift): add direct Fory initializer and update Swift docs by @chaokunyang in #3373
- feat: Add IEEE 754 float16 (binary16) support to Rust runtime by @AshharAhmadKhan in #3252
- feat(c#): c# serialization implementation by @chaokunyang in #3383
- perf(csharp): add csharp benchmarks and optimize hot serialization paths by @chaokunyang in #3396
- refactor(benchmarks): rename benchmark directories and update links by @chaokunyang in #3398
- refactor(java): unify serializer write/read APIs and remove xwrite/xread by @chaokunyang in #3400
- perf(swift): add fory swift serialization benchmark and optimize perf by @chaokunyang in #3395
- refactor(c#): refactor serializer interface to minimize API surface by @chaokunyang in #3403
- feat(compiler): add csharp target and idl integration tests by @chaokunyang in #3406
- feat(swift): harden decode paths and add missing wire type support by @chaokunyang in #3427
- feat(c#): add max depth and code lint support by @chaokunyang in #3428
- feat(c++/python): support stream deserialization for c++ and python by @chaokunyang in #3307
- feat(swift): fory swift schema idl codegen by @chaokunyang in #3433
- feat(dart): add configurable deserialization size guardrails by @yash-agarwa-l in #3434
- refactor(dart): merge all runtime exceptions into single fory_exception.dart by @yash-agarwa-l in #3436
- perf(python): optimize pyfory collection serialization performance by @chaokunyang in #3441
- feat(python): fast cython struct serializer by @chaokunyang in #3443
- perf(python): add python benchmark suite by @chaokunyang in #3448
- feat(python/cpp): add streaming serialization support to python and c++ by @chaokunyang in #3449
- feat(python/c++): shrink stream buffers after struct deserialization by @chaokunyang in #3453
- perf(c#): add csharp benchmark results by @chaokunyang in #3451
- refactor: clean java serialize api by @chaokunyang in #3454
- feat(rust): forbid late type registration after resolver snapshot ini… by @Geethapranay1 in #3435
- perf(ci): add Cargo caching to Rust CI jobs by @moon3482 in #3431
- feat(python): add configurable size guardrails by @eyad-hazem-elmorsy in #3429
- feat(go): add go desrialization support via io streams by @ayush00git in #3374
- perf(go): remove //go:inline directives and mark cold paths as //go:noinline by @ayush00git in #3456
- feat(c++): add configurable deserialization size guardrails by @shivendra-dev54 in #3455
- perf(swift): optimize swift performance by @chaokunyang in #3457
- feat(swift): make fory swift usable as deps by @chaokunyang in #3462
- perf: add fory performance optimization skill by @chaokunyang in #3463
- feat(xlang): support per-type evolution override by @chaokunyang in #3465
- feat(javascript): limit the depth of deserialize & serialize by @miantalha45 in #3382
Bug Fix
- fix(java): Fix EnumSetSerializer for enums with overriding methods by @NotLebedev in #3315
- fix(java): Deserialize nested HashMap subclasses by @mandrean in #3342
- fix(java): support TreeSet/TreeMap subclasses without Comparator constructor in SortedSet/SortedMapSerializer by @mandrean in #3344
- fix(c++): fix buffer read/write bound check by @chaokunyang in #3418
- fix: avoid NoClassDefFoundError in supportCodegenForJavaSerialization by @siy in #3424
- fix(docs): updated the compiler guide by @ayush00git in #3420
- fix(python): return UTC-aware datetime instead of naive datetime by @yuta4895 in #3439
- fix(docs): adjusted sidebar position and fixed typos by @ayush00git in #3450
- fix(python): support tuple dataclass fields and object instances by @chaokunyang in #3468
- fix(python): fix python wheel build by @chaokunyang in #3469
- fix(java): avoid deflater meta decompression hang on invalid input by @chaokunyang in #3472
Other Improvements
- docs: update guide and compiler docs by @chaokunyang in #3298
- docs: fix broken docs links and add fory-site check ci by @chaokunyang in https://github....
v0.15.0
Highlights
- feat(go): new golang xlang serialization implementation by @chaokunyang in #3063
- feat(rust): add tuple struct support and improve generic type handling by @ariesdevil in #3087
- refactor(rust): unify tuple struct and named struct protocol, and make schema evolution happy by @ariesdevil in #3092
feat(java/python/rust/go/c++): align nullable meta for xlang struct fields serialization by @chaokunyang in #3093 - feat(java/python/rust/go/c++): xlang fields reference and typeinfo alignment by @chaokunyang in #3107
- feat(c++): add SharedWeak for circular reference support by @chaokunyang in #3109
- feat(xlang): support unsigned int for xlang by @chaokunyang in #3111 and #3113
- feat(xlang/java): refactor java native serialization type system and streaming type info for xlang by @chaokunyang in #3153
- feat(xlang): fory schema idl and compiler by @chaokunyang in #3106
- feat(compiler): add flatbuffers idl support by @chaokunyang in #3184
- feat(compiler): support shared/circular reference serialization for fory/protobuf/flatbuffer idl by @chaokunyang in #3226
Go Serialization: First Release
Apache Fory 0.15.0 is the first release with official Go serialization support.
The Go implementation delivers high-performance serialization with cross-language
compatibility and production-focused configuration options.
Key capabilities:
- Cross-language mode with Java, Python,
cpp, Rust, and JavaScript (fory.WithXlang(true)) - Reflection-based serialization by default, plus optional experimental AOT code generation for hot paths
- Reference tracking for shared/circular object graphs (
fory.WithTrackRef(true)+fory:"ref"tags) - Compatible mode for schema evolution (
fory.WithCompatible(true)) supporting add/remove/reorder field changes - Thread-safe wrapper (
github.com/apache/fory/go/fory/threadsafe) for concurrent workloads
Quick Start
package main
import (
"github.com/apache/fory/go/fory"
)
type User struct {
ID int64
Name string
}
func main() {
f := fory.New(
fory.WithXlang(true),
fory.WithCompatible(true),
)
_ = f.RegisterStruct(User{}, 1)
data, _ := f.Serialize(&User{ID: 1, Name: "Alice"})
var out User
_ = f.Deserialize(data, &out)
}- Go guide: https://fory.apache.org/docs/guide/go/
Go Benchmarks
Below are timing results (ns/op; lower is better) comparing Fory with Protobuf and Msgpack across representative data structures.
| Data Type | Operation | Fory | Protobuf | Msgpack |
|---|---|---|---|---|
| Struct | Serialize | 66.0 | 97.8 | 184.9 |
| Struct | Deserialize | 82.7 | 90.9 | 309.6 |
| Structlist | Serialize | 632.8 | 1783.0 | 3340.0 |
| Structlist | Deserialize | 906.4 | 1891.0 | 5709.0 |
| Sample | Serialize | 137.3 | 367.3 | 1492.0 |
| Sample | Deserialize | 263.6 | 422.2 | 2661.0 |
| Samplelist | Serialize | 1962.0 | 7087.0 | 26169.0 |
| Samplelist | Deserialize | 4234.0 | 9321.0 | 53615.0 |
| Mediacontent | Serialize | 268.8 | 471.1 | 773.7 |
| Mediacontent | Deserialize | 426.9 | 553.1 | 1432.0 |
| Mediacontentlist | Serialize | 3736.0 | 9107.0 | 13911.0 |
| Mediacontentlist | Deserialize | 7247.0 | 11435.0 | 27975.0 |
Serialized data sizes (bytes):
| Data Type | Fory | Protobuf | Msgpack |
|---|---|---|---|
| Struct | 58 | 61 | 57 |
| Sample | 446 | 375 | 524 |
| MediaContent | 342 | 301 | 400 |
| StructList | 560 | 1260 | 1146 |
| SampleList | 7600 | 7560 | 10486 |
| MediaContentList | 5776 | 6080 | 8006 |
Note: Results depend on hardware and implementation versions. See the Go benchmark docs for details: https://fory.apache.org/docs/benchmarks/go/
Fory Schema IDL and Compiler: First Release
Apache Fory 0.15.0 also introduces the first release of the Fory schema IDL and
compiler toolchain. You can define schemas once and generate native types and
registration code across languages.
Key capabilities:
- Schema-first development with
enum,message, andunion - Fory-native field semantics:
optional(nullability),ref(shared/circular references),list, andmap - Multi-language code generation for Java, Python, Go, Rust, and
cpp - Protobuf (
.proto) and FlatBuffers (.fbs) frontend support, translated into Fory IR/codegen - Idiomatic generated APIs with
to/from byteshelpers
Quick Start
pip install fory-compiler
foryc example.fdl --lang java,python,go,rust,cpp --output ./generatedpackage example;
message Person [id=101] {
string name = 1;
optional string email = 2;
}Generated Code Example
foryc generates idiomatic native types plus registration/byte helpers. For the
schema above, generated code looks like:
// Go (excerpt)
type Person struct {
Name string `fory:"id=1"`
Email optional.Optional[string] `fory:"id=2"`
}
func (m *Person) ToBytes() ([]byte, error) { ... }
func (m *Person) FromBytes(data []byte) error { ... }
func RegisterTypes(f *fory.Fory) error {
return f.RegisterStruct(Person{}, 101)
}// Java (excerpt)
public class Person {
@ForyField(id = 1)
private String name;
@ForyField(id = 2, nullable = true)
private String email;
public byte[] toBytes() { ... }
public static Person fromBytes(byte[] bytes) { ... }
}# Python (excerpt)
@pyfory.dataclass
class Person:
name: str = pyfory.field(id=1, default="")
email: Optional[str] = pyfory.field(id=2, default=None)
def to_bytes(self) -> bytes: ...
@classmethod
def from_bytes(cls, data: bytes) -> "Person": ...- Compiler docs: https://fory.apache.org/docs/compiler/
Features
- feat(java): add config params for IdentityObjectIntMap by @jim-parsons in #3048
- perf: add cpp benchmark report by @chaokunyang in #3051
- feat(python): add Union type support for xlang serialization by @zhan7236 in #3059
- feat(go): new golang xlang serialization implementation by @chaokunyang in #3063
- feat(java): enhance ForyField annotation with tag ID support for optimized serialization by @mchernyakov in #3021
- feat(c++): add iterator container serialization support by @zhan7236 in #3068
- refactor(go): refactor go error processing by @chaokunyang in #3069
- feat(rust): add generate_default attr, no longer generate
Defaulttrait impl by default by @ariesdevil in #3074 - feat(java): implement Union type support for cross-language serialization by @zhan7236 in #3062
- perf(go): add go benchmarks and optimize performance by @chaokunyang in #3071
- feat(python): add java python xlang tests and align protocol by @chaokunyang in #3077
- feat(rust): add i128 and isize type support by @ariesdevil in #3080
- feat(rust): add unit type and PhantomData serializer support by @ariesdevil in #3081
- refactor(python): refactor pyfory serializers code structure by @chaokunyang in #3083
- feat(rust): add union and none type support by @ariesdevil in #3084
- feat(go): add go struct field tag support by @chaokunyang in #3082
- feat(rust): add tuple struct support and improve generic type handling by @ariesdevil in #3087
- feat(rust): support configure rust field meta to reduce cost by @chaokunyang in #3089
- feat(c++): support customize c++ field meta by @chaokunyang in #3088
- feat(ci): make rust xlang ci run separately to make ci faster by @chaokunyang in #3090
- feat(python): support configure field meta for python by @chaokunyang in #3091
- refactor(rust): unify tuple struct and named struct protocol, and make schema evolution happy by @ariesdevil in #3092
- feat(java): build Descriptors with final ref_tracking flags by @chaokunyang in #3070
- feat(java/python/rust/go/c++): align nullable meta for xlang struct fields serialization by @chaokunyang in #3093
- feat(rust): implement fine-grained ref tracking for rust by @chaokunyang in #3101
- feat(c++): fine-grained ref tracking for c++ by @chaokunyang in #3103
- feat(java/python/rust/go/c++): xlang nullable/ref alignment by @chaokunyang in #3104
- feat(jav...
v0.15.0-rc3
Highlights
- feat(go): new golang xlang serialization implementation by @chaokunyang in #3063
- feat(rust): add tuple struct support and improve generic type handling by @ariesdevil in #3087
- refactor(rust): unify tuple struct and named struct protocol, and make schema evolution happy by @ariesdevil in #3092
feat(java/python/rust/go/c++): align nullable meta for xlang struct fields serialization by @chaokunyang in #3093 - feat(java/python/rust/go/c++): xlang fields reference and typeinfo alignment by @chaokunyang in #3107
- feat(c++): add SharedWeak for circular reference support by @chaokunyang in #3109
- feat(xlang): support unsigned int for xlang by @chaokunyang in #3111 and #3113
- feat(xlang/java): refactor java native serialization type system and streaming type info for xlang by @chaokunyang in #3153
- feat(xlang): fory schema idl and compiler by @chaokunyang in #3106
- feat(compiler): add flatbuffers idl support by @chaokunyang in #3184
- feat(compiler): support shared/circular reference serialization for fory/protobuf/flatbuffer idl by @chaokunyang in #3226
Features
- feat(java): add config params for IdentityObjectIntMap by @jim-parsons in #3048
- perf: add cpp benchmark report by @chaokunyang in #3051
- feat(python): add Union type support for xlang serialization by @zhan7236 in #3059
- feat(go): new golang xlang serialization implementation by @chaokunyang in #3063
- feat(java): enhance ForyField annotation with tag ID support for optimized serialization by @mchernyakov in #3021
- feat(c++): add iterator container serialization support by @zhan7236 in #3068
- refactor(go): refactor go error processing by @chaokunyang in #3069
- feat(rust): add generate_default attr, no longer generate
Defaulttrait impl by default by @ariesdevil in #3074 - feat(java): implement Union type support for cross-language serialization by @zhan7236 in #3062
- perf(go): add go benchmarks and optimize performance by @chaokunyang in #3071
- feat(python): add java python xlang tests and align protocol by @chaokunyang in #3077
- feat(rust): add i128 and isize type support by @ariesdevil in #3080
- feat(rust): add unit type and PhantomData serializer support by @ariesdevil in #3081
- refactor(python): refactor pyfory serializers code structure by @chaokunyang in #3083
- feat(rust): add union and none type support by @ariesdevil in #3084
- feat(go): add go struct field tag support by @chaokunyang in #3082
- feat(rust): add tuple struct support and improve generic type handling by @ariesdevil in #3087
- feat(rust): support configure rust field meta to reduce cost by @chaokunyang in #3089
- feat(c++): support customize c++ field meta by @chaokunyang in #3088
- feat(ci): make rust xlang ci run separately to make ci faster by @chaokunyang in #3090
- feat(python): support configure field meta for python by @chaokunyang in #3091
- refactor(rust): unify tuple struct and named struct protocol, and make schema evolution happy by @ariesdevil in #3092
- feat(java): build Descriptors with final ref_tracking flags by @chaokunyang in #3070
- feat(java/python/rust/go/c++): align nullable meta for xlang struct fields serialization by @chaokunyang in #3093
- feat(rust): implement fine-grained ref tracking for rust by @chaokunyang in #3101
- feat(c++): fine-grained ref tracking for c++ by @chaokunyang in #3103
- feat(java/python/rust/go/c++): xlang nullable/ref alignment by @chaokunyang in #3104
- feat(java/python/rust/go/c++): xlang fields reference and typeinfo alignment by @chaokunyang in #3107
- feat(java/python/go/rust): add circular reference xlang tests by @chaokunyang in #3108
- feat(c++): add SharedWeak for circular reference support by @chaokunyang in #3109
- feat(js): add schema-based per-field nullable support for xlang by @theharsh999 in #3100
- feat(xlang): support unsigned int for xlang by @chaokunyang in #3111
- feat(java): long array serializer support varint encoding by @Pigsy-Monk in #3115
- feat(xlang): support serialization for unsigned types and field encoding config by @chaokunyang in #3113
- perf(go): optimize go struct fields serialization perf by @chaokunyang in #3120
- feat(java): int array serializer support varint encoding by @Pigsy-Monk in #3124
- feat(java): support xlang serialization for GraalVM native image by @chaokunyang in #3126
- refactor(go): rename go interface{} to any by @chaokunyang in #3128
- refactor(xlang): remove magic number from protocol by @chaokunyang in #3137
- feat(xlang): use little endian when serializing array of multiple byte element size by @chaokunyang in #3140
- refactor(java/c++): rename morphic to dynamic by @chaokunyang in #3142
- feat(xlang): add unsigned integer type support for JavaScript by @ayush00git in #3139
- feat: add unsigned number for dart by @ayush00git in #3144
- feat(xlang/java): refactor java native serialization type system and streaming type info for xlang by @chaokunyang in #3153
- feat(dart): add struct serializer support for unsigned integer types by @ayush00git in #3155
- feat(xlang): fory schema idl and compiler by @chaokunyang in #3106
- refactor(java): use
Types.NONE + 1as base java native id by @chaokunyang in #3180 - refactor(compiler): refactor fory compiler into hierarchical architecture by @chaokunyang in #3179
- feat(JavaScript): Add cross language test for JavaScript by @theweipeng in #3161
- feat(dart): add dart ci by @chaokunyang in #3189
- feat(compiler): add flatbuffers idl support by @chaokunyang in #3184
- feat(java): enhance java unsigned int/array type system by @chaokunyang in #3190
- feat(dart): add uint annotation types to the fory's codegen system by @ayush00git in #3181
- feat(dart): add uint struct support to the codegen system by @ayush00git in #3192
- feat(compiler): add union support to fory compiler and runtime by @chaokunyang in #3195
- feat(c++): support private fields of c++ class by @chaokunyang in #3193
- feat(compiler): generate getter/setter/has/clear methods for c++ by @chaokunyang in #3199
- feat(JavaScript): impl the xlang string by @theweipeng in #3197
- feat(c++): make fory enum/nuion macro in user namespace by @chaokunyang in #3200
- feat(go): use option for optional fields by @chaokunyang in #3202
- feat(c++): make shared_ptr track ref by default by @chaokunyang in #3214
- feat(go): support [N]uint types array serializers by @ayush00git in #3201
- feat(xlang): reserve 4 bits for type meta by @chaokunyang in #3204
- feat(go): remove murmur hash go deps by @chaokunyang in #3217
- feat(compiler): refine generated c++ API by @chaokunyang in #3221
- feat(python): refactor cython buffer to use c++ buffer by @chaokunyang in #3219
- ci: speed up setup-python on windows by @chaokunyang in #3222
- feat(python): add buffer index accessors by @chaokunyang in #3223
- feat(xlang/compiler): support shared/circular reference serialization for fory/protobuf/flatbuffer idl by @chaokunyang in #3226
- feat(c++): add polymorphic serialization support for
anyto compiler by @chaokunyang in #3232 - feat(JavaScript): i...
v0.15.0-rc2
Highlights
- feat(go): new golang xlang serialization implementation by @chaokunyang in #3063
- feat(rust): add tuple struct support and improve generic type handling by @ariesdevil in #3087
- refactor(rust): unify tuple struct and named struct protocol, and make schema evolution happy by @ariesdevil in #3092
feat(java/python/rust/go/c++): align nullable meta for xlang struct fields serialization by @chaokunyang in #3093 - feat(java/python/rust/go/c++): xlang fields reference and typeinfo alignment by @chaokunyang in #3107
- feat(c++): add SharedWeak for circular reference support by @chaokunyang in #3109
- feat(xlang): support unsigned int for xlang by @chaokunyang in #3111 and #3113
- feat(xlang/java): refactor java native serialization type system and streaming type info for xlang by @chaokunyang in #3153
- feat(xlang): fory schema idl and compiler by @chaokunyang in #3106
- feat(compiler): add flatbuffers idl support by @chaokunyang in #3184
- feat(compiler): support shared/circular reference serialization for fory/protobuf/flatbuffer idl by @chaokunyang in #3226
Features
- feat(java): add config params for IdentityObjectIntMap by @jim-parsons in #3048
- perf: add cpp benchmark report by @chaokunyang in #3051
- feat(python): add Union type support for xlang serialization by @zhan7236 in #3059
- feat(go): new golang xlang serialization implementation by @chaokunyang in #3063
- feat(java): enhance ForyField annotation with tag ID support for optimized serialization by @mchernyakov in #3021
- feat(c++): add iterator container serialization support by @zhan7236 in #3068
- refactor(go): refactor go error processing by @chaokunyang in #3069
- feat(rust): add generate_default attr, no longer generate
Defaulttrait impl by default by @ariesdevil in #3074 - feat(java): implement Union type support for cross-language serialization by @zhan7236 in #3062
- perf(go): add go benchmarks and optimize performance by @chaokunyang in #3071
- feat(python): add java python xlang tests and align protocol by @chaokunyang in #3077
- feat(rust): add i128 and isize type support by @ariesdevil in #3080
- feat(rust): add unit type and PhantomData serializer support by @ariesdevil in #3081
- refactor(python): refactor pyfory serializers code structure by @chaokunyang in #3083
- feat(rust): add union and none type support by @ariesdevil in #3084
- feat(go): add go struct field tag support by @chaokunyang in #3082
- feat(rust): add tuple struct support and improve generic type handling by @ariesdevil in #3087
- feat(rust): support configure rust field meta to reduce cost by @chaokunyang in #3089
- feat(c++): support customize c++ field meta by @chaokunyang in #3088
- feat(ci): make rust xlang ci run separately to make ci faster by @chaokunyang in #3090
- feat(python): support configure field meta for python by @chaokunyang in #3091
- refactor(rust): unify tuple struct and named struct protocol, and make schema evolution happy by @ariesdevil in #3092
- feat(java): build Descriptors with final ref_tracking flags by @chaokunyang in #3070
- feat(java/python/rust/go/c++): align nullable meta for xlang struct fields serialization by @chaokunyang in #3093
- feat(rust): implement fine-grained ref tracking for rust by @chaokunyang in #3101
- feat(c++): fine-grained ref tracking for c++ by @chaokunyang in #3103
- feat(java/python/rust/go/c++): xlang nullable/ref alignment by @chaokunyang in #3104
- feat(java/python/rust/go/c++): xlang fields reference and typeinfo alignment by @chaokunyang in #3107
- feat(java/python/go/rust): add circular reference xlang tests by @chaokunyang in #3108
- feat(c++): add SharedWeak for circular reference support by @chaokunyang in #3109
- feat(js): add schema-based per-field nullable support for xlang by @theharsh999 in #3100
- feat(xlang): support unsigned int for xlang by @chaokunyang in #3111
- feat(java): long array serializer support varint encoding by @Pigsy-Monk in #3115
- feat(xlang): support serialization for unsigned types and field encoding config by @chaokunyang in #3113
- perf(go): optimize go struct fields serialization perf by @chaokunyang in #3120
- feat(java): int array serializer support varint encoding by @Pigsy-Monk in #3124
- feat(java): support xlang serialization for GraalVM native image by @chaokunyang in #3126
- refactor(go): rename go interface{} to any by @chaokunyang in #3128
- refactor(xlang): remove magic number from protocol by @chaokunyang in #3137
- feat(xlang): use little endian when serializing array of multiple byte element size by @chaokunyang in #3140
- refactor(java/c++): rename morphic to dynamic by @chaokunyang in #3142
- feat(xlang): add unsigned integer type support for JavaScript by @ayush00git in #3139
- feat: add unsigned number for dart by @ayush00git in #3144
- feat(xlang/java): refactor java native serialization type system and streaming type info for xlang by @chaokunyang in #3153
- feat(dart): add struct serializer support for unsigned integer types by @ayush00git in #3155
- feat(xlang): fory schema idl and compiler by @chaokunyang in #3106
- refactor(java): use
Types.NONE + 1as base java native id by @chaokunyang in #3180 - refactor(compiler): refactor fory compiler into hierarchical architecture by @chaokunyang in #3179
- feat(JavaScript): Add cross language test for JavaScript by @theweipeng in #3161
- feat(dart): add dart ci by @chaokunyang in #3189
- feat(compiler): add flatbuffers idl support by @chaokunyang in #3184
- feat(java): enhance java unsigned int/array type system by @chaokunyang in #3190
- feat(dart): add uint annotation types to the fory's codegen system by @ayush00git in #3181
- feat(dart): add uint struct support to the codegen system by @ayush00git in #3192
- feat(compiler): add union support to fory compiler and runtime by @chaokunyang in #3195
- feat(c++): support private fields of c++ class by @chaokunyang in #3193
- feat(compiler): generate getter/setter/has/clear methods for c++ by @chaokunyang in #3199
- feat(JavaScript): impl the xlang string by @theweipeng in #3197
- feat(c++): make fory enum/nuion macro in user namespace by @chaokunyang in #3200
- feat(go): use option for optional fields by @chaokunyang in #3202
- feat(c++): make shared_ptr track ref by default by @chaokunyang in #3214
- feat(go): support [N]uint types array serializers by @ayush00git in #3201
- feat(xlang): reserve 4 bits for type meta by @chaokunyang in #3204
- feat(go): remove murmur hash go deps by @chaokunyang in #3217
- feat(compiler): refine generated c++ API by @chaokunyang in #3221
- feat(python): refactor cython buffer to use c++ buffer by @chaokunyang in #3219
- ci: speed up setup-python on windows by @chaokunyang in #3222
- feat(python): add buffer index accessors by @chaokunyang in #3223
- feat(xlang/compiler): support shared/circular reference serialization for fory/protobuf/flatbuffer idl by @chaokunyang in #3226
- feat(c++): add polymorphic serialization support for
anyto compiler by @chaokunyang in #3232 - feat(JavaScript): i...
v0.15.0-rc1
Highlights
- feat(go): new golang xlang serialization implementation by @chaokunyang in #3063
- feat(rust): add tuple struct support and improve generic type handling by @ariesdevil in #3087
- refactor(rust): unify tuple struct and named struct protocol, and make schema evolution happy by @ariesdevil in #3092
feat(java/python/rust/go/c++): align nullable meta for xlang struct fields serialization by @chaokunyang in #3093 - feat(java/python/rust/go/c++): xlang fields reference and typeinfo alignment by @chaokunyang in #3107
- feat(c++): add SharedWeak for circular reference support by @chaokunyang in #3109
- feat(xlang): support unsigned int for xlang by @chaokunyang in #3111 and #3113
- feat(xlang/java): refactor java native serialization type system and streaming type info for xlang by @chaokunyang in #3153
Features
- feat(java): add config params for IdentityObjectIntMap by @jim-parsons in #3048
- perf: add cpp benchmark report by @chaokunyang in #3051
- feat(python): add Union type support for xlang serialization by @zhan7236 in #3059
- feat(go): new golang xlang serialization implementation by @chaokunyang in #3063
- feat(java): enhance ForyField annotation with tag ID support for optimized serialization by @mchernyakov in #3021
- feat(c++): add iterator container serialization support by @zhan7236 in #3068
- refactor(go): refactor go error processing by @chaokunyang in #3069
- feat(rust): add generate_default attr, no longer generate
Defaulttrait impl by default by @ariesdevil in #3074 - feat(java): implement Union type support for cross-language serialization by @zhan7236 in #3062
- perf(go): add go benchmarks and optimize performance by @chaokunyang in #3071
- feat(python): add java python xlang tests and align protocol by @chaokunyang in #3077
- feat(rust): add i128 and isize type support by @ariesdevil in #3080
- feat(rust): add unit type and PhantomData serializer support by @ariesdevil in #3081
- refactor(python): refactor pyfory serializers code structure by @chaokunyang in #3083
- feat(rust): add union and none type support by @ariesdevil in #3084
- feat(go): add go struct field tag support by @chaokunyang in #3082
- feat(rust): add tuple struct support and improve generic type handling by @ariesdevil in #3087
- feat(rust): support configure rust field meta to reduce cost by @chaokunyang in #3089
- feat(c++): support customize c++ field meta by @chaokunyang in #3088
- feat(ci): make rust xlang ci run separately to make ci faster by @chaokunyang in #3090
- feat(python): support configure field meta for python by @chaokunyang in #3091
- refactor(rust): unify tuple struct and named struct protocol, and make schema evolution happy by @ariesdevil in #3092
- feat(java): build Descriptors with final ref_tracking flags by @chaokunyang in #3070
- feat(java/python/rust/go/c++): align nullable meta for xlang struct fields serialization by @chaokunyang in #3093
- feat(rust): implement fine-grained ref tracking for rust by @chaokunyang in #3101
- feat(c++): fine-grained ref tracking for c++ by @chaokunyang in #3103
- feat(java/python/rust/go/c++): xlang nullable/ref alignment by @chaokunyang in #3104
- feat(java/python/rust/go/c++): xlang fields reference and typeinfo alignment by @chaokunyang in #3107
- feat(java/python/go/rust): add circular reference xlang tests by @chaokunyang in #3108
- feat(c++): add SharedWeak for circular reference support by @chaokunyang in #3109
- feat(js): add schema-based per-field nullable support for xlang by @theharsh999 in #3100
- feat(xlang): support unsigned int for xlang by @chaokunyang in #3111
- feat(java): long array serializer support varint encoding by @Pigsy-Monk in #3115
- feat(xlang): support serialization for unsigned types and field encoding config by @chaokunyang in #3113
- perf(go): optimize go struct fields serialization perf by @chaokunyang in #3120
- feat(java): int array serializer support varint encoding by @Pigsy-Monk in #3124
- feat(java): support xlang serialization for GraalVM native image by @chaokunyang in #3126
- refactor(go): rename go interface{} to any by @chaokunyang in #3128
- refactor(xlang): remove magic number from protocol by @chaokunyang in #3137
- feat(xlang): use little endian when serializing array of multiple byte element size by @chaokunyang in #3140
- refactor(java/c++): rename morphic to dynamic by @chaokunyang in #3142
- feat(xlang): add unsigned integer type support for JavaScript by @ayush00git in #3139
- feat(dart): add unsigned number for dart by @ayush00git in #3144
- feat(xlang/java): refactor java native serialization type system and streaming type info for xlang by @chaokunyang in #3153
Bug Fix
- fix(docs): fix graalvm link by @chaokunyang in #3056
- fix(Rust): prevent obtaining generic type metadata on custom types(struct/enum) by @urlyy in #3057
- fix(Rust): Move the calculating of TypeMeta::bytes and TypeMeta::hash ahead of serialization by @urlyy in #3060
- fix(java): Better ergonomics for AllowListChecker by @Asuka-star in #3061
- fix(rust): output original registered ID in type mismatch error log by @userzhy in #3067
- fix(java): Fix CopyOnWriteArrayList field serialization by @vybhavjs in #3079
- fix(go): reference tracking fails when >127 objects serialized by @jonyoder in #3086
- fix(java): fix abstract enum and abstract array serialization for GraalVM by @chaokunyang in #3095
- fix(rust): enable Union type cross-language serialization between Rust and Java by @ariesdevil in #3094
- fix: x86 architecture missing from universal2 macOS wheel by @madhavajay in #3114
- fix(java): optimize type resolver calls for xlang mode on graalvm by @chaokunyang in #3129
- fix(java): stop compilation service when shutdowning compile service by @chaokunyang in #3138
- fix(python): fix collection null elements read/write by @chaokunyang in #3149
- fix: typo in the xlang_serialization_spec.md by @ayush00git in #3151
- fix(java): use littlen endian for utf16 string on big endian by @chaokunyang in #3159
- fix(java): fix openj9 sliced string serde by @chaokunyang in #3160
Other Improvements
- chore: bump release version to 0.14.0 by @chaokunyang in #3052
- chore: fix benchmark plot by @chaokunyang in #3053
- docs: add cpp doc in main readme.md by @chaokunyang in #3055
- chore(deps): bump org.apache.logging.log4j:log4j-core from 2.20.0 to 2.25.3 in /java/fory-test-core by @dependabot[bot] in #3065
- chore(python): Update badge styles in README.md by @chaokunyang in #3072
- chore(rust): revert rust crates version by @ariesdevil in #3075
- docs(c++): Add MSVC compatibility to the CMake sample in the CPP document. by @Eiskomet in #3078
- chore: bump release version to 0.14.1 by @chaokunyang in #3096
- docs(go): add go serialization doc by @chaokunyang in #3121
- docs(go): fix go serialization doc by @chaokunyang in #3125
- docs(go): fix broken go doc links by @chaokunyang in #3127
- docs(go): add go version requirements by @chaokunyang in #3134
- docs(go): add docs for go pkg dev by @chaokunyang in #3135
- doc...
v0.14.1
Highlights
- feat(rust): add generate_default attr, no longer generate Default by default by @ariesdevil in #3074
Features
- feat(rust): add generate_default attr, no longer generate Default by default by @ariesdevil in #3074
- feat(java): mark createSerializer as public by @chaokunyang
Bug Fix
- fix(java): Fix CopyOnWriteArrayList field serialization by @vybhavjs in #3079
- fix(java): Better ergonomics for AllowListChecker by @Asuka-star in #3061
- fix(java): fix read class def when writing classdefs by @chaokunyang in 3ad627c9
- fix(Rust): Move the calculating of TypeMeta::bytes and TypeMeta::hash ahead of serialization by @urlyy in #3060
- fix(Rust): prevent obtaining generic type metadata on custom types(struct/enum) by @urlyy in #3057
Full Changelog: v0.14.0...v0.14.1
v0.14.1-rc1
Highlights
- feat(rust): add generate_default attr, no longer generate Default by default by @ariesdevil in #3074
Features
- feat(rust): add generate_default attr, no longer generate Default by default by @ariesdevil in #3074
- feat(java): mark createSerializer as public by @chaokunyang
Bug Fix
- fix(java): Fix CopyOnWriteArrayList field serialization by @vybhavjs in #3079
- fix(java): Better ergonomics for AllowListChecker by @Asuka-star in #3061
- fix(java): fix read class def when writing classdefs by @chaokunyang in 3ad627c9
- fix(Rust): Move the calculating of TypeMeta::bytes and TypeMeta::hash ahead of serialization by @urlyy in #3060
- fix(Rust): prevent obtaining generic type metadata on custom types(struct/enum) by @urlyy in #3057
Full Changelog: v0.14.0...v0.14.1-rc1
v0.14.0
Highlights
- Official C++ Support: Introduced the official Apache Fory C++ implementation, featuring a high-performance object graph serialization framework, xlang support, and comprehensive benchmarks.
- Row Format & Type System: Implemented a new row-oriented format type system across Java, Python, and C++, enabling row-columnar conversions and removing external Arrow dependencies for schema encoding.
- Performance Enhancements: Significant optimizations across all languages, including thread-local context management in Rust, fast flat-int maps for C++ type dispatch, and optimized buffer read/write operations.
- Ecosystem Updates: Added support for JDK 25 (Java), Go 1.23, and Bazel 8. Python support has been officially marked as stable with improved build parallelism.
- Advanced Java Features: Added GraalVM Native Image support via
ForyFeatureand new optimized serializers for blocking queues and final fields.
Features
- feat(python): add raw method to buffer object by @chaokunyang in #2875
- feat(rust): add duration serializer support by @chaokunyang in #2878
- feat(rust): add typename to unregistered error message by @chaokunyang in #2881
- perf(rust): support criterion profiler to generate flamegraph by @chaokunyang in #2882
- refactor(rust): merge fory_debug into fory macro attr by @chaokunyang in #2883
- feat(rust): direct derive primitve write/read by @chaokunyang in #2890
- perf(rust): optimize buffer write read perf by @chaokunyang in #2892
- feat(Rust): Support u128 & u128_array by @urlyy in #2899
- feat(c++): implement fory cpp object graph serialization framework by @chaokunyang in #2908
- feat(python): pure python row-columar convert by @chaokunyang in #2919
- feat(c++): implement xlang serialization for c++ by @chaokunyang in #2925
- feat(c++/python): add row format schema and remove arrow dependency by @chaokunyang in #2928
- feat(java): implement fory row format type system by @chaokunyang in #2931
- feat(python): implement cython bazel build directly without 3rd deps by @chaokunyang in #2936
- feat(c+/python): upgrade bazel to bazel8 by @chaokunyang in #2937
- feat(java/python/c++): add schema encoder and remove arrow serializers by @chaokunyang in #2938
- feat(c++): check max dyn depth when deserializing polymorphic types by @chaokunyang in #2939
- feat(c++): add cmake build support and add cpp examples by @chaokunyang in #2942
- feat(c++ ): add cpp benchmark by @chaokunyang in #2943
- perf(rust): use segmented pool to reduce contention of fory pool by @chaokunyang in #2945
- perf(rust): use thread local to manage fory rust WriteContext/ReadContext by @chaokunyang in #2946
- feat(rust): add fory config for rust by @chaokunyang in #2947
- perf(c++): optimize cpp serialization performance by @chaokunyang in #2944
- perf(c++): remove shared_ptr from type info to reduce atomic counter cost by @chaokunyang in #2951
- feat: refine python module check by @chaokunyang in #2952
- feat(java): support jdk 25 by @chaokunyang in #2954
- feat(java): add optimized serializers for blocking queues by @zhan7236 in #2955
- perf(c++): directly error set instead of result to reduce cost on hotpath by @chaokunyang in #2959
- perf(c++): optimize primitive struct fields read performance by @chaokunyang in #2960
- feat(java): implement FinalFieldReplaceResolveSerializer for final fields with writeReplace/readResolve methods by @mchernyakov in #2917
- perf(c++): add mac profile script for c++ by @chaokunyang in #2962
- perf(c++): fair benchmark for cpp by @chaokunyang in #2963
- perf(c++): optimize type dispatch performance by a fast flat-int map by @chaokunyang in #2966
- perf(c++): add media content benchmark by @chaokunyang in #2968
- feat(c++): support polymorphic collection elements serialization by @chaokunyang in #2974
- feat(c++): add cpp tuple serializer by @chaokunyang in #2975
- refactor(xlang): use 0 for unknow type id by @chaokunyang in #2985
- feat(java): Add ForyFeature for GraalVM Native Image by @mengnankkkk in #2701
- feat(c++): support container xlang serialization with polymorphic elements by @chaokunyang in #2980
- feat(python): parallel python wheel build by @chaokunyang in #2989
- perf(c++): improve the serialization performance of array/collection by @LiangliangSui in #2986
- feat(go): upgrade go to to 1.23 by @chaokunyang in #2995
- perf(c++): centralize error state in context for faster serialization by @chaokunyang in #3009
- refactor(go): redesign serialization implementation with performance and usability improvements by @chaokunyang in #2998
- refactor(rust): merge rust type layer into TypeMeta by @chaokunyang in #3019
- ci: remove macos x86 CI for Python by @chaokunyang in #3023
- feat(c++): support unsigned type for cpp by @chaokunyang in #3022
- feat(c++): support variant-based union type serialization for c++ by @chaokunyang in #3032
- feat(java): refactor ObjectStreamSerializer to use meta shared compatible serializer by @chaokunyang in #3034
- feat(java): separate user register type id with fory registered type id by @chaokunyang in #3035
- feat(): add c++ user guide doc by @chaokunyang in #3037
- refactor(c++/rust): refine c++ serialize_to API by @chaokunyang in #3045
Bug Fix
- fix(Rust): fix Binary implementation by @urlyy in #2902
- fix(rust): fix array field support by @chaokunyang in #2933
- fix(rust): raise error for nested polymorphics for collection by @chaokunyang in #2934
- fix(kotlin): support Kotlin field with Java reserved world by @chaokunyang in #2948
- fix(java): handle TypeVariable in row format type inference by @chaokunyang in #2949
- fix(java): use single quotes in Python command for Windows compatibility by @zhan7236 in #2953
- fix(java): fix race condition in blocking queue serializers by @zhan7236 in #2956
- fix(cpp): fix the type error by @LiangliangSui in #2961
- fix(go): fix struct value reference tracking bug by @chaokunyang in #2991
- fix(java): support serialization of CopyOnWriteArraySet by @LiangliangSui in #2999
Other Improvements
- docs: fix broken table in in java_serialization_guide.md by @mosinnik in #2876
- chore(rust): fix tuple test comment by @chaokunyang in #2877
- docs(rust): remove redundant doc for shared reference by @chaokunyang in #2879
- chore(Java): Update java quickstart doc, for note register order-sensitive by @moooonk in #2837
- chore(CI): Add caching for bazel in github workflows by @prakash-218 in #2888
- chore(CI): Fix cache with symlinks by @prakash-218 in #2893
- chore: move benchmarks to separate dir to speed up ci build by @chaokunyang in #2894
- docs: fix rust benchmark links by @chaokunyang in #2896
- docs: fix cargo benchmark comand in doc by @chaokunyang in #2897
- chore: bump release version to 0.13.1 by @chaokunyang in #2901
- docs(java): add logging section by @mosinnik in #2905
- chore(c++): remove cpp benchmarks by @chaokunyang in #2926
- chore(c++): move meta string to meta dir by @chaokunyang in #2940
- docs: remove unused type mappings for arrow types by @chaokunyang in #2964
- chore: Remove the content related to arrow. by @LiangliangSui in #2965
- chore(c++): move common macro into macros.h by @chaokunyang in https://github.com/apache/f...
v0.14.0-rc1
Highlights
- Official C++ Support: Introduced the official Apache Fory C++ implementation, featuring a high-performance object graph serialization framework, xlang support, and comprehensive benchmarks.
- Row Format & Type System: Implemented a new row-oriented format type system across Java, Python, and C++, enabling row-columnar conversions and removing external Arrow dependencies for schema encoding.
- Performance Enhancements: Significant optimizations across all languages, including thread-local context management in Rust, fast flat-int maps for C++ type dispatch, and optimized buffer read/write operations.
- Ecosystem Updates: Added support for JDK 25 (Java), Go 1.23, and Bazel 8. Python support has been officially marked as stable with improved build parallelism.
- Advanced Java Features: Added GraalVM Native Image support via
ForyFeatureand new optimized serializers for blocking queues and final fields.
Features
- feat(python): add raw method to buffer object by @chaokunyang in #2875
- feat(rust): add duration serializer support by @chaokunyang in #2878
- feat(rust): add typename to unregistered error message by @chaokunyang in #2881
- perf(rust): support criterion profiler to generate flamegraph by @chaokunyang in #2882
- refactor(rust): merge fory_debug into fory macro attr by @chaokunyang in #2883
- feat(rust): direct derive primitve write/read by @chaokunyang in #2890
- perf(rust): optimize buffer write read perf by @chaokunyang in #2892
- feat(Rust): Support u128 & u128_array by @urlyy in #2899
- feat(c++): implement fory cpp object graph serialization framework by @chaokunyang in #2908
- feat(python): pure python row-columar convert by @chaokunyang in #2919
- feat(c++): implement xlang serialization for c++ by @chaokunyang in #2925
- feat(c++/python): add row format schema and remove arrow dependency by @chaokunyang in #2928
- feat(java): implement fory row format type system by @chaokunyang in #2931
- feat(python): implement cython bazel build directly without 3rd deps by @chaokunyang in #2936
- feat(c+/python): upgrade bazel to bazel8 by @chaokunyang in #2937
- feat(java/python/c++): add schema encoder and remove arrow serializers by @chaokunyang in #2938
- feat(c++): check max dyn depth when deserializing polymorphic types by @chaokunyang in #2939
- feat(c++): add cmake build support and add cpp examples by @chaokunyang in #2942
- feat(c++ ): add cpp benchmark by @chaokunyang in #2943
- perf(rust): use segmented pool to reduce contention of fory pool by @chaokunyang in #2945
- perf(rust): use thread local to manage fory rust WriteContext/ReadContext by @chaokunyang in #2946
- feat(rust): add fory config for rust by @chaokunyang in #2947
- perf(c++): optimize cpp serialization performance by @chaokunyang in #2944
- perf(c++): remove shared_ptr from type info to reduce atomic counter cost by @chaokunyang in #2951
- feat: refine python module check by @chaokunyang in #2952
- feat(java): support jdk 25 by @chaokunyang in #2954
- feat(java): add optimized serializers for blocking queues by @zhan7236 in #2955
- perf(c++): directly error set instead of result to reduce cost on hotpath by @chaokunyang in #2959
- perf(c++): optimize primitive struct fields read performance by @chaokunyang in #2960
- feat(java): implement FinalFieldReplaceResolveSerializer for final fields with writeReplace/readResolve methods by @mchernyakov in #2917
- perf(c++): add mac profile script for c++ by @chaokunyang in #2962
- perf(c++): fair benchmark for cpp by @chaokunyang in #2963
- perf(c++): optimize type dispatch performance by a fast flat-int map by @chaokunyang in #2966
- perf(c++): add media content benchmark by @chaokunyang in #2968
- feat(c++): support polymorphic collection elements serialization by @chaokunyang in #2974
- feat(c++): add cpp tuple serializer by @chaokunyang in #2975
- refactor(xlang): use 0 for unknow type id by @chaokunyang in #2985
- feat(java): Add ForyFeature for GraalVM Native Image by @mengnankkkk in #2701
- feat(c++): support container xlang serialization with polymorphic elements by @chaokunyang in #2980
- feat(python): parallel python wheel build by @chaokunyang in #2989
- perf(c++): improve the serialization performance of array/collection by @LiangliangSui in #2986
- feat(go): upgrade go to to 1.23 by @chaokunyang in #2995
- perf(c++): centralize error state in context for faster serialization by @chaokunyang in #3009
- refactor(go): redesign serialization implementation with performance and usability improvements by @chaokunyang in #2998
- refactor(rust): merge rust type layer into TypeMeta by @chaokunyang in #3019
- ci: remove macos x86 CI for Python by @chaokunyang in #3023
- feat(c++): support unsigned type for cpp by @chaokunyang in #3022
- feat(c++): support variant-based union type serialization for c++ by @chaokunyang in #3032
- feat(java): refactor ObjectStreamSerializer to use meta shared compatible serializer by @chaokunyang in #3034
- feat(java): separate user register type id with fory registered type id by @chaokunyang in #3035
- feat(): add c++ user guide doc by @chaokunyang in #3037
- refactor(c++/rust): refine c++ serialize_to API by @chaokunyang in #3045
Bug Fix
- fix(Rust): fix Binary implementation by @urlyy in #2902
- fix(rust): fix array field support by @chaokunyang in #2933
- fix(rust): raise error for nested polymorphics for collection by @chaokunyang in #2934
- fix(kotlin): support Kotlin field with Java reserved world by @chaokunyang in #2948
- fix(java): handle TypeVariable in row format type inference by @chaokunyang in #2949
- fix(java): use single quotes in Python command for Windows compatibility by @zhan7236 in #2953
- fix(java): fix race condition in blocking queue serializers by @zhan7236 in #2956
- fix(cpp): fix the type error by @LiangliangSui in #2961
- fix(go): fix struct value reference tracking bug by @chaokunyang in #2991
- fix(java): support serialization of CopyOnWriteArraySet by @LiangliangSui in #2999
Other Improvements
- docs: fix broken table in in java_serialization_guide.md by @mosinnik in #2876
- chore(rust): fix tuple test comment by @chaokunyang in #2877
- docs(rust): remove redundant doc for shared reference by @chaokunyang in #2879
- chore(Java): Update java quickstart doc, for note register order-sensitive by @moooonk in #2837
- chore(CI): Add caching for bazel in github workflows by @prakash-218 in #2888
- chore(CI): Fix cache with symlinks by @prakash-218 in #2893
- chore: move benchmarks to separate dir to speed up ci build by @chaokunyang in #2894
- docs: fix rust benchmark links by @chaokunyang in #2896
- docs: fix cargo benchmark comand in doc by @chaokunyang in #2897
- chore: bump release version to 0.13.1 by @chaokunyang in #2901
- docs(java): add logging section by @mosinnik in #2905
- chore(c++): remove cpp benchmarks by @chaokunyang in #2926
- chore(c++): move meta string to meta dir by @chaokunyang in #2940
- docs: remove unused type mappings for arrow types by @chaokunyang in #2964
- chore: Remove the content related to arrow. by @LiangliangSui in #2965
- chore(c++): move common macro into macros.h by @chaokunyang in https://github.com/apache/f...
v0.13.2
Highlights
- perf(rust): use thread local to manage fory rust WriteContext/ReadContext by @chaokunyang in
#2946 - feat(rust): add typename to unregistered error message by @chaokunyang in #2881
Features
- feat(rust): add fory config for rust by @chaokunyang in #2947
- perf(rust): use thread local to manage fory rust WriteContext/ReadContext by @chaokunyang in
#2946 - perf(rust): use segmented pool to reduce contention of fory pool by @chaokunyang in
#2945 - feat(Rust): Support u128 & u128_array by @urlyy in #2899
- perf(rust): optimize buffer write read perf by @chaokunyang in #2892
- feat(rust): direct derive primitve write/read by @chaokunyang in #2890
- refactor(rust): merge fory_debug into fory macro attr by @chaokunyang in #2883
- perf(rust): support criterion profiler to generate flamegraph by @chaokunyang in
#2882 - feat(rust): add typename to unregistered error message by @chaokunyang in #2881
- feat(rust): add duration serializer support by @chaokunyang in #2878
- feat(python): add raw method to buffer object by @chaokunyang in #2875
- feat: refine python module check by @chaokunyang in #2952
Bug Fix
- fix(kotlin): support Kotlin field with Java reserved world by @chaokunyang in
#2948 - fix(rust): raise error for nested polymorphics for collection by @chaokunyang in
#2934 - fix(rust): fix array field support by @chaokunyang in #2933
- fix(Rust): fix Binary implementation by @urlyy in #2902
Other Improvements
- docs(java): add logging section by @mosinnik in #2905
- docs: fix cargo benchmark comand in doc by @chaokunyang in #2897
- chore: move benchmarks to separate dir to speed up ci build by @chaokunyang in
#2894 - chore(CI): Fix cache with symlinks by @PrakashRaj-GK in #2893
- chore(CI): Add caching for bazel in github workflows by @PrakashRaj-GK in #2888
- chore(Java): Update java quickstart doc, for note register order-sensitive by @monk in
#2837 - docs(rust): remove redundant doc for shared reference by @chaokunyang in #2879
- chore(rust): fix tuple test comment by @chaokunyang in #2877
- docs: fix broken table in in java_serialization_guide.md by @mosinnik in #2876
Full Changelog: v0.13.1...v0.13.2
