< 返回版块

Mike Tang 发表于 2024-09-30 10:08

Pot - 一种新的自描述、安全、紧凑的数据序列化格式

Pot是一种自描述、安全、紧凑的数据序列化格式。它最大的节省空间特点是在序列化时不会重复出现多次相同的符号/标识符。当序列化结构体数组时,这种特性可以带来显著的空间节省。上述示例展示了在序列化1000个包含100个条目的LogArchive对象时,Pot占用的空间(2,627,586字节)明显小于其他自描述格式如CBOR和消息包(msgpack)。尽管Pot不如一些非自描述格式(例如Bincode)紧凑,但它仍然具有很好的空间效率,同时保留了自描述的优势,这使得它在生产环境中运行时安全可靠。

https://docs.rs/pot/

Postcard - 针对Serde设计的无标准库序列化和反序列化库

Postcard是一个针对Serde设计的无标准库序列化和反序列化库。它的主要设计目标是为受限环境(如嵌入式系统)提供支持,同时支持大部分Serde特性,允许用户自定义序列化和反序列化行为。

Postcard从1.0.0版本开始,采用了文档化和稳定的线格式。它对大于8位的有符号无符号整数使用了变长整数编码。Postcard支持Flavors系统,允许通过插件的方式修改序列化或反序列化的处理方式。

该库提供了多种序列化和反序列化函数,支持将数据序列化或反序列化为各种目标,如Vec、slice、I/O流等,并可选择是否启用COBS编码或CRC32校验。Postcard还支持无堆分配。

Postcard采用了Apache 2.0或MIT两种开源许可,欢迎贡献代码。

https://docs.rs/postcard/

serde-brief - 种自描述的二进制格式

serde-brief是一种自描述的二进制格式,类似于JSON但更高效。它目前处于不稳定状态。该格式包含了数据结构的信息,从而无需额外的模式就可解析数据,支持向后兼容性,但也会增加数据大小和解析开销。

文档定义了该格式支持的数据类型及其编码方式,如null、布尔值、有无符号整数(使用VarInt编码)、浮点数、字节数组、字符串等。整数使用ZigZag编码来支持有符号整数。

该格式使用不同的类型字节来区分序列(SeqStart/SeqEnd)和映射(MapStart/MapEnd),可嵌套使用。对于Rust的数据类型,该文档解释了如何将它们映射到serde-brief格式,包括结构体、枚举、集合等,有两种模式:一种使用字段名字符串作为键,另一种使用无符号整数索引作为键。

它具有以下设计目标和特性:

  1. 与Rust生态系统良好集成,支持serde派生实现的所有功能。
  2. 具有向后兼容性,可以轻松添加或重新排序字段/变体。
  3. 支持#![no_std]和std环境。
  4. 资源高效,高性能、低内存占用。
  5. 跨架构无缝通信。
  6. 经过良好测试,确保安全性。

https://github.com/FlixCoder/serde-brief/blob/main/docs/format-specification.md

--

From 日报小组 Mike

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页