Volo 0.3.2 版本发布

Volo 0.3.2 版本中,除了常规 bugfix 之外,还有多处改进。尤其是,有社区贡献者为我们带来了重要的 feature,非常感谢他们。

Thrift 异步编解码 Trait 支持

@ii64#123 中为我们带来了 Thrift 异步编解码 Trait 的定义和 Binary、Apache Compact Protocol 的实现,在此之前他还为 Pilota 贡献了编解码的底层实现!

gRPC graceful shutdown 支持

@iGxnon#127 中为我们带来了 gRPC graceful shutdown 的支持!

metainfo 与 faststr 版本更新

在这个版本中,我们更新了 metainfo 和 faststr 的版本,使得 metainfo 也支持了 faststr,以在尽可能多的场景下减少内存分配和拷贝,以优化性能。

faststr 是我们参考 smol_str 改进的一个 string 库,实现了 immutable string 的零开销 clone。

同时 FastStr 有一个不兼容变更:之前是为所有AsRef<str>实现了From,但是这样做会导致直接使用into会带来额外的内存分配和拷贝开销。 在新的 0.2 版本中,我们只为 'static strStringArc<str>Arc<String>四种类型实现了From,这四种类型调用 into 到 FastStr 是零开销的,通过这种形式避免用户不经意间带来的内存分配和拷贝问题。

旧版本的From本质上就是调用了FastStr::new(s),因此出现不兼容问题的话,直接改为显式调用FastStr::new即可。

Pilota 中 Protobuf 编解码支持生成 FastStr

通过在 Pilota 中支持为 Protobuf 编解码生成 FastStr,我们可以将我们的性能优化能力带到 PB 和 gRPC 中。

升级后,需要把原先引入的use prost::Message;改为use pilota::prost::message::Message;即可。

完整 Release Note

完整的 Release Note 可以参考:Volo Changelog