从零手写Celly:.NET版CEL引擎诞生

Building a native C# implementation of CEL engine

我亲手从零开始编写了Celly,这是.NET平台上首个原生C#实现的Google CEL引擎,并完整通过了2456项官方一致性测试。在开发过程中,我坚持纯托管代码原则,拒绝WASM或原生绑定,最终意外孵化出.NET版的protovalidate库。Celly不仅性能卓越,在复杂表达式上甚至超越了Go参考实现,让.NET开发者也能安全高效地运行用户自定义策略。

CEL给出的语言功能刚好足以表达真实逻辑,却刻意保留了所有可能带来危险的部分,这种克制正是它的核心价值所在。
  1. akshayshah

    我有点惊讶(不带任何正面或负面倾向),文章居然没提用 AI 来写这个移植版本——尤其是 CEL 和 protovalidate 都有相当完善的合规测试框架。这个项目本该是当下 AI 工具的最佳应用场景。

    这点遗漏尤其明显,因为文章的大部分读起来都像是 AI 写的。(Pangram 也这么认为,虽然这话分量有多重另说。)

  2. nu11ptr

    > 它是 Kubernetes 准入策略、Envoy 的 RBAC 规则、Google Cloud IAM 条件以及 gRPC 的 protovalidate 背后的语言

    有个很小的细节要挑刺:据我所知,protovalidate 来自 Buf,而不是 Google。虽然 protovalidate 确实可以通过向后兼容性(以及 Buf 的 ConnectRPC)与 gRPC 配合使用,但说成是“gRPC 的 protovalidate”可能会让人误以为它出自 Google。

    免责声明:我与 Buf 或 Google 均无任何关联。

  3. xeonax

    这似乎是个在我的 PLM/PDM 项目中保护状态转换的好方法。

同日更多故事

2026-07-30