cel-expr

    cel-expr/cel-go

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

    backend
    cel
    expression
    expression-evaluator
    expression-language
    expression-parser
    Go
    Apache-2.0
    3.1K stars
    315 forks
    3.1K GitHub watchers
    Updated Oct 29, 2026
    View on GitHub

    Build with Backblaze B2

    SDKs, agent skills, IDE extensions, and reference pipelines from Backblaze Labs. All open source.

    Explore Backblaze Labs

    Loading star history...

    Where it stands

    Rank, growth pace and release cadence relative to everything GStars tracks.

    4 releases in the last 90 days, the latest 2 days ago, with 106 contributors on GitHub.

    Gained 8% fewer stars in the last 90 days than in the 90 days before.

    Use Cases & Benefits

    • Implements a fast, portable, non-Turing complete expression evaluation engine with gradual typing in Go.
    • Offers lightweight, safe, and efficient expression evaluation with C-like syntax and optional static type checking.
    • Use for embedding safe, sandboxed expression evaluation in Go microservices handling dynamic JSON or protobuf data.
    • Use for validating and enforcing access control policies with complex logical expressions in distributed systems.
    • Use for building customizable rule engines that evaluate user-defined expressions with partial or incomplete input data.

    Should you depend on it?

    License terms, project hygiene and risks, from GitHub metadata and GStars' snapshots.

    License

    Apache 2.0

    Permissive: commercial use, modification and redistribution are allowed with attribution; includes an explicit patent grant from contributors.

    Community files

    • README: present
    • Contributing guide: present
    • Code of conduct: present

    Watch-outs

    No watch-outs from GStars' checks.

    General guidance from repository metadata, not legal advice. How we score

    From the README

    The Common Expression Language (CEL) is a non-Turing complete language designed for simplicity, speed, safety, and portability. CEL's C-like syntax looks nearly identical to equivalent expressions in C++, Go, Java, and TypeScript.

    A CEL "program" is a single expression. The examples have been tagged as java, go, and typescript within the markdown to showcase the commonality of the syntax.

    CEL is ideal for lightweight expression evaluation when a fully sandboxed scripting language is too resource intensive. To get started, try the Codelab.

    Determine the variables and functions you want to provide to CEL. Parse and check an expression to make sure it's valid. Then evaluate the output AST against some input. Checking is optional, but strongly encouraged.

    Let's expose name and group variables to CEL using the cel.Variable environment option:

    That's it. The environment is ready to be used for parsing and type-checking. CEL supports all the usual primitive types in addition to lists, maps, as well as first-class support for JSON and Protocol Buffers.

    Excerpt from the cel-expr/cel-go README on GitHub (Apache-2.0 license). © its authors.Read the full README on GitHub

    Daily snapshots

    Stars gained per day, and how forks and open issues moved, from GStars' daily snapshots

    Forks

    315+8

    Open issues

    70+8

    Compared with peers in Backend

    Fastest-growing repositories GStars tracks in this cohort for the week of Nov 1, by 7-day star growth

    cel-expr/cel-go compared with Backend repositories by stars, 7-day star growth, health score and last release
    RepositoryStars+7dHealthLast release
    anthropics/skills187.8K+2.9K15—
    DuarteSantos8/openGym19.7K+2.4K602 days ago
    shiyu-coder/Kronos47.0K+2.3K16—
    NationalSecurityAgency/ghidra98.2K+2.3K6414 days ago
    microsoft/VibeVoice56.0K+1.1K29—
    cel-expr/cel-go3.1K—652 days ago
    Category median56.0K+2.3K29—

    Discover Repositories

    Search across tracked repositories by name or description