版本发布 8
This release features the following: - **New Android-Optimized Runtime (Beta)**: Introducing a lightweight runtime with native support for Protobuf Lite, significantly reducing footprint for Android applications. - **Expanded Extension Libraries**: New [Regular Expression extension library](https://github.com/google/cel-java/blob/main/extensions/src/main/java/dev/cel/extensions/README.md#regex) is now available, alongside enhanced Math extensions including floor, ceil, round, and bitwise operators. - **CEL Unit test runner framework**: A new unit test runner framework simplifies exercising CEL expressions and policies via Bazel macros. - **YAML Environment Serialization**: Support for a bi-directional CEL environment serialization in YAML for improved configuration management. ## Breaking Changes The following PRs change the fully qualified class name for function binding: Before: `dev.cel.runtime.CelRuntime.CelFunctionBinding` After: `dev.cel.runtime.CelFunctionBinding` * Rename dev.cel.runtime.CelRuntime.CelFunctionBinding to dev.cel.runtime.CelFunctionBinding in https://github.com/google/cel-java/pull/627 * Remove deprecated dev.cel.runtime.CelRuntime.CelFunctionBinding in https://github.com/google/cel-java/pull/628 Various utility methods for spawning protobuf-based CEL types have been moved out of `CelTypes` into `CelProtoTypes` or `CelProtoMessageTypes`: * Migrate from CelProtoTypes#createMessage(descriptor) to CelProtoMessageTypes#createMessage(descriptor) in https://github.com/google/cel-java/pull/568 * Remove deprecated CelProtoTypes#createMessage in https://github.com/google/cel-java/pull/573 * Create CelProtoMessageTypes for handling proto based types that require a full protobuf dependency in https://github.com/google/cel-java/pull/567 `CelPolicyConfig` and its sibling classes have been removed. These classes are superseded by `CelEnvironment`, which are functionally equivalent and provides functionality for environment setup beyond policy use cases. * Remove deprecated CelPolicyConfig and its parser in https://github.com/google/cel-java/pull/618 ## Bug Fixes * Include CEL Policy Compiler in next release's jar https://github.com/google/cel-java/issues/678 * Fix an issue with the error message not including the source location and position during function dispatch in https://github.com/google/cel-java/pull/569 * Fix JSON conversions involving FieldMask and Empty in https://github.com/google/cel-java/pull/644 * Fix a fuzzer issue involving nested comprehensions in https://github.com/google/cel-java/pull/655 * Fixing lastIndexOf incosistent behaviour in https://github.com/google/cel-java/pull/681 * Fix bytes to string conversion to explicitly error on invalid code points in https://github.com/google/cel-java/pull/717 * Fix optional or/orValue to propagate errors and unknowns in https://github.com/google/cel-java/pull/718 * add string(bool) overload by @maorwayn in https://github.com/google/cel-java/pull/728 * Enable updated accumulator variable for CEL-Java parser by default. in https://github.com/google/cel-java/pull/537 ## What's Changed ### Extension libraries * Implement math extension functions for floor, ceil, etc in https://github.com/google/cel-java/pull/650 * Porting lists.range() to Java Stack in https://github.com/google/cel-java/pull/685 * Adding the CEL regex extensions in https://github.com/google/cel-java/pull/708 * Updating Regex ext to align with Google SQL and Adding Regex documentation in https://github.com/google/cel-java/pull/722 * Aligning replace function in Regex ext with Google SQL in https://github.com/google/cel-java/pull/724 ### YAML serialization * Introduce serializable CEL environment with YAML in https://github.com/google/cel-java/pull/606 * Support for CelEnvironment to YAML in https://github.com/google/cel-java/pull/675 ### Lite Runtime (Android) * Add rules_android to WORKSPACE, add cel_android_library bzl macro in https://github.com/google/cel-java/pull/583 * Bring in android artifacts for guava and protobuf in WORKSPACE in https://github.com/google/cel-java/pull/584 * Implement interfaces for CelLiteRuntime. Add Android runtime tests in https://github.com/google/cel-java/pull/615 * Assert allowed CelOptions during CelLiteRuntime environment construction in https://github.com/google/cel-java/pull/619 * Split ProtoAdapter into ProtoLiteAdapter to adapt lite messages in https://github.com/google/cel-java/pull/636 * Bring in WORKSPACE dependencies for supporting CelLiteDescriptor codegen in https://github.com/google/cel-java/pull/647 * Add interpreter test for protolite messages in https://github.com/google/cel-java/pull/656 * Implement codegen for CelLiteDescriptor in https://github.com/google/cel-java/pull/659 * Add CelLiteDescriptorPool and DefaultLiteDescriptorPool in https://github.com/google/cel-java/pull/664 * Add ProtoMessageLiteValue and ProtoLiteCelValueConverter in https://github.com/google/cel-java/pull/666 * Perform field selections on lite messages by reading from the wire format in https://github.com/google/cel-java/pull/668 * Add ProtoMessageLiteValueProvider in https://github.com/google/cel-java/pull/669 * Rename CelLiteRuntimeTest to CelLiteRuntimeAndroidTest in https://github.com/google/cel-java/pull/671 * Add an interface for accepting CelValueProvider in lite runtime in https://github.com/google/cel-java/pull/672 * Add protolite tests for Android in https://github.com/google/cel-java/pull/673 * Add BaseProtoMessageValueProvider to decouple full/lite protobuf value providers in https://github.com/google/cel-java/pull/674 * Handle unknown fields in messagelite in https://github.com/google/cel-java/pull/683 * Rename CelFieldValueType to EncodingType in https://github.com/google/cel-java/pull/684 * Derive the java class name for CelLiteDescriptor in https://github.com/google/cel-java/pull/687 * Handle dependent protos when generating CelLiteDescriptor in https://github.com/google/cel-java/pull/692 * Add late bound function resolver to lite runtime's program interface in https://github.com/google/cel-java/pull/693 * Expose Late function bindings target for Android. in https://github.com/google/cel-java/pull/698 * Allow resolution of proto messages from dyn-typed functions in lite runtime in https://github.com/google/cel-java/pull/700 * Add `@Generated` annotation to codegened CelLiteDescriptor. Fix package location error prone warning for generated sources within srcjar. in https://github.com/google/cel-java/pull/704 * Separately generate lite descriptors per message in https://github.com/google/cel-java/pull/705 * Decouple CelTypeResolver from full protobuf implementation in https://github.com/google/cel-java/pull/590 * Add DefaultInstanceMessageLiteFactory in https://github.com/google/cel-java/pull/630 * Decouple ProtoCelValueConverter into BaseProtoCelValueConverter in https://github.com/google/cel-java/pull/660 * Partition CEL standard functions per function definition in https://github.com/google/cel-java/pull/707 * Remove extraneous protoTypeName argument from RuntimeTypeProvider interface in https://github.com/google/cel-java/pull/706 * Add an additional messageName argument to MessageProvider interface in https://github.com/google/cel-java/pull/662 * Add toRuntimeBuilder to CelLiteRuntime in https://github.com/google/cel-java/pull/620 ### Test runner framework * Push Testrunner to OSS in https://github.com/google/cel-java/pull/680 * Support unknown_set in output. in https://github.com/google/cel-java/pull/720 ### Miscellaneous * Split CelEvaluationException from runtime build target in https://github.com/google/cel-java/pull/555 * Remove deprecated ExprFeatures in https://github.com/google/cel-java/pull/557 * Allow AsyncProgram to accept an async resolver for an attribute in https://github.com/google/cel-java/pull/711 * Create a builder for CelEvaluationException in https://github.com/google/cel-java/pull/561 * Replace InterpreterExceptions with CelEvaluationException in the runtime path in https://github.com/google/cel-java/pull/564 * Remove InterpreterException in https://github.com/google/cel-java/pull/565 * Update CelUnparser and open up visibility so that inheriting class can use it in https://github.com/google/cel-java/pull/556 * Upgrade to Bazel 8, upgrade protobuf-java to 4.29.3 in https://github.com/google/cel-java/pull/582 * Explicitly set locale for String.format calls in https://github.com/google/cel-java/pull/577 * Enable conformance tests in https://github.com/google/cel-java/pull/596 * Add CelCompilerTool java binary and compile_cel bzl library in https://github.com/google/cel-java/pull/594 * Add empty binder to GlobalResolver in https://github.com/google/cel-java/pull/586 * fixed typo in README.md by @tobiKaboom in https://github.com/google/cel-java/pull/599 * Add capability to accept a CEL environment in CelCompilerTool in https://github.com/google/cel-java/pull/611 * Surface ExprId in CelIssue in https://github.com/google/cel-java/pull/604 * Add test coverage for overlapping overloads and invalid struct creation in https://github.com/google/cel-java/pull/608 * Decouple Activation from full protobuf implementation in https://github.com/google/cel-java/pull/614 * Change default java toolchain and build from 8 to 11. Add separate CI for Java 8 builds in https://github.com/google/cel-java/pull/616 * Augment runtime's toBuilder method to reinstantiate a builder from stored artifacts in https://github.com/google/cel-java/pull/623 * Change WellKnownProto to lookup a descriptor by its type name. Add google.protobuf.Empty and google.protobuf.FieldMask to WKP in https://github.com/google/cel-java/pull/626 * Drop support for java.lang.long uint support in CelValue in https://github.com/google/cel-java/pull/663 * Make UnspecifiedType abstract in https://github.com/google/cel-java/pull/676 * Fork timestamp/duration protobuf utility methods. Remove protobuf_java_util dependency from the runtime in https://github.com/google/cel-java/pull/682 * Remove deprecated CelExtensions#sets() in https://github.com/google/cel-java/pull/695 * Upgrade protobuf-java version to 4.31.0 in https://github.com/google/cel-java/pull/703 * Remove deprecated builder methods for accepting unknown attribute patterns in https://github.com/google/cel-java/pull/714 * Move Optional function bindings from standard lib to CelOptionalLibrary in https://github.com/google/cel-java/pull/710 * Make CelRuntime.Program an interface in https://github.com/google/cel-java/pull/729 * Switch CelStandardFunctions to use dev.cel.runtime.CelFunctionBinding in https://github.com/google/cel-java/pull/592 ## New Contributors * @tobiKaboom made their first contribution in https://github.com/google/cel-java/pull/599 * @maorwayn made their first contribution in https://github.com/google/cel-java/pull/728 **Full Changelog**: https://github.com/google/cel-java/compare/v0.9.1...v0.10.0
> [!NOTE] > If you encounter any compatibility issues with protobuf-java 4.x, use CEL-Java version `0.9.1-proto3` as a workaround. This is the same version as CEL-Java 0.9.1 with protobuf dependency pinned to 3.25.5. ## What's Changed * Add support for quoted field selectors in java. in https://github.com/google/cel-java/pull/544 * Add CelOptions for designating Regex program size in https://github.com/google/cel-java/pull/550 ## Miscellaneous * Retain the original identifier during parse when quoted identifier is disabled in https://github.com/google/cel-java/pull/547 * Create a separate maven artifact for adapting canonical CEL protos (CelProtoAbstractSyntaxTree, `dev.cel:protobuf` maven coordinate) in https://github.com/google/cel-java/pull/551 * Isolate CelAbstractSyntaxTree and CelSource from common build target in https://github.com/google/cel-java/pull/552 **Full Changelog**: https://github.com/google/cel-java/compare/v0.9.0...v0.9.1
> [!NOTE] > If you encounter any compatibility issues with protobuf-java 4.x, use CEL-Java version 0.9.0-proto3 as a workaround. This is the same version as CEL-Java 0.9.0 with protobuf dependency pinned to 3.25.5. ## Breaking Changes In an effort to make protobuf an optional dependency in CEL-Java, the following PR changes the resolution of `type(expr)` from proto based [cel.expr type value](https://github.com/google/cel-spec/blob/master/proto/cel/expr/value.proto#L71) into native equivalent [dev.cel.common.types.CelType](https://github.com/google/cel-java/blob/main/common/src/main/java/dev/cel/common/types/CelType.java#L35): * Expose CelType as a native representation for runtime type value. in https://github.com/google/cel-java/pull/505 The following PR changes the resolution of unknown values from [cel.expr unknown expr value](https://github.com/google/cel-spec/blob/master/proto/cel/expr/eval.proto#L99) into native equivalent [dev.cel.runtime.CelUnknownSet](https://github.com/google/cel-java/blob/main/runtime/src/main/java/dev/cel/runtime/CelUnknownSet.java#L30): * Enable adaptUnknownValueSetToNativeType by default in CelOptions in https://github.com/google/cel-java/pull/490 * Remove adaptUnknownValueSetToNativeType flag from CEL in https://github.com/google/cel-java/pull/496 The following PR removes previously deprecated methods that deal with canonical CEL expr values from `CelTypes` and `CelAbstractSyntaxTree` classes. The removed methods have been moved to [CelProtoAbstractSyntaxTree](https://github.com/google/cel-java/blob/main/common/src/main/java/dev/cel/common/CelProtoAbstractSyntaxTree.java#L43) and [CelProtoTypes](https://github.com/google/cel-java/blob/main/common/src/main/java/dev/cel/common/types/CelProtoTypes.java#L36): * Create CelProtoTypes utility class to handle CelExpr in proto format in https://github.com/google/cel-java/pull/524 * Remove deprecated methods in CelTypes in https://github.com/google/cel-java/pull/531 * Remove deprecated CelAbstractSyntaxTree#getProtoResultType in https://github.com/google/cel-java/pull/533 ## What's Changed * Add CelStandardDeclaration to allow environment subsetting for type-checker in https://github.com/google/cel-java/pull/448 * Add CelStandardFunctions to allow environment subsetting for the runtime in https://github.com/google/cel-java/pull/461 * Introduce late-bound functions into CEL-Java in https://github.com/google/cel-java/pull/494 * Add option to enable updated accumulator variable. in https://github.com/google/cel-java/pull/538 * Add CelOptions to disable string conversion and list/string concatenation in https://github.com/google/cel-java/pull/506 * Add CelOptions to disable comprehension in https://github.com/google/cel-java/pull/507 ## Fixes * Enforce strictness of type function https://github.com/google/cel-java/pull/474 * Fix macro parsing with receiver style args by @oridag in https://github.com/google/cel-java/pull/481 * Use an immutable copy of `DefaultDispatcher` to avoid synchronization in https://github.com/google/cel-java/pull/477 ## Miscellaneous * Fix feature_request.md config blocks by @sergiitk in https://github.com/google/cel-java/pull/485 * Remove unused test_java_proto package in https://github.com/google/cel-java/pull/526 * Remove reference to CheckedExpr proto in DefaultMetadata in https://github.com/google/cel-java/pull/521 * Migrate CelAttributeParser away from proto based expr to canonical cel expr in https://github.com/google/cel-java/pull/522 * Add expr ID set as a field to CelUnknownSet. in https://github.com/google/cel-java/pull/471 * Add a policy example that compiles then evaluates late bound functions in https://github.com/google/cel-java/pull/497 * Migrate dev/cel/common/ tests to use proto3 canonical conformance protos follow up will address proto2. in https://github.com/google/cel-java/pull/512 * Migrate dev/cel/extensions tests to use canonical conformance protos. in https://github.com/google/cel-java/pull/513 * Remove unnecessary unknown value adaptation in ProtoAdapter in https://github.com/google/cel-java/pull/499 * Migrate away from deprecated CelTypes methods in https://github.com/google/cel-java/pull/525 * Remove the legacy createInterpretable(CheckedExpr) in https://github.com/google/cel-java/pull/487 * Update runtime tests to refer to canonical cel conformance protos. in https://github.com/google/cel-java/pull/510 * Correctly suppress AutoValueMutable warnings in https://github.com/google/cel-java/pull/475 * Deprecate enableUnsignedLong option. Remove associated base interpreter tests. in https://github.com/google/cel-java/pull/515 * Cleanup of unused methods and build targets in https://github.com/google/cel-java/pull/469 * Move evaluateExpr utility methods to validator and optimizer in https://github.com/google/cel-java/pull/470 * Update WORKSPACE dependencies in https://github.com/google/cel-java/pull/530 * Remove references to deprecated type resolvers in the runtime. in https://github.com/google/cel-java/pull/520 * Remove retainComprehensionStructure flag in SubexpressionOptimizer in https://github.com/google/cel-java/pull/493 ## New Contributors * @sergiitk made their first contribution in https://github.com/google/cel-java/pull/485 * @oridag made their first contribution in https://github.com/google/cel-java/pull/481 **Full Changelog**: https://github.com/google/cel-java/compare/v0.8.0...v0.9.0
## Fixes * Fix CEL-Java to be fully protobuf v4 compatible in https://github.com/google/cel-java/pull/466 * Ensure empty YAML inputs yield checked exceptions https://github.com/google/cel-java/pull/463 ## Features * Add optional.unwrap in https://github.com/google/cel-java/pull/438 ## Miscellaneous * Expose CelPolicyValidationException constructors in https://github.com/google/cel-java/pull/450 * Make CelAbstractSyntaxTree and its dependents an AutoValue class to allow for equality checks in https://github.com/google/cel-java/pull/458 * Additional test case and error message refinement in https://github.com/google/cel-java/pull/464 **Full Changelog**: https://github.com/google/cel-java/compare/v0.7.1...v0.8.0
> [!IMPORTANT] > [enableUnsignedLongs in CelOptions](https://github.com/google/cel-java/blob/main/common/src/main/java/dev/cel/common/CelOptions.java#L421) is now enabled by default as of [#410](https://github.com/google/cel-java/commit/78dfcb527526de25e1b5f498bdde6f140c302801). Unsigned integer literals (**uint**) in CEL expressions will now be represented as **com.google.common.primitives.UnsignedLong** instead of **java.lang.Long** when evaluated. If your expressions expose these unsigned integer literals directly or you have custom functions that work with unsigned integers, you may need to explicitly disable this flag and make adjustments to avoid errors. ## Features * Add ListsExtension with flatten function https://github.com/google/cel-java/pull/427, [#434](https://github.com/google/cel-java/commit/7398767f80578ae0b23f25d7484dde699b023544) * Introduce ProtoUnsetFieldOptions to support unset handling like C++ in https://github.com/google/cel-java/pull/403 * Include identity functions in the standard definitions in https://github.com/google/cel-java/pull/405 * Add string to boolean conversion function in the standard definition in https://github.com/google/cel-java/pull/407 * Provide an overload to hide all fields on a message with ProtoTypeMask in https://github.com/google/cel-java/pull/415 * Parse explanations in match blocks in https://github.com/google/cel-java/pull/420 * Improved support for nested rules in https://github.com/google/cel-java/pull/422 * Add a validator for enforcing AST depth limit in https://github.com/google/cel-java/pull/421 * Enforce composed AST stays below the configured depth limit in https://github.com/google/cel-java/pull/424 * Improve CSE for comprehensions by taking into their nesting level and types into account in https://github.com/google/cel-java/pull/430 * Add an option to prevent breaking apart a comprehension in CSE in https://github.com/google/cel-java/pull/432 * Enable retainComprehensionStructure by default in https://github.com/google/cel-java/pull/436 * Add unreachable checks in policies in https://github.com/google/cel-java/pull/423 ## Fixes * Do not override the container if it's missing from policy config in https://github.com/google/cel-java/pull/401 * Add option to specify folding designated custom functions only in https://github.com/google/cel-java/pull/402 * Fix conditionally nested rules to include its condition in https://github.com/google/cel-java/pull/404 * Fix runtime equality behavior for sets extension in https://github.com/google/cel-java/pull/416 * Reduce count of errors joined together during parsing error in https://github.com/google/cel-java/pull/417 https://github.com/google/cel-java/pull/418 ## Miscellaneous Changes * Upgrade protobuf version to 4.28.0 in https://github.com/google/cel-java/pull/439 * Remove unused list/map conversion functions from standard definitions in https://github.com/google/cel-java/pull/406 * Open source Java conformance tests in https://github.com/google/cel-java/pull/413 * Change cel_spec repo url to 0.16.0 in WORKSPACE in https://github.com/google/cel-java/pull/419 * Migrate test_all_types proto over to the cel-spec variant in https://github.com/google/cel-java/pull/433 **Full Changelog**: https://github.com/google/cel-java/compare/v0.6.0...v0.7.1
This release features CEL-based policy compilers with YAML support [(example)](https://github.com/google/cel-java/tree/main/policy/src/test/resources/restricted_destinations), adds a new extension library for dealing with Sets and includes minor bug fixes along with performance improvements. ## Fixes * Copy the suppress warning annotations to autovalue gened celexpr in https://github.com/google/cel-java/pull/359 * Check for presence of optional indices to prevent autoboxing in https://github.com/google/cel-java/pull/366 * Adapt the function dispatch result to allow for automatic Any unpacking in https://github.com/google/cel-java/pull/376 ## What's Changed * Implement CEL Set Extension in https://github.com/google/cel-java/pull/360 * Remove PartialMessage and IncompleteData in https://github.com/google/cel-java/pull/365 * Compute line offsets once when constructing CelCodePointArray https://github.com/google/cel-java/pull/368 * Remove celVarToDecl method in https://github.com/google/cel-java/pull/371 * Add an interface for encapsulating Source properties in https://github.com/google/cel-java/pull/369 * Add PolicySource in https://github.com/google/cel-java/pull/370 * Flag guard the function dispatch result adaptation change in https://github.com/google/cel-java/pull/383 * Implement YAML parser for policy configs in https://github.com/google/cel-java/pull/372 * Create a separate interface for validating required fields in a builder in https://github.com/google/cel-java/pull/373 * Add the capability to extend CEL environment from parsed config in https://github.com/google/cel-java/pull/374 * Add YAML policy test cases in https://github.com/google/cel-java/pull/375 * Implement YAML parser for policies in https://github.com/google/cel-java/pull/377 * Move computing offset location into CelSourceHelper for reuse in https://github.com/google/cel-java/pull/379 * Add AstMutator methods to construct cel.bind macro with varInit containing macros in https://github.com/google/cel-java/pull/380 * Add AstMutator methods to construct function calls in https://github.com/google/cel-java/pull/381 * Add Policy Compiler in https://github.com/google/cel-java/pull/378 * Add factories for policy parser and policy compiler in https://github.com/google/cel-java/pull/382 * Add capability to visit custom tags in https://github.com/google/cel-java/pull/384 * Pull getIssueString logic into CelIssue in https://github.com/google/cel-java/pull/385 * Introduce protobuf message testing to policies in https://github.com/google/cel-java/pull/386 * Validate required fields for policy variables in https://github.com/google/cel-java/pull/387 * Compute absolute source location correctly for multiline YAML strings in https://github.com/google/cel-java/pull/395 * Make iteration limit configurable for rule composer in https://github.com/google/cel-java/pull/393 * Decompose policy compile API into rule compilation and composition in https://github.com/google/cel-java/pull/397 * Surface type-mismatch errors in a readable fashion during rule composition in https://github.com/google/cel-java/pull/399 **Full Changelog**: https://github.com/google/cel-java/compare/v0.5.2...v0.6.0
No actual changes from [v0.5.0](https://github.com/google/cel-java/releases/tag/v0.5.0). The version was bumped to address an issue with pom.xml missing in Maven Central Repository.
This release introduces mutable expressions to improve the performance of augmenting an AST via CEL optimizers. ## 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 https://github.com/google/cel-java/pull/318 * Remove modifier create from mutable variants of list, map and struct in https://github.com/google/cel-java/pull/323 * Remove create modifiers from list,struct,map methods in https://github.com/google/cel-java/pull/321 ## What's Changed * Accept a list as an argument to setParameterTypes in function overload decl in https://github.com/google/cel-java/pull/278 * Add a SubexpressionOptimizer baseline test case for fully extractable presence tests in https://github.com/google/cel-java/pull/287 * Implement CelMutableExpr in https://github.com/google/cel-java/pull/289 * Add CelMutableIdent in https://github.com/google/cel-java/pull/291 * Add CelMutableCreateList https://github.com/google/cel-java/pull/292 * Add CelMutableSelect in https://github.com/google/cel-java/pull/297 * Add CelMutableCreateStruct in https://github.com/google/cel-java/pull/293 * Add CelMutableCreateMap in https://github.com/google/cel-java/pull/294 * Add CelMutableComprehension in https://github.com/google/cel-java/pull/295 * Add CelMutableCall https://github.com/google/cel-java/pull/298 * Add copy constructor to deep copy mutable expressions in https://github.com/google/cel-java/pull/296 * Introduce a common expression tree interface between CelExpr and CelMutableExpr in https://github.com/google/cel-java/pull/300 * Compute Max IDs per subtree in NavigableExpr in https://github.com/google/cel-java/pull/302 * Add CelMutableAst in https://github.com/google/cel-java/pull/303 * Change MutableExprVisitor to visit using CelMutableExpr in https://github.com/google/cel-java/pull/304 * Change AST Mutator to accept mutable ASTs in https://github.com/google/cel-java/pull/305 * Change ConstantFoldingOptimizer to leverage mutable exprs in https://github.com/google/cel-java/pull/308 * Fully perform CSE on presence tests where possible in https://github.com/google/cel-java/pull/311 * Change AstMutator to augment macro source using mutable expr in https://github.com/google/cel-java/pull/314 * Drop expr suffix from CelExpr static constructors in https://github.com/google/cel-java/pull/317 * Specify better error message and code for invalid field selections in https://github.com/google/cel-java/pull/316 * Improve canEliminate logic by excluding nodes from ineligible comprehension branches in https://github.com/google/cel-java/pull/312 * Remove appending create modifier in ExprFormatter in https://github.com/google/cel-java/pull/320 * Remove modifier create from the common expression interface in https://github.com/google/cel-java/pull/319 * Change CelAstOptimizer interface signature. Cleanup unused methods in https://github.com/google/cel-java/pull/310 * Change SubexpressionOptimizer to leverage mutable exprs in https://github.com/google/cel-java/pull/309 * Add Mutable versions of NavigableExpr and AST in https://github.com/google/cel-java/pull/307 * Remove cached hashcode from MutableExpr in https://github.com/google/cel-java/pull/306 * Create a base navigable class that accepts a bound generic type of an expression in https://github.com/google/cel-java/pull/301 * Add a converter for adapting between CelExpr and CelMutableExpr https://github.com/google/cel-java/pull/299 * Rename MutableAst to AstMutator in https://github.com/google/cel-java/pull/290 * Use simple for loop instead of stream in CEL runtime equality https://github.com/google/cel-java/pull/280 ## Fixes * Fix timestamp and duration conversion for JSON in https://github.com/google/cel-java/pull/332 * Change comprehension variable mangling logic to always generate a unique index per comprehension expr in https://github.com/google/cel-java/pull/330 * Fix optional type resolution in https://github.com/google/cel-java/pull/283 * Fix optional field selection behavior on structs in https://github.com/google/cel-java/pull/286 * Clean up dangling source information from macro expansion in https://github.com/google/cel-java/pull/337 * Do not re-use ID twice in exists_one macro in https://github.com/google/cel-java/pull/338 * Dedupe enum types by enum descriptor's fully qualified name in ProtoMessageTypeProvider in https://github.com/google/cel-java/pull/324 ## Miscellaneous * Remove main AutoValue dependency from the published jar in https://github.com/google/cel-java/pull/315 * Add `load()` statements for the builtin Bazel java rules in https://github.com/google/cel-java/pull/284 * Update bazel WORKSPACE dependencies https://github.com/google/cel-java/pull/331 * Remove maven artifacts for optimizer, validator and extensions in https://github.com/google/cel-java/pull/327 * Add capability to regenerate baseline tests into a file in https://github.com/google/cel-java/pull/329 **Full Changelog**: https://github.com/google/cel-java/compare/v0.4.1...v0.5.0