Skip to content

Release v0.17.0

Compare
Choose a tag to compare
@TristonianJones TristonianJones released this 18 Jul 22:05
· 101 commits to master since this release
c2302e2

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