Redian新闻
>
∞% faster,它开源十年后终于发布1.0版本

∞% faster,它开源十年后终于发布1.0版本

公众号新闻
出品 | OSC开源社区(ID:oschina2013)
Cap'n Proto 是一种速度极快的数据交换格式和 capability-based RPC 系统,于 2013 年 4 月开源发布。时至今日,Cap'n Proto 1.0 终于发布,这是一个长期支持版本。
Cap'n Proto 项目作者是 Kenton Varda —— Protocol Buffers version 2 的主要开发者。他表示,Cap'n Proto 是其多年来开发 Protobufs、听取用户反馈并汲取经验思考反思后的成果结晶。
目前他已离开谷歌,因此 “Cap'n Proto 不隶属于谷歌,也从未隶属于谷歌”。基准测试结果表明,Cap'n Proto 比 Protocol Buffers 快无限倍。
自上一个版本 v0.10 以来,新版本的一些亮点内容包括:
  • 针对 Cap'n Proto RPC 性能的一系列优化。其中包括减少 RPC 实现和 KJ I/O 框架的内存分配量,增加从 RPC 协议中省略某些信息以减少流量的功能,以及更好地缓冲一起发送和接收的小信息以减少系统调用。

  • Breaking change: 在此之前,服务器可在调用完成后调用 context.allowCancellation (),选择允许取消 RPC。在 1.0 版中,选择取消 RPC 可通过模式注解(c++.capnp 中定义的 allowCancellation 注解)来实现;模式级注解可以一次对整个文件进行设置。此外,动态选择加入需要大量的簿记工作,在实际使用中会对性能产生明显影响;而改用注释则能提高性能。对于从未使用 context.allowCancellation () 的用户来说,升级到 1.0 版时无需做任何更改,默认情况下仍不允许取消。(如果受到影响,你将看到编译错误。如果没有编译错误,则无需担心)。

  • KJ 现在在有 kqueue () 的系统(MacOS 和 BSD 衍生版本)上使用它来处理异步 I/O。在 Linux 上,KJ 一直使用 epoll,但在其他类 Unix 平台上,KJ 一直使用较慢的 poll ()-based 方法。

  • KJ 的 HTTP 客户端和服务器实现现在支持 CONNECT 方法。

  • 引入了一个新类 capnp::RevocableServer,以帮助在生命周期不受包装器控制的对象周围导出 RPC 包装器。

  • 以及一些更小的 bug 修复和改进。详情可参阅 PR 历史记录。

在 1.0 版本发布后,2.0 版本的工作也开始提上日程。根据规划,v2.0 旨在对 Cap'n Proto 的 C++ API 及其配套的 KJ C++ 工具包库做出一些改变;以及做一些全面的向后兼容改动以修复一些问题,并改善团队中开发人员的体验。目前的一些想法包括:
  • 需要一个支持 C++20 甚至 C++23 的编译器。Cap'n Proto 1.0 仅需要 C++14。

  • 需要一个支持 C++20 协程的编译器。

  • Cap'n Proto 的 RPC 应用程序接口、KJ 的 HTTP 应用程序接口和其他程序接口很可能会进行修改,使其更加的 coroutine-friendly。

  • kj::Maybe 将变得更符合人体工学。它将不再重载 nullptr 来表示值的缺失,将引入 kj::none 来代替。KJ_IF_MAYBE 将不再生成指针,而是一个引用(这是利用 C++17 特性实现的一种技巧)。

  • 将放弃对禁用异常情况下的编译的支持。

  • 将放弃对 no-RTTI 模式和其他会造成维护负担的特殊模式的支持。

  • 可能会修改 KJ 的引用计数方法,因为目前的设计已被证明对许多用户来说并不直观。

  • 将修复 kj::AsyncOutputStream 中一个长期存在的设计缺陷,目前 EOF 信号是通过销毁流来发出的。取而代之的是将添加一个返回 Promise 的显式 end () 方法。在不调用 end () 的情况下销毁数据流将发出错误的断开信号。(还想对 KJ 流 API 进行其他一些美观改进)。

  • 重新设计几个核心 I/O API,以便更好地适应 Linux 新的 io_uring 事件通知范式。

  • RPC 实现可能会改为默认允许取消。

值得注意的是,目前还没有计划对序列化格式或 RPC 协议进行任何向后不兼容的更改。所讨论的更改仅影响 C++ API。用其他语言编写的应用程序完全不受这一切的影响。
正式的 2.0 版本短时间内不会推出发布,或许也要等上几年。
更多详情可查看官方公告https://capnproto.org/news/2023-07-28-capnproto-1.0.html

往期推荐



Linus怒批AMD fTPM:愚蠢、破玩意儿、建议禁用!
程序员神器VS Code再提速,将内置JS减小20%!
龙芯3A6000流片成功,性能堪比10代酷睿



这里有最新开源资讯、软件更新、技术干货等内容

点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
李嘉诚又火了!北京豪宅项目22年后终开盘,增值达50倍!不忍|亿万富翁被困深海后终于发出求救信号!但生命倒计时已经开始?泰坦尼克诅咒再现今天,六四希腊苏达湾(Souda Bay),黎明前静悄悄不止于city,walk式旅游2.0版本来了幽谷中的见证|患有高血压,一年后终有药可吃李彦宏:文心大模型4.0版本年底发布谁还在买?《那个游戏5》发售10周年!《哈迪斯》1.0版本上线3周年!新增多种孕育智能模式!育儿网大预言模型产品「智育小助理」3.0版本惊喜发布恶魔!美8岁女童命案近50年后终于侦破 凶嫌竟是…小可怜远行记 冷明1折入!穿过国际重奢𝘼𝙦𝙪𝙖𝙨𝙘𝙪𝙩𝙪𝙢的人,才是真正的有品!中国式家庭,有2.0版本了Jetbrains发布全新 Rust IDE 命名RustRover,Linux 等可免费下载她卖鸡蛋当漂流瓶,万万没想到,72年后终于有了回音:稍晚几年,问题不大!1折入!穿过国际重奢𝘼𝙦𝙪𝙖𝙨𝙘𝙪𝙩𝙪𝙢的男人,才会明白什么是品质!1折入!英国重奢𝘼𝙦𝙪𝙖𝙨𝙘𝙪𝙩𝙪𝙢,专柜同款Polo衫,舒适、透气、高品质!开源十年,终于发布正式版了!MySQL 调整版本控制模型,发布首个创新版本 8.1.0Bun发布1.0正式版本,Zig编写的高性能 “全家桶”JavaScript运行时期盼多年终于商品化!乐高集团正式发布1.09米长的星球大战克隆人战争20周年纪念套装 75367 UCS狩猎级共和国攻击巡洋舰唏嘘!华裔学生开车避动物撞花坛惨死, 父母怒告政府苦熬7年后终获2.5亿赔偿梦中的那片海ep 56 is too long to view it now.火了172年!国际重奢𝘼𝙦𝙪𝙖𝙨𝙘𝙪𝙩𝙪𝙢来了,又好穿又有品!!用孩子生日当投注号码 多年后终于中了50万!骚乱后,马克龙考虑拿它开刀!大河,小镇。王宝强重回“现实主义”!曾被媒体讨伐、轰动全国的「铁笼孤儿」,5年后终于有人说出真相!​孩子们都需要这样的读物,用它开启名著阅读再适合不过了![评测]CoolerMaster MasterAir MA824 Stealth 评测爆火Llama 2一周请求下载超15万,有人开源了Rust实现版本她的细胞遭“盗用”,70年后终达成一项和解协议长岛海滩连环杀手10余年后终落网!涉嫌杀害10名应召女郎 包括1亚裔男自研空悬更新!理想举行魔毯空气悬架技术日,2.0版本即将推送Pinterest 使用 Kubernetes 和 Helix 构建下一代异步计算平台 Pacer
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。