返回首页
最新
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开发的一系列博客文章的第一篇。
我提交了一个请求,也许这是个错误,但最终被列入黑名单的情况令人怀疑。
我在寻找可以构建和开源的想法。<p>想知道你们认为在未来几年内会变得重要的问题是什么。<p>谢谢!