cel-expr/cel-spec

Common Expression Language -- specification and binary representation

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 37 minutes ago
Type:Documentation / SpecificationCategory(s):Programming Languages & CompilersLanguages & Runtimes
Added to GitGenius on September 17th, 2026
Created on September 4th, 2017
Open Issues & Pull Requests: 80 (+0)
GitHub issues: Enabled
Number of forks: 305
Total Stargazers: 3,981 (+0)
Total Subscribers: 46 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 6.2 days
Mean response time: 137.8 days
90th percentile: 193.2 days
Tracked items: 47

Most active contributors

Sign in to see contributor activity.

How this project is maintained

87% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Three people close 83% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 30
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 468 days
Stale 30+ days: 27
Stale 90+ days: 24

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • 1.0 (1)
  • enhancement (1)
  • question (1)

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

CEL is a specification and binary representation for a common expression language designed to enable interoperability across different applications and programming languages.

CEL addresses the need for a shared expression evaluation semantics in systems where multiple applications must reason about policies and data consistently. The language implements a non-Turing-complete, mutation-free design that evaluates in linear time, making it orders of magnitude faster than sandboxed JavaScript while remaining safe for untrusted input. The specification defines both a textual syntax similar to C/C++/Java/JavaScript and a binary representation via protocol buffers, allowing expressions to be compiled ahead of time in a control plane or just before evaluation in a data plane. The language is designed for embedding, with extensibility through a context mechanism that allows host applications to provide custom functions and typed variables, typically as protobuf messages.

CEL suits organizations with complex infrastructure needing common tooling for security policies and cross-platform protocol definitions. It is particularly valuable where expressions must persist or cross process boundaries, since the specification maintains canonical and wire-compatible protocol buffer definitions for ASTs. The project is most appropriate for teams building platforms that need to accept user-defined policies or conditions without the performance overhead or security complexity of general-purpose scripting languages. The specification explicitly prioritizes being small, fast, and developer-friendly, with syntax approachable to developers familiar with mainstream languages.

The project receives most of its issue reports from outside users rather than the core team, reflecting a substantial base of real-world adopters. Responses to issues and pull requests typically arrive within one to two weeks.