Skip to content

Releases: google/cel-go

Release v0.11.1

24 Mar 03:11
1287953
Compare
Choose a tag to compare

Performance optimization release, ~5% performance gains in evaluation, and >95% performance gains in cel.NewEnv() setup.

Fixes

  • Micro optimizations to type-testing utility functions [#518]
  • Improve mutable list documentation by [#516]
  • Copy validated declarations between checker.Env instances on extension [#347]

Full Changelog: v0.11.0...v0.11.1

Release v0.11.0

22 Mar 18:30
ffa9b84
Compare
Choose a tag to compare

The v0.11.0 release introduces a sub-module for the server package used for conformance testing the cel-go package.
The sub-module has been split out to remove the gRPC dependency related to the core CEL package and to reduce the
overall size of the library import for users. Additionally, the CEL core dependencies have been vendored into the repo.

In addition this release features a handful of fixes and improvements for heterogenous equality, code health, and runtime
cost calculations.

Features

  • Vendored dependencies and conformance sub-module [#508]

Fixes

  • Fixes for map and list indexing across numeric types [#510]
  • Fix formatting and spelling lint [#511]
  • Use a zero-size type for variable-free activations [#513]
  • Simplify definition of cel.Source [#512]
  • Put cel package examples in package cel_test [#515]
  • Fix runtime cost ref.Val stack [#517]

New Contributors

Full Changelog: v0.10.1...v0.11.0

Release v0.11.0-pre

14 Mar 19:33
505a087
Compare
Choose a tag to compare
Pre-release

Test release of CEL with vendored dependencies

Release v0.10.1

10 Mar 22:45
6efb4a8
Compare
Choose a tag to compare

Fixes

  • Add function name and result to CallCost and EstimatedCallCost [#506]
  • Add nil check and fix costTracker in contextEval [#507]

Full Changelog: v0.10.0...v0.10.1

Release v0.10.0

08 Mar 01:27
7200247
Compare
Choose a tag to compare

Features

Heterogeneous Runtime Equality

CEL currently only supports homogeneous equality via type-checking; however, where type inferences are limited,
such as when working with JSON, the definition of runtime equality has been relaxed such that comparisons across
type are permitted.

  • Protobuf equality uses the C++ MessageDifferencer::Equals behavior
  • Numeric equality treats all numeric types as though they occur on a single continuous number line
  • All other comparisons across type return false.

This change will shift a certain category of runtime errors into non-errors.

  • Support heterogeneous null comparisons [#471]
  • Implement heterogeneous null comparisons for list and map [#472]
  • Numeric in/equality and comparisons across numeric types [#473]
  • Updates to cel-go proto equality to mirror C++ MessageDifferencer [#481]
  • Heterogeneous equality [#482]
  • Cross-type numeric declarations with opt-in [#484]

Expression Cost Tracking

Static analysis tools for better evaluation cost estimation with options to track and enforce these limits
during runtime evaluation. This work deprecates and will replace the interpreter.Coster interface for
heuristic costing of expressions.

  • EstimateCost API [#483]
  • Estimate costs for list and string concatenation and conditionals [#487]
  • Runtime cost calculation with limits [#494]
  • Adjust cost estimates to account for logical op short circuiting [#501]

Additional Changes

  • Expose an option to track macro call replacements [#470]
  • Move ref.Val -> api.expr.Value converter to io.go [#480]
  • List append optimizations for comprehension loops (40x speed-up in filter, map) [#491]
  • Add join to strings ext library [#495]
  • Add option to compile regex constants at program creation time [#497]
  • Context Eval for interruptable evaluation [#502]

Fixes

  • Ensure macro calls are tracked efficiently in lists and call targets by [#467]
  • Update the operator map structure [#466]
  • Update the ANTLR tool version and update lexer token names for consistency [#469]
  • Fix the panic in the codelab solution [#479]

New Contributors

Full Changelog: v0.9.0...v0.10.0

Release v0.9.0

19 Oct 22:35
8e5d987
Compare
Choose a tag to compare

Features

  • Allow building the cel.Ast with a backing text source [#451]
  • Support for populating macro calls within the SourceInfo [#455]
  • Add unparsing support for macro calls [#458]

Fixes

  • Ensure type-adaptation is used for planning constant values [#463]
  • Bug fixes for type-sanitization and abstract type support [#460]
  • Rename go_strings_library to go_default_library [#457]

Release v0.8.0

18 Sep 01:49
90c32ee
Compare
Choose a tag to compare

Update with parser hardening and general improvements toward 100% conformance with the CEL-Spec.

Features

  • [#430] Recursion limits and error recovery attempt limit parse-time options
  • [#433] Expression size limit parse-time option
  • [#443] Change recursion checks to be rule-based, to better match the spec
  • [#446] Make it to use a single proto message's fields as the basis for all CEL variables
  • [#447] Parser error recovery lookahead limit to prevent pathological backtracking

Fixes

  • [#422] Return errors when duration or timestamp overflow is detected
  • [#423] Preserve subsecond precision when converting timestamps from strings
  • [#427] Use accessor methods for source info instead of fields directly to avoid panic
  • [#436] Fix the IsChecked call for constant expressions
  • [#439] Ensure RemoveErrorListeners() is called on lexer and parser objects allocated from pools.
  • [#448] Unify overflow checking in operators, field setting.
  • [#449] Fix list and map equality to preserve logical ANDing of elements

Performance

  • [#426] Optimize the antlr.CharStream implementation

Release v0.7.3

25 Mar 22:47
f86a886
Compare
Choose a tag to compare

Minor release with some minor fixes to improve ease of use and safety of the library.

Fixes

  • [#416] Support trailing commas in CreateMessage and CreateStruct expressions
  • [#421] Return errors when signed or unsigned integer overflow is detected
  • [#419] Fix infinite loop in AST prune

Release v0.7.2

10 Feb 18:31
9c6eada
Compare
Choose a tag to compare

This release fixes minor gaps in the API between v0.6.0 and v0.7.*. Most users will be unaffected by these bugs,
but they are common enough to warrant a point release.

Fixes

  • [#414] Re-add support for duration and timestamp proto values as CEL Values.
  • [#413] Ensure that proto reflection falls back to dynamic lookup

Release v0.7.1

29 Jan 23:47
ec83087
Compare
Choose a tag to compare

Fixes

  • [#411] Ensure protodesc.FileDescriptor references are sourced from protoregistry.GlobalFiles when possible.

Features

  • [#410] Expose type formatting utility in cel.FormatType()