# google/cel-spec

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/google-cel-spec).**

3,673 stars · 285 forks · Starlark · apache-2.0

## Links

- GitHub: https://github.com/google/cel-spec
- Homepage: https://cel.dev
- awesome-repositories: https://awesome-repositories.com/repository/google-cel-spec.md

## Description

The Common Expression Language specification is a formal standard for a non-Turing-complete expression language designed for safe, portable, and fast logic evaluation. It serves as a cross-language logic standard and a declarative policy language, providing a consistent semantic framework for executing boolean expressions and data transformations across different programming environments.

This specification acts as an embedded expression engine that allows applications to integrate portable logic for evaluating user-defined configurations. It is specifically designed to enable safe user-defined configuration and the enforcement of declarative security policies and access control.

The framework covers the standardization of cross-language logic, dynamic predicate evaluation, and the embedding of expression logic within applications. It provides a means to validate expression syntax and define execution environments for consistent type safety and resolution.

## Tags

### Programming Languages & Runtimes

- [Cross-Language Semantic Standards](https://awesome-repositories.com/f/programming-languages-runtimes/cross-language-execution/cross-language-semantic-standards.md) — Execute limited expressions using a common semantic framework to maintain consistent results across different applications and languages. ([source](https://cdn.jsdelivr.net/gh/google/cel-spec@master/README.md))
- [Expression Languages](https://awesome-repositories.com/f/programming-languages-runtimes/expression-languages.md) — Defines a formal standard for a non-Turing-complete expression language used for safe and portable logic evaluation. ([source](https://cel.dev/tutorials/cel-get-started-tutorial))
- [Non-Turing-Complete Languages](https://awesome-repositories.com/f/programming-languages-runtimes/non-turing-complete-languages.md) — Defines a non-Turing-complete execution model to ensure all expressions terminate within predictable timeframes.
- [Abstract Syntax Tree Parsers](https://awesome-repositories.com/f/programming-languages-runtimes/abstract-syntax-tree-parsers.md) — Transform written text into a structured binary representation to improve the efficiency of storage and evaluation. ([source](https://cdn.jsdelivr.net/gh/google/cel-spec@master/README.md))
- [Cross-Language Logic Standardization](https://awesome-repositories.com/f/programming-languages-runtimes/cross-language-logic-standardization.md) — Provides a formal standard for executing non-Turing-complete expressions consistently across different programming environments.
- [Cross-Language Value Mappings](https://awesome-repositories.com/f/programming-languages-runtimes/cross-language-value-mappings.md) — Defines a consistent semantic framework for translating values between host languages and the embedded expression runtime.
- [Embedded Logic Evaluation](https://awesome-repositories.com/f/programming-languages-runtimes/embedded-logic-evaluation.md) — Integrates an expression parser and evaluator to execute portable, restricted logic within a host application.
- [Expression Evaluators](https://awesome-repositories.com/f/programming-languages-runtimes/expression-evaluators.md) — Provides an engine for evaluating logical and mathematical expressions against specific variable bindings. ([source](https://cel.dev/overview/cel-overview))
- [Safe User-Defined Configurations](https://awesome-repositories.com/f/programming-languages-runtimes/safe-user-defined-configurations.md) — Provides a safe way for users to define custom logic that can be validated without compromising host system security.
- [Two-Phase Compilation](https://awesome-repositories.com/f/programming-languages-runtimes/two-phase-compilation.md) — Implements a two-phase pipeline separating the compilation of text into binary format from its final evaluation.

### Security & Cryptography

- [Policy Definition Languages](https://awesome-repositories.com/f/security-cryptography/authorization-policies/policy-definition-languages.md) — Implements a restricted expression syntax specifically for declaring and enforcing security rules and access control policies.
- [Policy Enforcement](https://awesome-repositories.com/f/security-cryptography/enterprise-identity-providers/policy-enforcement.md) — Implements mechanisms for enforcing access rules and constraints based on declarative policy data.
- [Policy-Based Access Control](https://awesome-repositories.com/f/security-cryptography/policy-based-access-control.md) — Enables the enforcement of security permissions based on defined declarative authorization policies. ([source](https://cel.dev))
- [Variable and Function Bindings](https://awesome-repositories.com/f/security-cryptography/security/policies/access-control/authorization-context-rule-definition/evaluation-contexts/variable-and-function-bindings.md) — Implements a binding-based mechanism to resolve expression identifiers using external variables and functions.

### Software Engineering & Architecture

- [Abstract Syntax Tree Specifications](https://awesome-repositories.com/f/software-engineering-architecture/abstract-syntax-tree-specifications.md) — Provides a standardized specification for representing expression syntax as abstract syntax trees for consistent analysis.
- [Boolean Predicates](https://awesome-repositories.com/f/software-engineering-architecture/boolean-predicates.md) — Implements boolean predicates to evaluate inputs against rules and return true/false results. ([source](https://cel.dev))
- [Dynamic Predicate Evaluation](https://awesome-repositories.com/f/software-engineering-architecture/boolean-predicates/dynamic-predicate-evaluation.md) — Computes boolean expressions and data transformations to determine if specific conditions are met during execution.
- [Environment Type Validation](https://awesome-repositories.com/f/software-engineering-architecture/generic-type-definitions/generic-type-resolution/identifier-to-type-resolutions/environment-type-validation.md) — Uses declared environments to validate type safety and identifier existence before evaluating expressions.
- [Environment Declarations](https://awesome-repositories.com/f/software-engineering-architecture/typescript-type-definitions/static-type-checking/expression-type-resolution/environment-declarations.md) — Allows declaring the available variables and functions to ensure consistent type safety and resolution. ([source](https://cel.dev/overview/cel-overview))

### Development Tools & Productivity

- [Contextual Function Embedding](https://awesome-repositories.com/f/development-tools-productivity/custom-configuration-functions/contextual-function-embedding.md) — Extends the expression language by allowing external variables and functions to be passed through a configurable context. ([source](https://cdn.jsdelivr.net/gh/google/cel-spec@master/README.md))
- [Syntax Validation](https://awesome-repositories.com/f/development-tools-productivity/syntax-validation.md) — Provides utilities to verify that expression strings are syntactically correct before evaluation. ([source](https://cel.dev/overview/cel-overview))
