Releases: google/cel-cpp
Release v0.9.0
Release v0.9.0
This release represents roughly one year plus of refactors aimed at improving performance and removing
protobuf as a core link time dependency of CEL. There are still many more changes in flight, but this release
represents a significant update in how CEL is designed and implemented within C++.
New Contributors
Full Changelog: v0.8.0...v0.9.0
Release v0.8.0
Changes
- Removed UTF-8 library dependencies
- Optimized performance of list append in tight loops
- Introduced support for heterogeneous equality and cross-type numeric comparison
- Update to the latest version of ANTLR
New Contributors
Full Changelog: v0.7.0...v0.8.0
Release v0.7.0
This release is primarily focused on security hardening and dead code elimination.
Fixes
- Limit the number of characters that may be read when attempting error recovery (635951c)
- Set the default comprehension iteration limit to 10000 (83fb851)
- Check all arithmetic operations and type conversions for overflow (99ebd43)
- Reject Timestamp values outside the string-expressible range
- Reject Duration values which cannot be expressed within an
int64
value - Heap buffer overrun for specialized binary and ternary operators (dfe31a4)
- Ensure only valid map keys are supported in
CreateStruct
(3261a58)
Cleanups
This release also removes dependencies on the v1beta1
protos and deletes a lot of
related code which was otherwise used within CEL.
Release v0.6.1
Patch release with the following fixes:
Fixes
- ensure compatibility with non-aliased
absl
andstd
types; - fix harmless undefined behavior on empty string_view access.
Release v0.6.0
Release v0.5.0
Latest release of cel-cpp which raises cel-spec conformance from 78% to 94.2%. The major boost in coverage is support for serializing CelValue
objects to the appropriate protobuf type, including to google.protobuf.Struct
values.
Additionally, there are a number of hardening fixes for the parser and evaluator to address issues found by public and private fuzzers.
Fixes
- [#85] The macro exists_one should not short-circuit false.
- [#86] Map macro may produce empty values instead of erroring.
- [#94] Missing
string()
conversion for timestamps and durations. - [#96] Proto2/3 well-known type conversion support to CEL values
- [#104] duration() allows inf / -inf values
- [663c2d8] Use unicode code point count for
<string>.size()
Features
- [8ad13052] Introduce an error recovery limit for the CEL Parser.
Release v0.4.0
Fixes
- e53c05c Enforce utf-8 validity in
string()
conversion ofbytes
. - bca699e Introduce
TypeRegistry
with support for thetype()
function and message creation within a container. - f347557 Apply clang-tidy suggestions.
The introduction of a TypeRegistry
makes it possible to register the type names of protobuf messages, or other types, as identifiers that can be used within CEL expressions. This is the primary motivation for the creation of a new release, rather than a point release.
Release v0.3.1
This release fixes bugs and implements functions and features which are supported by the core CEL specification.
Fixes
- [Parser] Hex integer notation support.
- [Conformance] Pipe protocol for evaluation, removing gRPC dependency.
- [Interpreter] Ensure the lifecycle of rewritten expressions is preserved in
CelExpression
values. - [Interpreter] Division by zero support for doubles, per IEEE754.
Features
- [Parser] Stable ordering of error messages.
- [Interpreter] Type conversion support for
uint()
,double()
,bytes()
, anddyn()
types.
Release v0.3.0
Notable changes
- C++17 is required to build the project
- Fix a race condition in protobuf map accessor, occurring during concurrent access to a shared map (6dfb7c8)
- Enforce recursion limits in parsing
- Fix integer overflow on type conversions from double, uint values
- Fix signed and unsigned integer overflow cases within C++ evaluator
- Enable timestamp tests and add support for fixed timezones
- Added support for bool keys to FieldBackedMapImpl
- Update the has() macro support for C++ and fix enum resolution behavior when the qualified enum id is encoded within an identifier and not just within parse-only select expressions
- Makes CEL parser tolerate trailing commas in struct constructors
- Added support for
CelType
- Refactor protobuf wrapper to
CelProtoWrapper
- Removed gRPC as a build requirement, conformance is validated using raw pipes.
Release v0.2.0
Features
- FlatBuffers support.
- Enriched parsing support for capturing the end position of parse tokens in addition to the start positions.
- Expose an option to the
Activation
binding helper for configuring whether unset proto fields are exposed as their default values.
Fixes
- Upgrade the ANTLR C++ runtime to v4.7.2 to fix a thread-safety issue.
- Added an
alwayslink = 1
flag to ensure bazel builds work on OS X. - Migrate towards
absl::Status
- Fix unknown handling to consider whether a function is strict / non-strict