1作者: volatileint大约 2 个月前原帖
Crunch是我使用现代C++开发的一个工具,用于定义、序列化和反序列化消息。可以将其与protobuf、flatbuffers、bebop和mavLINK等领域进行类比。 我开发Crunch是为了应对我对现有协议接口设计的一些不满。它具有以下特点: 1. 字段和消息级别的验证是<i>必需</i>的。字段在程序中语义上是否正确是嵌入在C++类型系统中的。 2. 序列化格式是一个插件。您可以选择优化读/写速度的序列化格式、类似protobuf的标签-长度-值格式,或者自己编写格式。 3. 消息内置完整性检查。Crunch内置了CRC-16或奇偶校验,您也可以编写自己的检查方式。 4. 无动态内存分配。通过模板魔法,Crunch为所有消息类型和所有序列化协议计算最坏情况长度,并提供一个constexpr API来创建用于序列化和反序列化的缓冲区。 到目前为止,我对Crunch的成果非常满意。我努力使其易于使用,提供了bazel和cmake目标以及详尽的文档。未来的工作包括通过QEMU自动化跨平台集成测试,尽可能多地注册到各种包管理器,以及在其他语言中创建绑定。 希望Crunch能在您的项目中发挥作用!如果您感兴趣,我已经在我的个人资料中写了关于Crunch开发的一系列博客文章的第一篇。