Releases: google/cel-go
Release v0.11.3
Features
- Allow functions to accept error and unknown args [#525]
Fixes
- Minor adjustment to type-tests to support custom Bool types by [#521]
- Minor simplification of ValOrErr [#522]
- Fix protobuf merge when types have different descriptor instances [#526]
- Prevent clobbering vars maps provided by previous libs [#528]
- Use gazelle-compatible repository name for antlr [#529]
- Upgrade to ANTLR v4.10.1 and remove binary ANTLR tools [#533]
- Set the error reporting limit to 100 for parity with C++ [#534]
New Contributors
Full Changelog: v0.11.2...v0.11.3
Release v0.11.2
Release v0.11.1
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
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
- @kortschak made their first contribution in #511
Full Changelog: v0.10.1...v0.11.0
Release v0.11.0-pre
Test release of CEL with vendored dependencies
Release v0.10.1
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
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
- @sahil-madeka made their first contribution in #480
- @jpbetz made their first contribution in #483
Full Changelog: v0.9.0...v0.10.0
Release v0.9.0
Release v0.8.0
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