数据交换格式 Cap’n Proto 添加了支持 Windows 等新特性

  • Sergio De Simone
  • Rays

2017 年 5 月 15 日

话题:语言 & 开发

距首次发布近两年半后,数据交换格式和 RPC 系统 Cap'n Proto发布了 0.6 版,其中添加了对 Windows 支持,并强化了安全,此外还有其它一些新特性。

据 Cap'n Proto 的作者Kenton Varda介绍,发布上的显著延迟并非是疏于开发,事实上该项目一直在进行开发,这要归因于并未优先考虑将其父项目Sandstorm.io移植到 Windows 平台。现在由于 Microsoft 编译器提供了对当代 C++ 的支持,向 Windows 平台的移植变得容易了,其中涉及序列化、动态 API、模式解析器、RPC 和工具,以及使用输入完成接口(I/O completion port)实现的异步 I/O 架构。此外,为维持移植到 Windows 平台移植后的健康性,Cap'n Proto 团队还建立了持续集成

除了全面支持 Windows 平台之外,最新版的 Cap' Proto 还做了一些改进以更安全地面对可能的攻击。其中包括对指针验证的改进,用于在编译时和更彻底的测试中检测整型溢出。

新的 0.6 版对 Cap'n Proto 生态系统添加了两个有用的组件:

  • libcapnp-json。它是一个 JSON 与 Cap'n Proto 的双向转换器,意在简化基于 Cap'n Proto 前端对基于 JSON 前端的集成。
  • libkj-http。它是一个基于异步 I/O 的极简 HTTP 库,目前依然在开发中。

作为一种数据交换格式,Cap'n Proto 无需在内存中编码和解码消息,意在提供比 JSON 或 Protocol Buffers 等广为采用的格式更优的解决方案。在实现中,Cap'n Proto 使用了类似于编译器所使用的方式,以二进制格式存储数据,但是以与平台无关的方式实现的。Cap'n Proto 的创立者 Kenton Varda 在 Google 工作期间也是Protocol Buffers(Protobuf)的作者,他指出:

Cap’n Proto 源自于对 Protobuf 的多年工作经验、对用户反馈的倾听以及对如何给出更好实现的考虑。

Cap'n Proto 还给出了一些规定,以确保在格式中添加新字段时的向后兼容性。其它主要特性包括:增量处理消息的能力(因为外部对象完全先于内部对象出现)、对任一字段的随机访问(甚至在消息被完全接收之前),以及生成更小的代码和运行时库。

查看英文原文: Cap’n Proto Interchange Format Adds Windows Support and Many New Features

语言 & 开发