Embed CEL into your platform so users can write custom security rules or conditions without being able to run arbitrary code.
Write API policy conditions in CEL that evaluate identically across Go, Java, and C++ services.
Use CEL expressions for Firebase-style security rules that decide who can read or write data.
Implement the CEL specification in a new programming language using the protocol buffer definitions as the shared format.
This is a specification repo, you need a separate language-specific CEL implementation library to actually run expressions.
The Common Expression Language, or CEL, is a small language specification created by Google for evaluating expressions in a safe and consistent way across different applications and programming languages. It is not a full programming language. It is designed specifically for writing conditions and simple logic that can be embedded inside other software systems. The main use cases are security policies and protocol definitions, where different tools or services need to evaluate the same expression and agree on the result. CEL expressions look similar to conditions you might write in C, Java, or JavaScript, such as checking whether an account balance is high enough, but they run in a controlled environment with defined boundaries. A few properties set CEL apart from running arbitrary code. It always finishes in a predictable amount of time, it cannot modify data, and it is not capable of general-purpose computation. These constraints are intentional: they make CEL safe to run in situations where you cannot trust arbitrary user-submitted code, and they allow implementations to run much faster than sandboxed general-purpose languages. CEL is built to be embedded into other applications. The software that hosts CEL can supply its own functions and data types, extending what expressions can reference without changing the core language itself. Google uses it in products like Firebase security rules and across various API policy systems. This repository contains the formal specification for the language and the binary format used to represent compiled expressions, along with protocol buffer definitions for sharing those expressions across services. Multiple language implementations exist separately.
← google on gitmyhub — every repo by this author, as a profile.
Verify against the repo before relying on details.