用途:Syrup 是 OCapN(对象能力网络)使用的二进制序列化格式,核心特性是规范化编码——同一数据始终序列化为相同字节,因此适合内容寻址、数字签名与 CapTP 能力消息传输。
类型编码:布尔用 t/f;正整数写作 42+,负整数 123-;字节串 <len>:<bytes>(如 3:cat);字符串 <len>"<utf8>;符号 <len>'<utf8>;浮点 F<4字节>、双精度 D<8字节>;列表 [...+];字典 {键值...};集合 #...$;记录 <<label><args>>。
规范化保证:字典键按序列化字节排序,集合元素按序列化字节排序,字典不允许重复键,因此 hash(encode(x)) == hash(encode(y)) 当且仅当 x == y。解码器还向后兼容 Bencode 与规范 S 表达式。
实现与用法:提供 Python、Guile Scheme、Racket 实现。Python 可 gh repo clone ocapn/syrup 后从 syrup/impls/python 导入 syrup_encode、syrup_decode、Symbol、record;Guile 将 syrup.scm 放入 load path 后 (use-modules (syrup));Racket 通过 raco pkg install 安装,支持 #:marshallers 自定义类型编组。命令示例:python3 -c "from syrup import *; print(syrup_encode({'test': 42}))"。
适用场景:CapTP 消息、内容寻址、签名、紧凑存储、跨语言数据交换。限制:资料为格式说明与实现示例,未给出性能、安全审计或版本兼容性等结论;使用前需自行验证实现正确性。