Skip to content

Releases: google/cel-go

Release v0.27.0

30 Jan 04:26
450089b

Choose a tag to compare

Release Summary

This release focuses on improving developer tooling and stability. Key highlights include significant enhancements to the REPL (YAML configuration support and parse-only evaluation), the addition of cost estimation for regex operations, and improved test coverage reporting.

On the stability front, this release addresses race conditions in reference types, improves namespace resolution, and ensures formatting directives align strictly with the CEL specification.

Note: This release includes a breaking change regarding how types are handled as variables. Please review the "Breaking Changes" section below.

⚠ Breaking Changes

Remove types as variables: The logic for handling types has been relaxed to support safe rollout of feature packages which introduce new types whose names may collide with existing variables. Please review your policies if you relied on types behaving strictly as variables in previous versions. PR #1262

Features & Enhancements

REPL & Tooling

  • YAML Configuration: The REPL now supports reading and writing YAML environment configurations. PR #1250

  • Parse-Only Mode: Added parse-only evaluation capabilities to the REPL. PR #1254

  • Test Coverage: Introduced logic for CEL test coverage calculation and updated the reporter to handle error/unknown scenarios.PR #1209 & PR #1215

Core Library

  • Regex Costing: Added support for cost estimation and tracking within the regex library. PR #1200

  • JSON Type Exposure: Exposed CEL JSON types to assist developers in converting to native values. PR #1261

  • Policy Composition: Source information is now preserved during CEL policy composition, aiding in debugging. PR #1253

Extensibility:

  • Updated extension option factory to resolve by ID (#1249).

  • Refactored match output compiling to accept user-defined logic (#1246).

  • Exposed Match source ID to callers (#1227).

Build & Maintenance

  • Bazel: Migrated to use Bazel module only and improved configuration for dependent builds. PR #1231 & PR #1228

  • Cleanup: Removed strcase dependency, removed AppEngine code from REPL, and performed general linting. PR #1230, #1216, #1251

Bug Fixes

  • Concurrency: Fixed a race condition in the checker regarding reference types. PR #1224

  • Namespace Resolution: Addressed an issue with namespace resolution. PR #1256

  • Spec Compliance: Fixed formatting directives to fully support requirements documented in the cel-spec. PR #1232

New Contributors

Full Changelog: v0.26.1...v0.27.0

Release v0.26.1

27 Aug 23:16
8e7beb6

Choose a tag to compare

What's Changed

  • Comprehension nesting limit typo, allow nesting limit validator to accept doubles as limits by @l46kok in #1196
  • Minor compatibility fixes for google3-import. by @jnthntatum in #1198
  • Bump the npm_and_yarn group across 1 directory with 2 updates by @dependabot[bot] in #1197
  • Init function bindings on environment init by @beldmian in #1199
  • Support variable descriptions in the AI prompt template by @TristonianJones in #1205
  • Add support for nested element type by @MisLink in #1190
  • Support unwrapping unknown implementations of proto.Message by @srikrsna in #1207

New Contributors

Full Changelog: v0.25.1...v0.26.1

Release v0.26.0

14 Jul 20:49
b023645

Choose a tag to compare

New Features ✨

Bug Fixes 🐛

  • Fix lastIndexOf behavior against an empty string in strings extension by @l46kok in #1173
  • Fix container setting for cel test all types example in online REPL by @l46kok in #1182
  • fix(checker): Correct Sprintf argument count by @cuishuang in #1185

Test Updates 🧪

Documentation 📚

Dependency Updates ⬆️

  • Bump the npm_and_yarn group across 1 directory with 2 updates by @dependabot[bot] in #1188

Release v0.25.0

22 Apr 22:57
9d29b7f

Choose a tag to compare

Features & Enhancements

This release introduces features for richer configuration-based CEL, AI prompt generation from config files, additional documentation, and 3x performance when evaluating traced / state-tracking expressions. This release also introduces a unit test runner framwork.

#1141: Expose extension option factory as a public method

#1143: Add a new compiler tool which can be used to compile CEL expressions and policies using serialized environment

#1151: Lightweight observable evaluation

#1155: Utilities for formatting and parsing documentation strings

#1156: Support for documentation and example strings in CEL environments

#1158: Re-export interpreter.AttributePattern in package cel.

#1159: Document the standard library macros and functions

#1160: Prompt generation for AI-assisted authoring based on a CEL environment

#1117: Add LateFunctionBinding declaration and fix constant folding

#1163: Initialize stateful observers prior to evaluation

#1164: Unparse Expr values to strings

#1149: Add test runner library

#1167: REPL: Add an extension option for two var comprehensions

Fixes

Several fixes were implemented, including updating strings.format to better adhere to the specification, correcting constant folding logic alongside the late binding feature, removing a non-functional check in test code, and adding argument count validation for optFieldSelect.

#1133: Update strings.format to adhere to the specification

#1117: Add LateFunctionBinding declaration and fix constant folding

#1161: Remove non-functional optional check in test-only selection

#1168: Check arg count when validating optFieldSelect

Refactoring & Internal Improvements

General refactoring was performed across the codebase. Coverage and comments for Activation methods were improved. The test runner library was refactored to create options from flags and improve code structure.

#1145: Refactoring changes

#1150: Additional comments and coverage for Activation methods

#1165: Refactoring changes to create a test runner option from passed flags, correct indentation and add package level comment for test

Documentation

Documentation was enhanced, including updates to the NativeTypes documentation regarding the cel tag, adding documentation for the optional library, and documenting the standard library functions/macros as part of the documentation string feature.

#1148: Update NativeTypes doc to reflect how to enable cel tag

#1155: Utilities for formatting and parsing documentation strings

#1156: Support for documentation and example strings in CEL environments

#1159: Document the standard library macros and functions

#1162: Document optional library and increase docs coverage

Build System

Configuration fixes were made for Bzlmod compatibility.

#1146: Bzlmod configuration fixes

Type System

Type formatting was updated to correctly handle type parameters.

#1154: Update type formatting for type params

Release v0.24.1

27 Feb 00:13
3b3a438

Choose a tag to compare

Fixes

  • Separate unnest optimization from composer to capture type info [#1138]

Full Changelog: v0.24.0...v0.24.1

Release v0.24.0

25 Feb 22:53
9855c70

Choose a tag to compare

Support for subsetting CEL standard library and serialization of CEL environments to YAML.

CEL is an official Google product [#1122]

Features

  • Helper methods for subsetting function overloads [#1120]
  • Introduce cel package aliases for Activation [#1123]
  • Canonical environment description and stdlib subsetting [#1125]
  • Support for cel.Env conversion to YAML-serializable config [#1128]
  • Option to configure CEL via env.Config object [#1129]
  • Support for feature flags and validators in env.Config [#1132]
  • Add k8s custom policy tag handler for test [#1121]

Fixes

  • ContextEval support for Unknowns [#1126]
  • Fix godoc formatting for Lists and OptionalTypes functions [#1127]
  • Default enable DefaultUTCTimeZone [#1130]
  • Support for splitting nested branching operators within policies [#1136]

New Contributors

Full Changelog: v0.23.2...v0.24.0

Release v0.24.0-beta

20 Feb 16:53
45c4980

Choose a tag to compare

Release v0.24.0-beta Pre-release
Pre-release

Features

  • Introduce cel package aliases for Activation [#1123]
  • Canonical environment description and stdlib subsetting [#1125]
  • Support for cel.Env conversion to YAML-serializable config [#1128]
  • Option to configure CEL via env.Config object [#1129]
  • Support for feature flags and validators in env.Config [#1132]

Fixes

  • ContextEval support for Unknowns [#1126]
  • Fix godoc formatting for Lists and OptionalTypes functions [#1127]
  • Default enable DefaultUTCTimeZone [#1130]

New Contributors

Full Changelog: v0.24.0-alpha...v0.24.0-beta

Release v0.24.0-alpha

05 Feb 20:04
e086729

Choose a tag to compare

Release v0.24.0-alpha Pre-release
Pre-release

Alpha release for testing new subsetting features

What's Changed

  • Helper methods for subsetting function overloads (#1120)

Full Changelog: v0.23.2...v0.24.0-RC1

Release v0.23.2

31 Jan 22:12
1bf2472

Choose a tag to compare

Corrects one remaining issue for cost computations from the v0.23.0 releases

Fixes

  • Bump github.com/golang/glog from 1.0.0 to 1.2.4 in /codelab in the go_modules group across 1 directory by @dependabot in #1115
  • Minor update on cost order by @TristonianJones in #1119

Full Changelog: v0.23.1...v0.23.2

Release v0.23.1

28 Jan 20:59
d8351df

Choose a tag to compare

Minor release to address cost tracking and size estimation [#1113]

Full Changelog: v0.23.0...v0.23.1