Releases: google/cel-go
Release v0.27.0
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
- @catalinadurbala made their first contribution in #1227
- @abenea made their first contribution in #1258
Full Changelog: v0.26.1...v0.27.0
Release v0.26.1
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.Messageby @srikrsna in #1207
New Contributors
- @beldmian made their first contribution in #1199
- @MisLink made their first contribution in #1190
- @srikrsna made their first contribution in #1207
Full Changelog: v0.25.1...v0.26.1
Release v0.26.0
New Features ✨
- Add support for global constants to constant folder by @zeitgeist87 in #1180
- Adding CEL Regex Extensions by @maskri17 in #1187
- Sqrt func by @haribalan in #1166
- Add bazel rule to trigger cel tests and return policy metadata while creating CEL programs by @aakash070 in #1176
- Create an util method to convert rpc status to eval status by @ChinmayMadeshi in #1178
- Add test runner option to configure a custom test suite parser by @aakash070 in #1189
- Cost tracking for list operations by @TristonianJones in #1192
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 🧪
- fix test runner test cases by @aakash070 in #1170
- Update test runner to avoid using flags when not necessary by @TristonianJones in #1174
- add support for handling unknown expression ids in test result by @aakash070 in #1183
- Test case for aliasing container imports by @TristonianJones in #1193
Documentation 📚
- Add documentation for YAML quirks in celpolicy by @jnthntatum in #1186
Dependency Updates ⬆️
- Bump the npm_and_yarn group across 1 directory with 2 updates by @dependabot[bot] in #1188
Release v0.25.0
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
Fixes
- Separate unnest optimization from composer to capture type info [#1138]
Full Changelog: v0.24.0...v0.24.1
Release v0.24.0
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
- @chaewonkong made their first contribution in #1127
Full Changelog: v0.23.2...v0.24.0
Release v0.24.0-beta
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
- @chaewonkong made their first contribution in #1127
Full Changelog: v0.24.0-alpha...v0.24.0-beta
Release v0.24.0-alpha
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
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
Minor release to address cost tracking and size estimation [#1113]
Full Changelog: v0.23.0...v0.23.1