<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/building-a-native-c-implementation-of-cel-engine-wk392nkpt" -->

---
title: Building a native C# implementation of CEL engine
description: Celly is a from-scratch, pure managed C# implementation of Google&#x27;s Common Expression Language (CEL) that passes all 2,456 official conformance tests. CEL is a...
canonical: https://daily.dev/posts/building-a-native-c-implementation-of-cel-engine-wk392nkpt
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Building a native C# implementation of CEL engine | daily.dev
og:description: Celly is a from-scratch, pure managed C# implementation of Google&#x27;s Common Expression Language (CEL) that passes all 2,456 official conformance tests. CEL is a...
og:url: https://daily.dev/posts/building-a-native-c-implementation-of-cel-engine-wk392nkpt
og:image: https://api.daily.dev/og/posts/WK392nkpT.png
og:image:alt: Building a native C# implementation of CEL engine
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Building a native C# implementation of CEL engine

**[Hacker News](https://daily.dev/sources/hn)** · 9 min read · 0 upvotes · 0 comments

## Summary

Celly is a from-scratch, pure managed C# implementation of Google's Common Expression Language (CEL) that passes all 2,456 official conformance tests. CEL is a safe, non-Turing-complete expression language used in Kubernetes admission policies, Envoy RBAC, and Google Cloud IAM. The author explains why CEL is preferable to embedding scripting languages or hardcoding logic, then details the implementation challenges: Unicode-correct string operations, nanosecond timestamp precision, cross-type numeric comparisons, and commutative error-absorbing boolean operators. Performance highlights include a rope-style list for O(1) comprehension accumulation that makes Celly faster than cel-go on filter/map benchmarks. The project also produced the first .NET protovalidate library (Celly.Protovalidate), passing all 2,872 conformance cases, enabling protobuf message validation via CEL rules declared in .proto files. Available on NuGet.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://bsid.io/writing/building-a-cel-engine-for-net>

## Community take

How the wider developer community reacted, aggregated from 2 discussions and 20 comments across hackernews (as of 2026-07-30).

**TL;DR:** The community is largely skeptical, focusing on whether the code and writeup were AI-generated rather than the technical merits of the port itself; there is also a minor factual debate about protovalidate's origins.

**Sentiment:** 20% positive · 30% mixed · 50% skeptical

**The case for**

- Commenters note the project is well-suited for AI-assisted porting given CEL and protovalidate's extensive conformance test harnesses.
- One commenter sees potential practical use for guarding state transitions in PLM/PDM projects.

**The pushback**

- Multiple commenters believe both the code and the article writeup are AI-generated without disclosure, which they find disrespectful to readers.
- The article incorrectly attributes protovalidate to Google/gRPC rather than Buf.

**By community**

- hackernews (skeptical): Discussion is dominated by skepticism about undisclosed AI authorship of both the code and the writeup, with a secondary thread correcting a factual attribution error about protovalidate.

**Hottest debate:** Whether it is acceptable to publish AI-generated code and writing without disclosure.

**Open questions**

- Was AI actually used to write the port and the article, and if so, why wasn't it disclosed?
- Does protovalidate require custom middleware for every language, limiting its practical portability?

**Highlights**

> I'm surprised (without any particular positive/negative valence) that the article doesn't mention using AI to write the port - especially since both CEL and protovalidate have fairly extensive conformance testing harnesses. The project should be right in the sweet spot for today's tools. The omission is especially striking since most of the article sounds AI-authored to me. (Pangram agrees, for what that's worth.)
> — [akshayshah on hackernews · 3 comments](https://news.ycombinator.com/item?id=49112172)

> I find it’s incredibly rude to subject coworkers or members of the public to reading vibe slop. I don’t mind it under either of two conditions: 1. The slop is used as a starting point only - then thoroughly reviewed and edited to meet a human quality level 2. The article discloses up front that it is AI slop so I can decide if I want to spend my valuable time engaging with it.
> — [nxc18 on hackernews](https://news.ycombinator.com/item?id=49113180)

> The code is also clearly all vibecoded. I think this is the usual we get these days: "Show HN: I built..." where in fact author did write neither the code nor the writeup.
> — [progbits on hackernews · 1 comments](https://news.ycombinator.com/item?id=49112427)

> > It’s the language behind Kubernetes admission policies, Envoy’s RBAC rules, Google Cloud IAM conditions, and gRPC’s protovalidate Very small nitpick, but AFAIK protovalidate comes from Buf, not Google. While protovalidate DOES work with gRPC via backward compatibility (but also Buf's ConnectRPC), saying "gRPC's protovalidate" probably makes people think it came from Google. Disclaimer: I have no affiliation with either Buf or Google.
> — [nu11ptr on hackernews · 2 comments](https://news.ycombinator.com/item?id=49111703)

**Source threads**

- [hackernews](https://news.ycombinator.com/item?id=49062998) · 3 points · 0 comments
- [hackernews](https://news.ycombinator.com/item?id=49074842) · 38 points · 20 comments

## Similar posts on daily.dev

- [Google Open-Sources the Common Expression Language for Python](https://daily.dev/posts/google-open-sources-the-common-expression-language-for-python-nc2x0hyw3) · InfoQ · 1 upvotes · 0 comments
- [Announcing CEL-expr-python: the Common Expression Language in Python, now open source](https://daily.dev/posts/announcing-cel-expr-python-the-common-expression-language-in-python-now-open-source-wuz9idgyf) · Google Open Source Blog · 0 upvotes · 0 comments

---

Tags: [#backend](https://daily.dev/tags/backend), [#c#](https://daily.dev/tags/c#)

[View this post on daily.dev](https://daily.dev/posts/building-a-native-c-implementation-of-cel-engine-wk392nkpt)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Building a native C# implementation of CEL engine","url":"https://daily.dev/posts/building-a-native-c-implementation-of-cel-engine-wk392nkpt","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/building-a-native-c-implementation-of-cel-engine-wk392nkpt"},"datePublished":"2026-07-30T17:27:00.149Z","dateModified":"2026-07-30T19:10:54.126Z","description":"Celly is a from-scratch, pure managed C# implementation of Google's Common Expression Language (CEL) that passes all 2,456 official conformance tests. CEL is a...","image":"https://media.daily.dev/image/upload/s--P4t4XyoV--/f_auto/v1722860399/public/Placeholder%2001","thumbnailUrl":"https://media.daily.dev/image/upload/s--P4t4XyoV--/f_auto/v1722860399/public/Placeholder%2001","isAccessibleForFree":true,"articleSection":"Hacker News","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Hacker News","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn","url":"https://daily.dev/sources/hn"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/building-a-native-c-implementation-of-cel-engine-wk392nkpt","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"backend,c#","timeRequired":"PT9M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Hacker News","item":"https://daily.dev/sources/hn"},{"@type":"ListItem","position":3,"name":"Building a native C# implementation of CEL engine"}]}
```

