Changelog History
Page 1
-
v0.6.0 Changes
September 22, 2020๐ Improvements
- [#362] Expose interfaces that allow users to write their own CEL expression decorators.
- โก๏ธ [#360] Optimize type conversion functions, spot errors in
timestamp
andduration
program plan time. - [#328] Publish the CEL-Go Codelab source.
- [#372] Introduce upper / lower ASCII string functions.
- [#373, #379] Introduce base64 encode / decode.
- ๐ [#367] Aliased identifier support
๐ Fixes
- [#361] Fix type map references for Attributes and id references within qualifiers.
- ๐ [#375] Support hexidecimal int literals.
- ๐ [#382] Support gogo protogen protos for better Kubernetes proto support.
- [#384, #386] Fix Residual computations to be non-mutating.
๐ฅ Breaking Changes
๐ Aliased identifier support introduces breaking changes by replacing the
Packager
concept with aContainer
to better match the CEL specification. See #367 for more information about the specific changes. -
v0.5.1 Changes
May 22, 2020 -
v0.5.0 Changes
May 08, 2020๐ Improvements
- [#342] Introduced
decls.NewVar
anddecls.NewConst
as a replacement fordecls.NewIdent
- ๐ [#343] Parse and check errors are stable sorted by their source location.
- ๐ [#348] Added
sync.Pool
in front of ANTLR lexer / parser to improve checker performance.
๐ Fixes
- ๐ [#341] Support for namespaced functions. See Breaking Changes for more information before use.
- ๐ [#345] Doc fix to remove reference to a removed evaluation option.
๐ฅ Breaking Changes
๐ Support for namespaced function resolution means that CEL extension functions can now have qualified names, such as
base64.encode
. This has always been supported by the CEL type-checker and the CEL specification, but was never properly supported by the evaluators. As part of this fix, the type-checker introduces AST rewrites to ensure that all identifiers in the checked AST are fully-qualified. This change simplifies the execution planning phase for the program, but may introduce structural differences between v0.5+ ASTs and those created with prior releases of CEL.The structural difference introduced with this change should not affect evaluation. If anything v0.5+ ASTs will improve the conformance of the C++ evaluator with the CEL spec.
- [#342] Introduced
-
v0.4.2 Changes
April 21, 2020๐ Fixes
- ๐ Make the
has()
macro consistent with cel-spec for proto2 and proto3 message types. - ๐ Improve type resolution when there are multiple overloads with the same return type.
- โ Remove shared state from the
Env#Extend()
call. #issues/333 - ๐ Fix proto2 enum assignments during object constructions.
- ๐ Make
Attribute
valuesStringer
implementations to make them human-readable in errors.
๐ฅ Breaking Changes
The
Env#Extend()
changes introduced a new method on theref.TypeRegistry
interface calledCopy
.
๐ If the user has implemented a custom TypeRegistry, theCopy
method is required in order to support
extension. If theTypeRegistry
is immutable, it may trivially return itself. - ๐ Make the
-
v0.4.1 Changes
March 26, 2020 -
v0.4.0 Changes
February 06, 2020๐ The v0.4.0 release of CEL-Go introduces several fixes, features, and breaking changes since v0.3.2.
๐ Features
- ๐ Top-level support for partial evaluation
- Mark attributes (either whole variables or parts of them) as unknown.
- Generate residual ASTs from partial evaluations using
cel.EvalDetails
.
- Replaced several top-level interfaces with concrete structs.
- Simplified the embedding of CEL into larger languages, such as CEL Policy Templates.
- ๐ Improved field selection and indexing performance by 10x for
proto2
andproto3
. - Introduced a new
cel.Library
interface and extension library for dealing with string manipulation.
๐ Fixes
- ๐ Checker support for protobuf
sfixed32
,sfixed64
fields. - Convert certain type param resolution to
dyn
to prevent type resolution errors. - Disable short-circuiting in the
exists_one
macro to be consistent with CEL spec. - โ Remove
dyn
as a runtime type, and add it as an identity functiondyn(<expr>) == expr
. - Ensure strings must be valid unicode.
- โ Remove support for
!1
as a valid parse-only expression. - ๐ Fix recursive registration of imported proto files within a descriptor.
- โ Enable proto supporting conformance tests.
- ๐ Change the
cel.AstToString
function to behave like a single-line formatter. - Convert the text representation of byte literals to octal to be compatible with Google SQL.
- ๐ Improved support for
ConvertToNative
for maps and lists. - ๐ Fix error propagation on
!=
.
๐ฅ Breaking Changes
- The
cel.Issues
,cel.Ast
,cel.Env
, andcel.EvalDetails
interfaces have been replaced with concrete types. - The
interpreter.NewAdaptingActivation
andinterpreter.AdaptingActivation
have been replaced by automatic propagation and use of theref.TypeAdapter
during variable resolution. - The
cel.Env
construction will defer environment validation until the firstenv.Check
call. - The
Program.Eval(Activation)
method will result in an error if a declared variable appears in the expression, but not in the activation. UseEnv.UnknownActivation()
andcel.EnvOptions(OptPartialEval)
to achieve the same behavior.
- ๐ Top-level support for partial evaluation
-
v0.4.0-beta.1 Changes
February 06, 2020๐ This is a beta release for v0.4.0 of CEL-Go. The release introduces several fixes, features, and breaking changes since v0.3.2.
๐ Features
- ๐ Top-level support for partial evaluation
- Mark attributes (either whole variables or parts of them) as unknown.
- Generate residual ASTs from partial evaluations using
cel.EvalDetails
.
- Replaced several top-level interfaces with concrete structs.
- Simplified the embedding of CEL into larger languages, such as CEL Policy Templates.
- ๐ Improved field selection and indexing performance by 10x for
proto2
andproto3
.
๐ Fixes
- ๐ Checker support for protobuf
sfixed32
,sfixed64
fields. - Convert certain type param resolution to
dyn
to prevent type resolution errors. - Disable short-circuiting in the
exists_one
macro to be consistent with CEL spec. - โ Remove
dyn
as a runtime type, and add it as an identity functiondyn(<expr>) == expr
. - Ensure strings must be valid unicode.
- โ Remove support for
!1
as a valid parse-only expression. - ๐ Fix recursive registration of imported proto files within a descriptor.
- โ Enable proto supporting conformance tests.
- ๐ Change the
cel.AstToString
function to behave like a single-line formatter. - Convert the text representation of byte literals to octal to be compatible with Google SQL.
- ๐ Improved support for
ConvertToNative
for maps and lists. - ๐ Fix error propagation on
!=
.
๐ฅ Breaking Changes
- The
cel.Issues
,cel.Ast
,cel.Env
, andcel.EvalDetails
interfaces have been replaced with concrete types. - The
Program.Eval(Activation)
method will result in an error if a declared variable appears in the expression, but not in the activation. UseEnv.UnknownActivation()
andcel.EnvOptions(OptPartialEval)
to achieve the same behavior.
- ๐ Top-level support for partial evaluation
-
v0.4.0-alpha.2 Changes
October 30, 2019๐ Alpha release which improves the usability of CEL values. Another point release on the way toward v0.4.0.
๐ Features
๐ Improve type conversion capabilities for lists and maps.
-
v0.4.0-alpha.1 Changes
October 25, 2019๐ This is an alpha release of the planned 0.4.0 release which will feature the following changes:
- Replace a handful of top-level interfaces with concrete structs.
- Complete the known unknowns implementation.
- Making it easier to embed CEL in larger rule engines.
๐ The alpha releases will include breaking changes and bug fixes on the path to publishing the official 0.4.0 release.
๐ Features
- ๐ Support for parsing from
common.Source
objects. - ๐ Ability to override the creation of
common.Location
objects at parse time. - ๐ Instances of
common.Errors
andcel.Issues
may be merged together. - ๐ New test case showing how to use custom macros.
๐ Fixes
- ๐ Fix for error propagation on
!=
operations. - ๐ Fix for panic during type-check when the comprehension ranges are of invalid type.
๐ฅ Breaking Changes
- ๐ The
common.Source
interface removes theIDOffset
andIDLocation
methods and addsNewLocation
- The
cel.Issues
interface has been replaced by a concrete struct type.
-
v0.3.2 Changes
October 09, 2019๐ Features
- ๐ Support for
Env
extension by copy with additional options.
๐ Fixes
- ๐ Lint fixes for go report card.
- ๐ Support for