Releases: google/cel-go
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
Release v0.21.0
Features
- Math extensions update to include bitwise ops and floating point helpers [#923]
- Better support custom types with custom type registries [#931]
- repl: implement %parse [#933]
- Fixed partial variables extended bug and split PartialVarsEnvExtended test into two [#955]
- Added partial evaluations example [#959]
- Enable conformance tests for extensions [#930]
- Update cel-spec and enable optional_type conformance tests [#919]
- Improve token representation in AST [#932]
- Add function accessor to Env [#978]
CEL Policy Compiler
Policies which use CEL often evolve to express complex logic using multiple statements
and decision criteria. The CEL Policy Compiler provides an extensible format for parsing,
compiling, and composing expression graphs. Below is a simple example which can easily
be compiled to a single CEL expression.
name: "my-policy"
rule:
variables:
- name: greeting
expression: "'%s, %s!'"
- name: people
expression: >
['Tristan', 'Calla', 'Antoine', 'Jonathan', 'Sokwhan', 'Rebecca']
match:
- condition: "request.user in variables.people"
output: "variables.greeting.format(['hello', request.user])"
- output: "variables.greeting.format(['goodbye', 'stranger'])"
- Simple Policy Compiler [#924]
- Introduce protobuf message testing to policies [#961]
- Generate policy explanations during compilation [#977]
- Variable and nested rule limits [#989]
- Improved support for nested rules #991]
Fixes
- Delete dangling source info from macro expansion [#934]
- Do not re-use ID twice in
exists_one
macro [#935] - Avoid iterating over the source multiple times during parse [#936]
- Fix for working with byte arrays by [#958]
- Stabilize macro id generation during optimization [#962]
- String formatting panic fix for non-literal format strings [#987]
- Add nil checking for wrapperspb's types [#960]
- Prevent self-append for
Issues
[#988] - Use bytes interface value for zero native type struct fields instead of dynamic list [#981]
Presence Test Semantics
The following two changes identified an issue where presence test was unexpectedly being performed over a scalar type and evaluating to absent
rather than erroring. It is strongly advised to set the flag cel.EnableErrorOnBadPresenceTest(true)
to avoid a logical correctness issue.
- Fix presence test to produce an error when it's not a map or a message [#922]
- Update the presence testing fix to be opt-out [#939]
Deprecation Cleanup
- Remove the deprecated protobuf function and type declarations [#921]
New Contributors
- @testwill made their first contribution in #911
- @patrickpichler made their first contribution in #941
- @seirl made their first contribution in #948
- @jduraniglesias made their first contribution in #955
- @goccy made their first contribution in #960
Full Changelog: v0.20.1...v0.21.0