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
- docs: adjust doc links and sync config by @chaokunyang in #3136
- docs: remove redundant prefix doc id by @chaokunyang in #3141
- docs: add field configuration doc by @chaokunyang in #3143
- docs: fix field type broken links by @chaokunyang in #3146
- docs: fix field type meta pos by @chaokunyang in #3147
- docs: fix native field type meta doc by @chaokunyang in #3148
- chore(java): move java benchmark to bench dir by @chaokunyang in #3152
- docs: fix typo and grammar in readme by @Howard-aile in #3156
New Contributors
- @jim-parsons made their first contribution in #3048
- @Asuka-star made their first contribution in #3061
- @userzhy made their first contribution in #3067
- @ariesdevil made their first contribution in #3074
- @Eiskomet made their first contribution in #3078
- @vybhavjs made their first contribution in #3079
- @jonyoder made their first contribution in #3086
- @theharsh999 made their first contribution in #3100
- @madhavajay made their first contribution in #3114
- @Pigsy-Monk made their first contribution in #3115
- @ayush00git made their first contribution in #3139
- @Howard-aile made their first contribution in #3156
Full Changelog: v0.14.1...v0.15.0-rc1