Releases: google/cel-go
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
v0.20.1
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
- @ShahedAlMashni made their first contribution in #904
Full Changelog: v0.20.0...v0.21.0
Release v0.20.0
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
- @alvaroaleman made their first contribution in #892
Full Changelog: v0.19.0...v0.20.0
Release v0.19.0
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
- @nicksnyder made their first contribution in #873
Full Changelog: v0.18.2...v0.19.0
Release v0.18.2
Release v0.17.7
What's Changed
Full Changelog: v0.17.6...v0.17.7
Release v0.18.1
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
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
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
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,
complementingcel.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 thechecker.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