Apache Fory 团队很高兴地宣布 0.13.1 版本发布。此版本包含来自 11 位不同贡献者的 28 个 PR。请参阅安装页面了解如何获取适用于您平台的库。
✨ 亮点
- 🔧 支持 Rust 枚举变体以及元组/结构体风格枚举的 schema 演进
- 🎯 支持 Rust 元组序列化和 schema 演进
- ⏭️ 支持 Rust skip 宏属性
🎨 枚举 Schema 演进
Fory v0.13.1 在兼容模式下增加了全面的枚举 schema 演进支持,支持所有三种变体类型(Unit、Unnamed、Named):
- ➕ 添加/删除变体:未知变体回退到
#[fory(default)] - 📝 添加/删除字段:命名变体支持字段演进,自动使用默认值
- 🔄 修改元素:未命名变体处理元素数量变化(多余的被跳过,缺失 的使用默认值)
- 🔀 变体类型更改:在 Unit/Unnamed/Named 之间转换,自动使用默认值
// 版本 1
#[derive(ForyObject)]
enum Command {
#[fory(default)]
Noop,
Execute { name: String, args: i32 },
}
// 版本 2 - 添加了字段和新变体
// 同时支持 `fory(default)` 和标准 `default`
#[derive(Default, ForyObject)]
enum Command {
#[default]
Noop,
Execute { name: String, args: i32, env: String }, // 添加了 'env'
Cancel { reason: String }, // 新变体
}
// V1→V2: 缺失的 'env' 获得默认值 ""; Cancel→Noop 回退到 V1
// V2→V1: 额外的 'env' 被跳过; Cancel→Noop 回退
📦 元组 Schema 演进
元组(1-22 个元素)现在在兼容模式下支持长度演进:
- 📏 长度变化
