12 个不稳定版本 (4 个破坏性更新)
0.6.0 | 2024年6月13日 |
---|---|
0.5.0 | 2024年5月31日 |
0.4.2 | 2023年12月3日 |
0.4.1 | 2023年7月27日 |
0.1.3 | 2023年2月13日 |
#570 在 解析器实现
每月174次下载
220KB
6K SLoC
alox-48
alox-48(铝氧化物48的缩写)是一个用于反序列化和序列化的crate,同时支持Ruby的Marshal数据格式,使用类似于serde的自定义数据格式。
alox-48旨在提供几乎完美的往返反序列化,但有例外
- 对象链接不被保留。对象链接是Ruby在marshal中压缩数据的一种方式。它们高度依赖于Ruby拥有GC,因此不适合映射到Rust。
- 大数不支持。
为什么使用自定义数据格式
最初这个crate依赖于nightly来扩展serde,使用 min_speciailization
。不幸的是,这有很多缺点,反序列化器经常在有效输入上卡住,而序列化器会输出无效数据。
大多数问题都与符号有关- Ruby使用 @
前缀的符号作为实例变量,但也接受没有前缀的变量,默默地丢弃它们。
我正在开发一个独立的serde适配器,该适配器可以与serde的数据格式与alox的数据格式进行接口,但这看起来将是nightly-only。
依赖关系
~1.1–2MB
~39K SLoC