Highlights
- Unified the xlang type system and made xlang the default mode across languages: #3644, #3685
- Added decimal and bfloat16 support for xlang serialization: #3599, #3605
- Added nested container and field codec support across Rust, C++, C#, Go, Dart, Python, and Swift: #3625, #3630, #3636, #3639, #3640, #3641, #3643
- Added Kotlin xlang, KSP, and schema IDL support: #3679, #3684
- Added Scala schema IDL support and updated generated annotations: #3681, #3682
- Added Android serialization support, including Java annotation processor support: #3667, #3670
- Improved xlang compatibility with default compatible mode, simplified field ordering, and list/array compatible reads: #3648, #3650, #3675
- Improved serialization performance, including Dart typed-container fast paths and generated struct optimizations: #3609, #3653, #3656, #3661
- Added Java schema typed row field accessors and nested type-use serialization metadata: #3631, #3633
Features
- feat(ci): fix release for csharp and dart by @chaokunyang in #3582
- feat(rust): add configurable size guardrails by @ayush00git in #3579
- refactor(rust): move Fory configuration to builder by @chaokunyang in #3593
- feat(xlang): add decimal and align serializers for xlang by @chaokunyang in #3599
- refactor(dart): aligned dart internal implementation by @Geethapranay1 in #3601
- feat(xlang): add bfloat16 support by @chaokunyang in #3605
- feat(dart): support dart web platform by @chaokunyang in #3608
- perf(dart): typed-container write fast path with scan elimination by @yash-agarwa-l in #3609
- feat(swift): nested container override support for swift by @chaokunyang in #3625
- feat(java): add schema typed row fields accessor by @chaokunyang in #3631
- feat: add nested container codec for rust by @chaokunyang in #3630
- feat(java): support nested type-use serialization metadata by @chaokunyang in #3633
- refactor(cpp): remove abseil dependency by @chaokunyang in #3634
- feat(cpp): add nested field codec support by @chaokunyang in #3636
- feat(csharp): support nested container field codec by @chaokunyang in #3639
- feat(go): support nested field annotation type specs by @chaokunyang in #3640
- feat(dart): support nested container field codec for dart by @chaokunyang in #3641
- feat(python): support nested field schema encodings by @chaokunyang in #3643
- feat(xlang): unified xlang type system by @chaokunyang in #3644
- feat(xlang): add comprehensive read checks by @chaokunyang in #3647
- feat(xlang): use compatible for xlang by default by @chaokunyang in #3648
- feat(xlang): compatible read between list array field by @chaokunyang in #3650
- perf(dart): remove generated struct slot bridge by @chaokunyang in #3653
- perf: optimize serialization perf by @chaokunyang in #3656
- perf: update benchmark plots by @chaokunyang in #3661
- refactor(rust): use absolute path in generated Rust code by @BaldDemian in #3666
- feat: add android support by @chaokunyang in #3667
- feat(compiler): add helpers to generate unified gRPC service/method names by @BaldDemian in #3672
- feat(java): annotation processor for android serialization by @chaokunyang in #3670
- feat(xlang): simplify xlang field ordering by @chaokunyang in #3675
- feat(kotlin): add kotlin xlang and ksp support by @chaokunyang in #3679
- refactor(java): replace static serializer spi lookup by @chaokunyang in #3680
- feat(scala): add scala schema idl support by @chaokunyang in #3681
- feat(scala): update generated annotation by @chaokunyang in #3682
- feat(rust): make rust chrono optional by @chaokunyang in #3683
- feat(kotlin): add schema idl support to kotlin by @chaokunyang in #3684
- feat(xlang): use xlang as default mode for all languages by @chaokunyang in #3685
Bug Fix
- 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
- chore: bump releasse version to 0.17.0 by @chaokunyang in #3583
- chore: skip auto release for tag starts with go by @chaokunyang in #3584
- docs: add NuGet badge by @chaokunyang in #3587
- docs(java): update graalvm guide location by @chaokunyang in #3588
- docs: rename graalvm_support.md to graalvm-support.md by @chaokunyang in #3589
- chore(rust): refine varint read/write method name by @chaokunyang in #3590
- docs: move development guide to docs root by @chaokunyang in #3591
- chore(dart): add missing license headers by @chaokunyang in #3594
- chore(csharp): add more csharp and swift tests by @chaokunyang in #3597
- chore(dart): refine dart xlang serialization by @chaokunyang in #3596
- docs: add more agent harness rules by @chaokunyang in #3610
- chore(dart): remove stale dart note files by @chaokunyang in #3642
- chore(java): configure default Fory log level by @chaokunyang in #3657
- chore: clean up code and add compiler warning checks by @chaokunyang in #3660
- docs: tighten benchmark throughput plots by @chaokunyang in #3662
- docs: update readme by @chaokunyang in #3664
- docs: add README schema IDL example by @chaokunyang in #3665
- docs: update xlang/native serialization doc by @chaokunyang in #3686
New Contributors
- @emrul made their first contribution in #3603
- @wakilurislam made their first contribution in #3638
- @xhzq233 made their first contribution in #3669
Full Changelog: v0.17.0...v1.0.0