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): impl xlang writer by @theweipeng in #3234
- feat(xlang): support control ref tracking for nested list map elements by @chaokunyang in #3236
- feat(compiler): add generated
to_bytes/from_bytesmethods to generated message/union by @chaokunyang in #3238 - refactor(c++): use snake_case namestyle for c++ by @chaokunyang in #3240
- perf(go): optimize go perf by @chaokunyang in #3241
- refactor(go): adjust go buffer uint32/64 write/read name style by @chaokunyang in #3242
- refactor(compiler): refactor fory compiler command line by @chaokunyang in #3243
- feat(compiler): add compatible mode for idl by @chaokunyang in #3245
- feat(go): add float16 support to go by @ayush00git in #3235
- feat(java): generate java List for primitive array by @chaokunyang in #3247
- feat(JavaScript): Impl xlang Map and Collection by @theweipeng in #3249
- feat(compiler/runtime): use hash for generated class as id and refactor user type id encoding by @chaokunyang in #3248
- refactor(spec): remove language byte from xlang in protocol by @chaokunyang in #3256
- refactor(go): move go struct serializer init to struct_init.go by @chaokunyang in #3255
- feat(protocol): add float8 and bfloat16 to protocol spec by @chaokunyang in #3259
- feat(compiler): add evolution option support by @chaokunyang in #3262
- feat(compiler): update toString/repr/std::fmt::Debug for generated ref code by @chaokunyang in #3264
- perf: optimize schema evolution mode performance by @chaokunyang in #3260
- feat(JavaScript): Impl xlang JavaScript testcase by @theweipeng in #3263
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
- fix(c++): fix fory c++ compile warnings by @chaokunyang in #3188
- fix(c++): issue 3229 - compile error on gcc16 by @xflcx1991 in #3230
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
- docs: update agents.md by @chaokunyang in #3162
- docs(compiler): update fory compiler doc by @chaokunyang in #3183
- docs: fix protobuf docs by @chaokunyang in #3185
- docs: add missing protobuf-idl.md by @chaokunyang in #3186
- docs(c++): add c++ polymorphism doc by @chaokunyang in #3187
- docs: Fix links in README by @chaokunyang in #3212
- chore(java): rename _getTypeResolver to getTypeResolver by @chaokunyang in #3227
- chore(c++): remove unique token from FORY_FIELD_CONFIG by @chaokunyang in #3228
- docs(compiler): merge type system doc into schema-idl odc by @chaokunyang in #3258
- chore: fix bump version and add rust/comiler auto release by @chaokunyang in #3257
- docs: move language impl reference to a new doc by @chaokunyang in #3261
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
- @xflcx1991 made their first contribution in #3230
Full Changelog: v0.14.1...v0.15.0-rc2