Highlights
- Expanded generated gRPC support across Go, Rust, Kotlin, Scala, C#, and JavaScript, including Node.js and browser gRPC-Web support for JavaScript.
- Improved cross-language compatibility with refined register-by-name APIs, compatible scalar read conversions, and default compatible mode for native serialization.
- Strengthened Java platform support by adding Java 9/16 module-info generation and removing
sun.misc.Unsafeusage for JDK 25. - Improved runtime safety and robustness with additional read checks, deflater leak fixes, and safer serializer/type-info error handling.
- Optimized compatible-mode and row-format performance through faster compatible reads, compact row layout caching, and inlined custom-codec dispatch.
- Enhanced compiler output quality across Rust, C++, and service generation with better identifier escaping, name-collision handling, nested container reference handling, and map code generation.
Features
- feat(java): add java9/16 module-info support by @chaokunyang in #3721
- refactor(format): inline custom-codec dispatch in row codecs by @stevenschlansker in #3716
- perf(format): cache compact row layout per nested slot by @stevenschlansker in #3717
- feat(java): remove sun.misc.Unsafe for jdk25 by @chaokunyang in #3702
- feat(rust): support thread safe
Arc<dyn Any + Send + Sync>type by @chaokunyang in #3736 - refactor(rust): refactor sync send type by @chaokunyang in #3737
- feat(xlang): refine register by name api by @chaokunyang in #3739
- feat(xlang): support compatible scalar read conversions by @chaokunyang in #3740
- feat: default compatible mode for native serialization by @chaokunyang in #3742
- perf: optimize compatible mode read performance by @chaokunyang in #3743
- feat(compiler): handle Rust identifier escaping and name collisions by @BaldDemian in #3744
- feat(go): implement grpc stub generation by @ayush00git in #3698
- refactor(compiler): generate C++ unordered map for Fory map by @BaldDemian in #3745
- feat(compiler): handle nested container ref pointer options in C++ compiler correctly by @BaldDemian in #3735
- feat: add more read checks by @chaokunyang in #3748
- feat(compiler): support Rust gRPC code generation by @BaldDemian in #3738
- feat(cpp): support struct property accessors by @chaokunyang in #3751
- feat(python): make scalar wire markers typing-friendly by @chaokunyang in #3756
- feat(kotlin): add kotlin grpc support by @chaokunyang in #3757
- feat(rust): make fory-derive generated code use exported api in fory rust lib by @chaokunyang in #3759
- feat(scala): add generated grpc service support for scala by @chaokunyang in #3762
- feat(csharp): add generated grpc support for C# by @chaokunyang in #3761
- feat(javascript): add javascript gRPC support for nodejs/browser by @chaokunyang in #3760
Bug Fix
- fix(go): return nil serializer on getTypeInfo err by @ayush00git in #3719
- fix(benchmarks): uses outdated google-java-format, upgrade spotless by @stevenschlansker in #3722
- fix(format): pass row body size, not full payload size, to BinaryRow.pointTo by @stevenschlansker in #3715
- fix(java): fix deflater memory leak by @MNTMDEV in #3726
- fix(compiler): handle nested container ref pointer options in Rust compiler correctly by @BaldDemian in #3731
- fix(java): ignore non-Scala/Lombok-style default helper methods by @mandrean in #3733
- fix(c++): std::unordered_map cannot be used in struct. (#3727) by @ruoruoniao in #3728
- fix(grpc): fix rust/go grpc support by @chaokunyang in #3753
- fix(cpp): align unsigned struct default encoding by @chaokunyang in #3754
Other Improvements
- chore(deps): fix vulnerable dependencies by @chaokunyang in #3741
- chore: Bump MessagePack from 2.5.187 to 2.5.301 by @dependabot[bot] in #3750
- chore(deps): bump Go gRPC test dependencies by @chaokunyang in #3763
New Contributors
- @MNTMDEV made their first contribution in #3726
- @ruoruoniao made their first contribution in #3728
Full Changelog: v1.1.0...v1.2.0-rc1