Skip to content

Releases: google/cel-go

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

v0.20.1

07 Mar 15:56
7654578
Compare
Choose a tag to compare

Minor release to capture a couple bug fixes and API / build visibility changes.

What's Changed

  • Track sizes of comprehension results by [#901]
  • Introduce new helper APIs for optimizers by [#903]
  • Make the CEL ast package public. [#904]

New Contributors

Full Changelog: v0.20.0...v0.21.0

Release v0.20.0

15 Feb 22:25
f221e70
Compare
Choose a tag to compare

What's Changed

  • Minor adjustment to inlining to fix a bad bind [#888]
  • Ensure error typed variables are returned as errors from Resolve b [#889]
  • ext.NativeTypes: Recursively add sub-types [#892]
  • DefaultTypeAdapter: Add support for missing custom scalars [#893]
  • Lists: Fix handling of go arrays [#894]

New Contributors

Full Changelog: v0.19.0...v0.20.0

Release v0.19.0

19 Jan 16:41
df07208
Compare
Choose a tag to compare

Features

  • Add AST node IDs to types.Err for errorable expressions [#862]
  • Set membership test rewriting optimizer [#865]
  • Introduce 'wither' method for changing type traits [#871]
  • Add option to include test types in the repl [#855]

Fixes

  • Fix MaxID to consider macro keys and expressions [#861]
  • Update builtin macros to use unique IDs. [#866]
  • Fix incorrect example in string formatting docs. [#873]
  • Fix the optional type name and type identifier resolution [#870]
  • Fix type substitution within parameterized type names [#880]
  • Bump follow-redirects from 1.15.2 to 1.15.4 in /repl/appengine/web [882]

New Contributors

Full Changelog: v0.18.2...v0.19.0

Release v0.18.2

10 Nov 19:50
cfbf821
Compare
Choose a tag to compare

What's Changed

  • Add support for ext.Bindings() to REPL [#843]
  • Add basic examples to the appengine repl [#848]
  • Sets cost estimation and tracking options [#850]
  • Fix expression inlining when working with macros [#853]
  • ANTLR v4.13 update [#857]

Full Changelog: v0.18.1...v0.18.2

Release v0.17.7

30 Oct 16:35
cfefae0
Compare
Choose a tag to compare

What's Changed

  • Backport #850: Sets cost estimation and tracking options [#852]

Full Changelog: v0.17.6...v0.17.7

Release v0.18.1

25 Sep 17:55
5840875
Compare
Choose a tag to compare

What's Changed

  • Add support for a relative offset within ast.SourceInfo by [#836]
  • Fix last optional element to be retained as an optional index while folding [#841]
  • Fix deprecation notice for string format validation [#840]
  • Update cel-spec and enable wrappers conformance tests [#842]
  • refactor: remove lexer and parser pools [#838]

New Contributors

Full Changelog: v0.18.0...v0.18.1

Release v0.18.0

01 Sep 19:36
5db3640
Compare
Choose a tag to compare

Features

The latest release of CEL introduces validators (#775) and optimizers (#804, #827) and migrates the core CEL internals off of the
protobuf expression and type representations (#789).

  • String format validator [#775]
  • Create a Function that Reverses a String [#796]
  • Introduce pre-order / post-order visitor pattern [#813]
  • Add Libraries() function to Env [#822]
  • Static optimizer for constant folding [#804]
  • Inlining optimizer [#827]
  • FindStructTypeFields support for types.Provider [#814]

Breaking Changes

The following PR changes the API signature of the checker.AstNode method Expr to return an ast.Expr.

  • Migrate the checker.Coster to the ast.Expr [#798]

Fixes

  • Nil safety checks for cel.Ast [#784]
  • Fix cost estimates to propagate result sizes [#787]
  • Catch invalid literals created from expression factories [#810]
  • Ensure stable ordering of overload candidates [#817]
  • Clarify replace with/by empty string [#820]
  • Fix functional exemptions for homogeneous literal checks [#832]
  • Fix logical operator folding that only involve literals [#833]
  • Upgrade go-genproto to latest [#831]

New Contributors

Full Changelog: v0.17.1...v0.18.0

Release v0.17.1

19 Jul 21:40
e517cf5
Compare
Choose a tag to compare

Minor release to address documentation gaps and additional methods to make unknowns more useful

Fixes

  • Helpers for accessing unknown state information [#781]

Full Changelog: v0.17.0...v0.17.1

Release v0.17.0

18 Jul 22:05
c2302e2
Compare
Choose a tag to compare

At a high-level this release introduces several changes which should improve ease of use
while also improving the evaluation safety and quality:

  • Standard library functions may be extended by using cel.Function options.
  • The unknown type now contains information about which field references were unknown.
  • Type representations have been consolidated to *types.Type.
  • New options have been added to add custom AST validations which are run after type-checking.
  • Additional macros were added for optional types, and a new extension was added for list slicing.
  • The cel.ContextProtoVars method has been added to bind proto fields to variable names,
    complementing cel.DeclareContextProto.

Features

  • Unify decls.Type with types.Type [#745]
  • Introduce optFlatMap and OptionalTypes documentation [#744]
  • Include expression id on parser and checker errors [#725]
  • Implement errors.Unwrap for types.Err. [#728]
  • Allow extension of stdlib functions [#747]
  • Add list library with slice method [#753]
  • Export FormatCELType in the 'cel' package [#763]
  • Validators for common literals and use cases [#765]
  • Comprehension nesting limit validator [#769]
  • Unify type adapter / provider representations [#770]
  • Benchmark harness with some initial reference cases [#750]
  • Simplified partial state evaluation [#766]
  • Update types.Unknown with attribute trails [#776]
  • ContextProtoVars() to simplify proto-based inputs [#779]
  • Variadic logical operator AST support [#726]

Fixes

  • Add the overload reference for optional field selection [#730]
  • Correct a typo in the README [#731]
  • Clear iteration variable data during expression pruning [#740]
  • Restore iter range pruning on comprehension ASTs [#757]

Breaking Changes

The following API changes may break users of cel-go:

  • Removal of *types.TypeValue, replaced by *types.Type
  • Removal of *exprpb.Type from public interfaces such as the checker.AstNode
  • Change in type definition for *types.Unknown. Switch from a type alias for []int64 to a structured type.

New Contributors

Full Changelog: v0.16.0...v0.17.0