Skip to content

v0.5.0

Compare
Choose a tag to compare
@l46kok l46kok released this 02 May 03:05
· 96 commits to main since this release

Note: Use 0.5.1 if you're using Maven Central

This release introduces mutable expressions to improve the performance of augmenting an AST via CEL optimizers. Roughly, the speed improvement ranges from 3x to 10x depending on the complexity of an AST.

Breaking Changes

Classes CelCreateList, CelCreateMap and CelCreateStruct have been renamed to CelList, CelMap and CelStruct respectively to be consistent across other canonical CEL implementations. There are no functional changes.

  • Remove modifier create from CelCreateList, CelCreateMap and CelCreateStruct in #318
  • Remove modifier create from mutable variants of list, map and struct in #323
  • Remove create modifiers from list,struct,map methods in #321

What's Changed

  • Accept a list as an argument to setParameterTypes in function overload decl in #278
  • Add a SubexpressionOptimizer baseline test case for fully extractable presence tests in #287
  • Implement CelMutableExpr in #289
  • Add CelMutableIdent in #291
  • Add CelMutableCreateList #292
  • Add CelMutableSelect in #297
  • Add CelMutableCreateStruct in #293
  • Add CelMutableCreateMap in #294
  • Add CelMutableComprehension in #295
  • Add CelMutableCall #298
  • Add copy constructor to deep copy mutable expressions in #296
  • Introduce a common expression tree interface between CelExpr and CelMutableExpr in #300
  • Compute Max IDs per subtree in NavigableExpr in #302
  • Add CelMutableAst in #303
  • Change MutableExprVisitor to visit using CelMutableExpr in #304
  • Change AST Mutator to accept mutable ASTs in #305
  • Change ConstantFoldingOptimizer to leverage mutable exprs in #308
  • Fully perform CSE on presence tests where possible in #311
  • Change AstMutator to augment macro source using mutable expr in #314
  • Drop expr suffix from CelExpr static constructors in #317
  • Specify better error message and code for invalid field selections in #316
  • Improve canEliminate logic by excluding nodes from ineligible comprehension branches in #312
  • Remove appending create modifier in ExprFormatter in #320
  • Remove modifier create from the common expression interface in #319
  • Change CelAstOptimizer interface signature. Cleanup unused methods in #310
  • Change SubexpressionOptimizer to leverage mutable exprs in #309
  • Add Mutable versions of NavigableExpr and AST in #307
  • Remove cached hashcode from MutableExpr in #306
  • Create a base navigable class that accepts a bound generic type of an expression in #301
  • Add a converter for adapting between CelExpr and CelMutableExpr #299
  • Rename MutableAst to AstMutator in #290
  • Use simple for loop instead of stream in CEL runtime equality #280

Fixes

  • Fix timestamp and duration conversion for JSON in #332
  • Change comprehension variable mangling logic to always generate a unique index per comprehension expr in #330
  • Fix optional type resolution in #283
  • Fix optional field selection behavior on structs in #286
  • Clean up dangling source information from macro expansion in #337
  • Do not re-use ID twice in exists_one macro in #338
  • Dedupe enum types by enum descriptor's fully qualified name in ProtoMessageTypeProvider in #324

Miscellaneous

  • Remove main AutoValue dependency from the published jar in #315
  • Add load() statements for the builtin Bazel java rules in #284
  • Update bazel WORKSPACE dependencies #331
  • Remove maven artifacts for optimizer, validator and extensions in #327
  • Add capability to regenerate baseline tests into a file in #329

Full Changelog: v0.4.1...v0.5.0