cel-expr/cel-go

Fast, portable, non-Turing complete expression evaluation with gradual typing (Go)

View on GitHub ↗Jump to charts ↓Open shareable report →

cel-expr/cel-go has 3k+ stars and 300+ forks on GitHub, is written in Go, and was last pushed on Oct 16, 2026. Data as of . Signed-in members get hourly updates — create a free account.

Summary Information

Updated 23 minutes ago
Added to GitGenius on September 22nd, 2026
Created on March 9th, 2018
Open Issues & Pull Requests: 70 (+0)
GitHub issues: Enabled
Number of forks: 315
Total Stargazers: 3,124 (+0)
Total Subscribers: 36 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 21.5 hours
Mean response time: 65.8 days
90th percentile: 90.9 days
Tracked items: 126

Maintainer activity

2 people did triage or write work on this repository in the last 12 months.

Counts unlabeled, assigned, unassigned, milestoned, demilestoned, locked, unlocked over the last 12 months. These are issue and pull request events that require triage or write permission. Commits and code review are not counted. labeled and renamed are excluded because GitHub issue forms record the issue author as the actor. Figures from October 18, 2026. This count is not comparable across projects: each project's automation decides which of these events a person emits. How this is counted.

How this project is maintained

About 16% of issues opened in the past year have never received a reply. 85% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Only 56% of issues opened in the past year have been closed. Three people close 87% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 31
New in 7 days: 4
Closed in 7 days: 16
Avg open age: 545 days
Stale 30+ days: 25
Stale 90+ days: 20

Recent activity

Opened in 7 days: 4
Closed in 7 days: 16
Comments in 7 days: 1
Events in 7 days: 7

Top labels

  • enhancement (7)
  • P3 (3)
  • P2 (1)
  • cleanup (1)
  • question (1)

Most active issues this week

Sign in to see which issues are moving.
Sign in

Detailed Description

cel-go is a Go implementation of the Common Expression Language, a non-Turing complete expression evaluator designed for simplicity, speed, safety, and portability.

CEL solves the problem of safely evaluating untrusted expressions without the overhead of a full scripting language. The tool uses a three-phase approach: first, you define an environment by declaring which variables and functions should be available to expressions; second, you parse and optionally type-check expressions ahead of time to produce a stateless, thread-safe, cachable program; third, you evaluate that compiled program against input data. The language has C-like syntax that reads nearly identically across C++, Go, Java, and TypeScript, making expressions portable across platforms. Type-checking is optional but strongly encouraged, as it uses static analysis to reject semantically invalid expressions and produces metadata that improves performance during evaluation.

CEL is well-suited for scenarios where you need to evaluate user-supplied or configuration-driven expressions in a sandboxed environment without the resource cost of a full scripting language. It supports primitive types, lists, maps, JSON, and Protocol Buffers natively. The tool includes optional macros that expand at parse time, providing bounded iteration and fold operators like all, exists, exists_one, filter, and map for working with collections, as well as a has macro for unified field presence testing across protobuf and dynamic types. This approach avoids adding syntactic complexity to the core language while enabling powerful features.

The project maintains a steady stream of refinements and bug fixes. Development shows consistent attention to performance optimization and correctness, with regular updates addressing edge cases and improving the evaluation pipeline. The maintainers actively engage with the community on design questions and implementation details, particularly around type-checking behavior and macro expansion semantics.