Skip to content

Releases: google/cel-go

Release v0.24.1

27 Feb 00:13
3b3a438
Compare
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
Compare
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
Compare
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
Compare
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
Compare
Choose a tag to compare

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

Fixes

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

Release v0.23.1

28 Jan 20:59
d8351df
Compare
Choose a tag to compare

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

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

Release v0.23.0

24 Jan 18:02
2f7606a
Compare
Choose a tag to compare

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

Full Changelog: v0.22.1...v0.23.0

Release v0.22.1

22 Nov 16:58
933f926
Compare
Choose a tag to compare

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

Full Changelog: v0.22.0...v0.22.1

Release v0.22.0

06 Nov 20:50
8ad600b
Compare
Choose a tag to compare

What's Changed

Core CEL

Policy

New Contributors

Full Changelog: v0.21.0...v0.22.0

Release v0.21.0

03 Aug 21:11
3545aac
Compare
Choose a tag to compare

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

Full Changelog: v0.20.1...v0.21.0