Releases: google/cel-go
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
Release v0.23.0
Features
- First and last element in list support [#1067]
- Add support for typed conformance tests. [#1089]
- Add syntax for escaped field selectors. [#1002]
- Add optional.unwrap() / .unwrapOpt() function [#1103]
- Cost tracking for two-variable comprehensions and bindings [#1104]
Fixes
PR #1099 enables a change in the internal variable name used for comprehension result accumulation. This change may break some tests which inspect the AST contents in text form; however, will not break any existing uses of CEL during parse, check, or evaluation.
- Improve policy compiler error message for incompatible outputs. [#1082]
- Fix partial evaluation with the comprehension folder objects [#1084]
- Introduce versioning options to all extensions [#1075]
- Fix a crash in mismatched output check for nested rules [#1086]
- improve debug output to properly quote byte strings [#1088]
- Fix two-variable comprehension pruning [#1083]
- Replace checks for valid UTF-8 in strings with go-maintained calls [#1094]
- Policy nested rule fix [#1092]
- Address non-const format string lint findings [#1096]
- Fix typos in ext/README.md [#1098]
- Add option to use inaccessible accumulator var [#1097]
- Add test cases for
string.format
covering various edge cases [#1101] - Add base_config and partial_config files under restricted_destination testdata [#1106]
- Default enable using hidden accumulator name [#1099]
- Update PruneAst to support constants of optional type [#1109]
New Contributors
- @bigkevmcd made their first contribution in #1067
- @hudlow made their first contribution in #1088
- @dbuduev made their first contribution in #1098
- @zeitgeist87 made their first contribution in #1101
Full Changelog: v0.22.1...v0.23.0
Release v0.22.1
Fixes
- Additional hardening on legacy macros [https://github.com//pull/1064]
- Additional nil-safety checks with corresponding test updates [https://github.com//pull/1073]
- Add two-variable comprehension support to cel-policy [https://github.com//pull/1074]
- Fix optional test to short-circuit [https://github.com//pull/1076]
- Fix nil-type when two-var comprehension has a dyn range [https://github.com//pull/1077]
New Contributors
- @aakash070 made their first contribution in #1069
Full Changelog: v0.22.0...v0.22.1
Release v0.22.0
What's Changed
Core CEL
- Add list flatten() by @fabriziosestito in #980
- Add sets and lists extensions to REPL by @l46kok in #1005
- CEL Spec and Proto Updates by @TristonianJones in #1011
- Implement native conformance test runner by @jcking in #1001
- Add support for no padding in base64 decode by @TristonianJones in #1017
- Allow configurable tag name overrides in native types by @matthchr in #1009
- Introduce helper trait types for lists and maps by @TristonianJones in #1026
- ext: add list.sort() by @cezar-guimaraes in #1021
- Foldable Maps and Lists by @TristonianJones in #995
- Update REPL examples by @jnthntatum in #1028
- Interop foldable maps and lists with map mutation helper by @TristonianJones in #1029
- Update the Go AST representation to handle a second iteration variable by @TristonianJones in #1031
- Runtime support for two-variable comprehensions by @TristonianJones in #1032
- Two-variable comprehension support by @TristonianJones in #1034
- Update tag-based parsing to use lambda for additional customization by @matthchr in #1039
- Fix string reverse member overload name by @TristonianJones in #1045
- Remove unused server directory by @TristonianJones in #1041
- Add functions to the lists extension. by @seirl in #1037
- Rename strings version test by @TristonianJones in #1047
- Fix doc strings and version support on math extensions by @TristonianJones in #1046
- Upgrade cel-go to support bazel-mod by @TristonianJones in #1049
- Fix out of range error for non-negative string indexing offsets by @TristonianJones in #1052
- Expand visibility of parser/gen package by @TristonianJones in #1057
- Ensure variables in comprehensions don't collide by @TristonianJones in #1062
Policy
- Support for typename import aliases by @TristonianJones in #993
- Error on condition-only match blocks by @TristonianJones in #1003
- Update context proto resolution to use type provider by @TristonianJones in #1013
- Support for context proto declarations by @TristonianJones in #1006
- CEL Policy Readme by @TristonianJones in #1025
- Support for cel.@block during policy composition by @TristonianJones in #1056
New Contributors
- @fabriziosestito made their first contribution in #980
- @matthchr made their first contribution in #1009
- @cezar-guimaraes made their first contribution in #1021
- @sreeram-venkitesh made their first contribution in #1035
Full Changelog: v0.21.0...v0.22.0