Apache Fory 团队很高兴宣布 0.15.0 版本正式发布。这是一个重要版本,包含来自 17 位贡献者的 144 个 PR。请访问 Install 页面 获取各平台安装方式。
发布亮点
- feat(go): 新增 golang xlang 序列化实现,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3063
- feat(rust): 添加 tuple struct 支持并改进泛型类型处理,作者 @ariesdevil,见 https://github.com/apache/fory/pull/3087
- refactor(rust): 统一 tuple struct 与 named struct 协议,并改进 schema evolution 兼容性,作者 @ariesdevil,见 https://github.com/apache/fory/pull/3092
- feat(java/python/rust/go/cpp): 对齐 xlang 结构体字段序列化的 nullable 元信息,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3093
- feat(java/python/rust/go/cpp): 对齐 xlang 字段的引用与类型信息,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3107
- feat(cpp): 添加
SharedWeak<T>以支持循环引用,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3109 - feat(xlang): 为 xlang 增加无符号整数支持,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3111 and https://github.com/apache/fory/pull/3113
- feat(xlang/java): 重构 Java native 序列化类型系统,并为 xlang 引入流式类型信息,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3153
- feat(xlang): 新增 fory schema idl 与 compiler,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3106
- feat(compiler): 添加 flatbuffers idl 支持,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3184
Go Serialization:首次发布
Apache Fory 0.15.0 是首个正式提供 Go serialization 支持的版本。 该实现提供了高性能序列化能力、跨语言兼容性,以及面向生产环境的配置选项。
关键能力:
- 支持与 Java、Python、
cpp、Rust、JavaScript 的 Cross-language mode(fory.WithXlang(true)) - 默认基于 reflection 的 serialization,并提供可选的实验性 AOT code generation 以优化 hot paths
- 支持 shared/circular object graphs 的 reference tracking(
fory.WithTrackRef(true)+fory:"ref"tags) - 提供用于 schema evolution 的 Compatible mode(
fory.WithCompatible(true)),支持字段新增/删除/重排 - 提供 thread-safe wrapper(
github.com/apache/fory/go/fory/threadsafe)以支持并发工作负载
快速开始
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 基准测试
以下是代表性数据结构上的耗时结果(ns/op,越低越好),用于比较 Fory、Protobuf 与 Msgpack。
| 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 |
序列化数据大小(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 |
注:结果与硬件和实现版本相关。详细说明请参考 Go benchmark 文档: https://fory.apache.org/docs/benchmarks/go/
Fory Schema IDL 与 Compiler:首次发布
Apache Fory 0.15.0 同时带来了 Fory schema IDL 与 compiler toolchain 的首次发布。你可以一次定义 schema,并为多语言生成 native types 与 registration code。
关键能力:
- Schema-first 开发,支持
enum、message、union - Fory-native 字段语义:
optional(nullability)、ref(shared/circular references)、list、map - 支持 Java、Python、Go、Rust 与
cpp的多语言代码生成 - 支持 Protobuf(
.proto)与 FlatBuffers(.fbs)前端,并转换为 Fory IR/codegen - 提供 idiomatic 的生成 API,并包含
to/from byteshelper
快速开始
pip install fory-compiler
foryc example.fdl --lang java,python,go,rust,cpp --output ./generated
package example;
message Person [id=101] {
string name = 1;
optional string email = 2;
}
生成代码示例
foryc 会生成 idiomatic 的 native types,并附带 registration/byte helpers。以上 schema 的生成代码示例如下:
// 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 文档: https://fory.apache.org/docs/compiler/
功能特性
- feat(java): 为 IdentityObjectIntMap 增加配置参数,作者 @jim-parsons,见 https://github.com/apache/fory/pull/3048
- perf: 添加 cpp benchmark 报告,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3051
- feat(python): 为 xlang 序列化增加 Union 类型支持,作者 @zhan7236,见 https://github.com/apache/fory/pull/3059
- feat(go): 新增 golang xlang 序列化实现,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3063
- feat(java): 增强 ForyField 注解,支持 tag ID 以优化序列化,作者 @mchernyakov,见 https://github.com/apache/fory/pull/3021
- feat(cpp): 增加 iterator 容器序列化支持,作者 @zhan7236,见 https://github.com/apache/fory/pull/3068
- refactor(go): 重构 go 错误处理流程,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3069
- feat(rust): 新增 generate_default 属性,默认不再自动生成
Defaulttrait 实现,作者 @ariesdevil,见 https://github.com/apache/fory/pull/3074 - feat(java): 实现跨语言序列化的 Union 类型支持,作者 @zhan7236,见 https://github.com/apache/fory/pull/3062
- perf(go): 增加 go benchmark 并优化性能,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3071
- feat(python): 新增 java/python xlang 测试并对齐协议,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3077
- feat(rust): 增加 i128 与 isize 类型支持,作者 @ariesdevil,见 https://github.com/apache/fory/pull/3080
- feat(rust): 增加 unit 类型与 PhantomData serializer 支持,作者 @ariesdevil,见 https://github.com/apache/fory/pull/3081
- refactor(python): 重构 pyfory serializers 代码结构,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3083
- feat(rust): 增加 union 与 none 类型支持,作者 @ariesdevil,见 https://github.com/apache/fory/pull/3084
- feat(go): 增加 go struct 字段 tag 支持,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3082
- feat(rust): 添加 tuple struct 支持并改进泛型类型处理,作者 @ariesdevil,见 https://github.com/apache/fory/pull/3087
- feat(rust): 支持配置 rust 字段元信息以降低开销,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3089
- feat(cpp): 支持自定义 cpp 字段元信息,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3088
- feat(ci): 将 rust xlang CI 拆分运行以加快整体 CI,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3090
- feat(python): 支持为 python 配置字段元信息,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3091
- refactor(rust): 统一 tuple struct 与 named struct 协议,并改进 schema evolution 兼容性,作者 @ariesdevil,见 https://github.com/apache/fory/pull/3092
- feat(java): 构建带最终 ref_tracking 标记的 Descriptors,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3070
- feat(java/python/rust/go/cpp): 对齐 xlang 结构体字段序列化的 nullable 元信息,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3093
- feat(rust): 为 rust 实现细粒度 ref tracking,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3101
- feat(cpp): 为 cpp 提供细粒度 ref tracking,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3103
- feat(java/python/rust/go/cpp): 对齐 xlang nullable/ref 语义,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3104
- feat(java/python/rust/go/cpp): 对齐 xlang 字段的引用与类型信息,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3107
- feat(java/python/go/rust): 增加循环引用 xlang 测试,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3108
- feat(cpp): 添加
SharedWeak<T>以支持循环引用,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3109 - feat(js): 为 xlang 增加基于 schema 的按字段 nullable 支持,作者 @theharsh999,见 https://github.com/apache/fory/pull/3100
- feat(xlang): 为 xlang 增加无符号整数支持,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3111
- feat(java): long 数组 serializer 支持 varint 编码,作者 @Pigsy-Monk,见 https://github.com/apache/fory/pull/3115
- feat(xlang): 支持无符号类型序列化与字段编码配置,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3113
- perf(go): 优化 go 结构体字段序列化性能,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3120
- feat(java): int 数组 serializer 支持 varint 编码,作者 @Pigsy-Monk,见 https://github.com/apache/fory/pull/3124
- feat(java): 支持 GraalVM native image 的 xlang 序列化,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3126
- refactor(go): 将 go interface 重命名为 any,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3128
- refactor(xlang): 从协议中移除 magic number,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3137
- feat(xlang): 在序列化多字节元素数组时使用 little endian,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3140
- refactor(java/cpp): 将 morphic 重命名为 dynamic,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3142
- feat(xlang): 为 JavaScript 增加无符号整数类型支持,作者 @ayush00git,见 https://github.com/apache/fory/pull/3139
- feat: 为 dart 增加无符号数支持,作者 @ayush00git,见 https://github.com/apache/fory/pull/3144
- feat(xlang/java): 重构 Java native 序列化类型系统,并为 xlang 引入流式类型信息,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3153
- feat(dart): 为无符号整数类型增加 struct serializer 支持,作者 @ayush00git,见 https://github.com/apache/fory/pull/3155
- feat(xlang): 新增 fory schema idl 与 compiler,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3106
- refactor(java): 使用
Types.NONE + 1作为 java native id 基值,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3180 - refactor(compiler): 将 fory compiler 重构为分层架构,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3179
- feat(JavaScript): 为 JavaScript 增加跨语言测试,作者 @theweipeng,见 https://github.com/apache/fory/pull/3161
- feat(dart): 增加 dart CI,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3189
- feat(compiler): 添加 flatbuffers idl 支持,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3184
- feat(java): 增强 java 无符号整数/数组类型系统,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3190
- feat(dart): 为 fory codegen 系统增加 uint 注解类型,作者 @ayush00git,见 https://github.com/apache/fory/pull/3181
- feat(dart): 为 codegen 系统增加 uint struct 支持,作者 @ayush00git,见 https://github.com/apache/fory/pull/3192
- feat(compiler): 为 fory compiler 与 runtime 增加 union 支持,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3195
- feat(cpp): 支持 cpp class 的 private 字段,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3193
- feat(compiler): 为 cpp 生成 getter/setter/has/clear 方法,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3199
- feat(JavaScript): 实现 xlang string,作者 @theweipeng,见 https://github.com/apache/fory/pull/3197
- feat(cpp): 将 fory enum/union 宏放入用户命名空间,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3200
- feat(go): 对 optional 字段使用 option,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3202
- feat(cpp): 让 shared_ptr 默认启用 ref tracking,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3214
- feat(go): 支持 [N]uint 类型数组 serializer,作者 @ayush00git,见 https://github.com/apache/fory/pull/3201
- feat(xlang): 为 type meta 预留 4 个 bit,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3204
- feat(go): 移除 go 的 murmur hash 依赖,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3217
- feat(compiler): 优化生成的 cpp API,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3221
- feat(python): 重构 cython buffer,改用 cpp buffer,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3219
- ci: 加快 windows 上的 setup-python,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3222
- feat(python): 增加 buffer 索引访问器,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3223
- feat(xlang/compiler): 支持 fory/protobuf/flatbuffer idl 的共享/循环引用序列化,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3226
- feat(cpp): 为 compiler 增加
any的多态序列化支持,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3232 - feat(JavaScript): 实现 xlang writer,作者 @theweipeng,见 https://github.com/apache/fory/pull/3234
- feat(xlang): 支持控制嵌套 list/map 元素的 ref tracking,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3236
- feat(compiler): 为生成的 message/union 增加
to_bytes/from_bytes方法,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3238 - refactor(cpp): 为 cpp 使用 snake_case 命名风格,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3240
- perf(go): 优化 go 性能,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3241
- refactor(go): 调整 go buffer uint32/64 写读命名风格,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3242
- refactor(compiler): 重构 fory compiler 命令行,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3243
- feat(compiler): 为 idl 增加 compatible mode,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3245
- feat(go): 为 go 增加 float16 支持,作者 @ayush00git,见 https://github.com/apache/fory/pull/3235
- feat(java): 为 primitive array 生成 java List,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3247
- feat(JavaScript): 实现 xlang Map 与 Collection,作者 @theweipeng,见 https://github.com/apache/fory/pull/3249
- feat(compiler/runtime): 使用 hash 作为生成类 id,并重构用户类型 id 编码,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3248
- refactor(spec): 从协议中移除 xlang 的 language byte,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3256
- refactor(go): 将 go struct serializer 初始化迁移到 struct_init.go,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3255
- feat(protocol): 在 protocol spec 中增加 float8 与 bfloat16,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3259
- feat(compiler): 增加 evolution 选项支持,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3262
- feat(compiler): 更新生成引用代码的 toString/repr/std::fmt::Debug,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3264
- perf: 优化 schema evolution 模式性能,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3260
- feat(JavaScript): 实现 xlang JavaScript 测试用例,作者 @theweipeng,见 https://github.com/apache/fory/pull/3263
- feat(compiler): 为 list 字段增加 list 关键字,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3295
Bug 修复
- fix(docs): 修复 graalvm 链接,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3056
- fix(Rust): 防止在自定义类型(struct/enum)上获取泛型类型元数据,作者 @urlyy,见 https://github.com/apache/fory/pull/3057
- fix(Rust): 将 TypeMeta::bytes 与 TypeMeta::hash 的计算提前到序列化之前,作者 @urlyy,见 https://github.com/apache/fory/pull/3060
- fix(java): 改进 AllowListChecker 的易用性,作者 @Asuka-star,见 https://github.com/apache/fory/pull/3061
- fix(rust): 在类型不匹配错误日志中输出原始注册 ID,作者 @userzhy,见 https://github.com/apache/fory/pull/3067
- fix(java): 修复 CopyOnWriteArrayList 字段序列化,作者 @vybhavjs,见 https://github.com/apache/fory/pull/3079
- fix(go): 修复序列化对象超过 127 时 reference tracking 失败的问题,作者 @jonyoder,见 https://github.com/apache/fory/pull/3086
- fix(java): 修复 GraalVM 下 abstract enum 与 abstract array 序列化,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3095
- fix(rust): 启用 Rust 与 Java 之间 Union 类型跨语言序列化,作者 @ariesdevil,见 https://github.com/apache/fory/pull/3094
- fix: 修复 universal2 macOS wheel 缺少 x86 架构的问题,作者 @madhavajay,见 https://github.com/apache/fory/pull/3114
- fix(java): 优化 graalvm 下 xlang 模式的 type resolver 调用,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3129
- fix(java): 在关闭 compile service 时停止 compilation service,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3138
- fix(python): 修复集合中 null 元素的读写,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3149
- fix: 修复 xlang_serialization_spec.md 中的拼写错误,作者 @ayush00git,见 https://github.com/apache/fory/pull/3151
- fix(java): 在 big endian 平台上为 utf16 string 使用 little endian,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3159
- fix(java): 修复 openj9 sliced string 的 serde,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3160
- fix(cpp): 修复 fory cpp 编译告警,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3188
- fix(cpp): 修复 issue 3229:gcc16 下编译错误,作者 @xflcx1991,见 https://github.com/apache/fory/pull/3230
- fix(java): 修复 java CI 的 maven module 错误,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3265
- fix(go): 防止 readUTF16LE 在奇数字节数时触发 panic,作者 @jonyoder,见 https://github.com/apache/fory/pull/3293
其他改进
- chore: 将发布版本提升到 0.14.0,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3052
- chore: 修复 benchmark 图表,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3053
- docs: 在主 README.md 中添加 cpp 文档,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3055
- chore(deps): 在 /java/fory-test-core 中将 org.apache.logging.log4j:log4j-core 从 2.20.0 升级到 2.25.3,作者 @dependabot[bot],见 https://github.com/apache/fory/pull/3065
- chore(python): 更新 README.md 中的 badge 样式,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3072
- chore(rust): 回退 rust crates 版本,作者 @ariesdevil,见 https://github.com/apache/fory/pull/3075
- docs(cpp): 为 CPP 文档中的 CMake 示例增加 MSVC 兼容性,作者 @Eiskomet,见 https://github.com/apache/fory/pull/3078
- chore: 将发布版本提升到 0.14.1,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3096
- docs(go): 新增 go serialization 文档,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3121
- docs(go): 修复 go serialization 文档,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3125
- docs(go): 修复 go 文档中的失效链接,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3127
- docs(go): 补充 go 版本要求,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3134
- docs(go): 补充 go pkg 开发文档,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3135
- docs: 调整文档链接并同步配置,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3136
- docs: 移除冗余的前缀 doc id,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3141
- docs: 新增字段配置文档,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3143
- docs: 修复字段类型文档中的失效链接,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3146
- docs: 修复字段类型元信息文档位置,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3147
- docs: 修复 native 字段类型元信息文档,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3148
- chore(java): 将 java benchmark 迁移到 bench 目录,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3152
- docs: 修复 readme 中的拼写与语法问题,作者 @Howard-aile,见 https://github.com/apache/fory/pull/3156
- docs: 更新 agents.md,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3162
- docs(compiler): 更新 fory compiler 文档,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3183
- docs: 修复 protobuf 文档,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3185
- docs: 补充缺失的 protobuf-idl.md,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3186
- docs(cpp): 新增 cpp polymorphism 文档,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3187
- docs: 修复 README 中的链接,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3212
- chore(cpp): 从 FORY_FIELD_CONFIG 中移除 unique token,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3228
- docs(compiler): 将类型系统文档合并到 schema-idl 文档,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3258
- chore: 修复版本提升流程并增加 rust/compiler 自动发布,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3257
- docs: 将语言实现参考迁移到新文档,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3261
- docs(go): 新增 go benchmark 结果,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3296
- chore: 加速 windows CI,作者 @chaokunyang,见 https://github.com/apache/fory/pull/3297
新贡献者
- @jim-parsons 完成首次贡献,见 https://github.com/apache/fory/pull/3048
- @Asuka-star 完成首次贡献,见 https://github.com/apache/fory/pull/3061
- @userzhy 完成首次贡献,见 https://github.com/apache/fory/pull/3067
- @ariesdevil 完成首次贡献,见 https://github.com/apache/fory/pull/3074
- @Eiskomet 完成首次贡献,见 https://github.com/apache/fory/pull/3078
- @vybhavjs 完成首次贡献,见 https://github.com/apache/fory/pull/3079
- @jonyoder 完成首次贡献,见 https://github.com/apache/fory/pull/3086
- @theharsh999 完成首次贡献,见 https://github.com/apache/fory/pull/3100
- @madhavajay 完成首次贡献,见 https://github.com/apache/fory/pull/3114
- @Pigsy-Monk 完成首次贡献,见 https://github.com/apache/fory/pull/3115
- @ayush00git 完成首次贡献,见 https://github.com/apache/fory/pull/3139
- @Howard-aile 完成首次贡献,见 https://github.com/apache/fory/pull/3156
- @xflcx1991 完成首次贡献,见 https://github.com/apache/fory/pull/3230
完整变更日志: https://github.com/apache/fory/compare/v0.14.1...v0.15.0
