Skip to content
Open

Main #1228

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
210 commits
Select commit Hold shift + click to select a range
6afaf8b
Fix Github Action workflow
l46kok Feb 24, 2026
ffc708a
Add support for importing / exporting shared feature flags to the env…
jnthntatum Feb 24, 2026
e8079d0
Implement optionals for planner
l46kok Feb 25, 2026
5006390
Add support for importing/exporting common limits to YAML environment…
jnthntatum Feb 25, 2026
0737691
Add conformance tests for planner
l46kok Feb 26, 2026
941932c
Prevent planning createMap for unsupported keys
l46kok Feb 26, 2026
3cebc1a
Expose planner based runtimes through experimental factories
l46kok Feb 26, 2026
d499ba8
Prevent planning createMap for heterogeneous duplicate keys
l46kok Feb 26, 2026
5103b30
Fix optionals to properly error on invalid qualification
l46kok Feb 27, 2026
9e1b5ee
Fix CelValue adaptation for lists/maps
l46kok Feb 28, 2026
3fd7b96
Fix null assignment to fields
l46kok Feb 28, 2026
a881ed4
Prepare 0.12.0 Release
l46kok Mar 2, 2026
84b5c5d
Use structured types in YAML export.
jnthntatum Mar 5, 2026
a5a1ef1
Add test cases around type-checking gp.NullValue
jnthntatum Mar 10, 2026
62c1f11
Null assignability fix for repeated and map fields
l46kok Mar 12, 2026
86ddee3
Upgrade GitHub Actions to latest versions
salmanmkc Mar 13, 2026
b3663bf
Merge pull request #985 from salmanmkc:upgrade-github-actions-node24-…
copybara-github Mar 14, 2026
4f6a571
Support partial evaluation via unknowns in planner
l46kok Mar 17, 2026
486a380
Allow specifying a set of optimizers to run to the policy compiler
l46kok Mar 17, 2026
b0a3f58
Set enableTimestampEpoch by default
l46kok Mar 19, 2026
3572797
Various fixes to CelEnvironment, YAML parsing and serialization
l46kok Mar 19, 2026
690d082
Deprecate enableTimestampEpoch option
l46kok Mar 20, 2026
b92f1f6
JSON field name resolution fix for shadowed cases
l46kok Mar 26, 2026
28d2b3c
Refactor test runner to accept required descriptors at the callsite, …
l46kok Mar 27, 2026
13568df
Internal Changes
l46kok Mar 27, 2026
75fafc9
Add string extensions quote and reverse
pkwarren Mar 27, 2026
6207811
Enable strings.quote conformance tests
pkwarren Mar 27, 2026
0e1a30f
Fix comments in bazel TESTS_TO_SKIP
pkwarren Mar 27, 2026
57e795a
Attempt to fix failing test
pkwarren Mar 27, 2026
943ae33
Add additional tests and address review feedback
pkwarren Mar 29, 2026
03d0a36
Additional malformed unicode tests
pkwarren Mar 29, 2026
79ff206
Add quote and reverse functions to docs
pkwarren Mar 29, 2026
576064d
Enable quoted identifiers by default
TristonianJones Mar 30, 2026
aaec509
Switch from enhanced for-loop to indexed one to improve comprehension…
l46kok Mar 30, 2026
6ca2c4d
Remove test and fix line length
pkwarren Mar 31, 2026
cbe0104
Optimize unary and binary function calls to avoid array allocation
l46kok Mar 31, 2026
05cb0a1
Remove createStruct planinng overhead for type-checked ASTs
l46kok Mar 31, 2026
8e9f1ac
Optimize attribute qualification process and empty message creation
l46kok Apr 1, 2026
ce4d217
Move fast-path unary/binary apply methods into an internal interface
l46kok Apr 1, 2026
4d00593
Fix partial evaluation to properly check for comprehension bound vari…
l46kok Apr 1, 2026
46bae72
Fix constant folding to not error when sub-asts contain unbound varia…
l46kok Apr 2, 2026
7d73658
Reject invalid unicode literals in the parser
l46kok Apr 3, 2026
664c31b
Implement cel.@block for planner
l46kok Apr 3, 2026
63cc846
Merge pull request #998 from pkwarren:pkw/string-ext-quote-reverse
copybara-github Apr 13, 2026
288c3b9
Add cel.@block test coverage for parsed-only mode
l46kok Apr 14, 2026
207dca5
Refactor tests to inject a runtime environment to invoke planner and …
l46kok Apr 14, 2026
8342a01
Add parsed-only evaluation test coverage to Regex Extensions
l46kok Apr 14, 2026
74ffbb3
Fix accu_init to be lazily initialized in folder. Add parsed-only eva…
l46kok Apr 14, 2026
3075687
Add parsed-only evaluation coverage to Proto Extensions
l46kok Apr 15, 2026
2203ac8
Support parsed-only evaluation for lists extensions, remove check for…
l46kok Apr 15, 2026
4f9a3a8
Add parsed-only evaluation coverage to Comprehensions Extensions
l46kok Apr 15, 2026
5667bd8
Implement mutable map support for planner
l46kok Apr 17, 2026
64bd51a
Change string.split to return an immutable list. Add parsed-only eval…
l46kok Apr 17, 2026
b029be3
Support parsed-only evaluation to encoders extension
l46kok Apr 20, 2026
5470c95
Restructure Java test runner to not require JVM classinfo inspection …
l46kok Apr 20, 2026
54060a2
Support parsed-only evaluation to sets extension
l46kok Apr 20, 2026
d12fb7e
Support parsed only evaluation to math extension. Remove signed long …
l46kok Apr 22, 2026
e7dff9b
Create a base class for extension tests
l46kok Apr 22, 2026
61a01d8
Change function failures (dispatch / overload match) to always includ…
l46kok Apr 22, 2026
f2d69d9
Add planner test coverage for policy compilation
l46kok Apr 23, 2026
1cd2806
Implement trace for planner
l46kok Apr 23, 2026
1e1d8ea
Implement exhaustive eval for planner
l46kok Apr 23, 2026
cd71e40
Promote planner runtime builders to the main factories
l46kok Apr 24, 2026
d699e28
Add CombinedCelValueConverter
l46kok Apr 24, 2026
f566450
Add value type parameter in StructValue
l46kok Apr 24, 2026
21c3318
Policy nested rule fix
l46kok Apr 28, 2026
9ff1f23
Introduce CEL Policy Conformance Test Runner for Java
l46kok May 1, 2026
fc24bfd
Internal Changes
l46kok May 1, 2026
d08c424
Internal Changes
l46kok May 4, 2026
5fc1766
Implement context_variable support in YAML environment
l46kok May 5, 2026
f89d7e5
Internal Changes
l46kok May 6, 2026
966b0cf
Add support for running policy error cases in conformance tests
l46kok May 6, 2026
14d4c2e
Track incompatible output types for accurate error reporting
l46kok May 7, 2026
bdfe823
Fix math.round to use HALF_UP to match doc, cel-go/cel-cpp
rayokota May 14, 2026
9988a34
Enable policy conformance test suite in OSS
l46kok May 14, 2026
558f09e
Implement Native Extensions
l46kok May 14, 2026
7bf3e04
Optimize list/map adaptations
l46kok May 14, 2026
0837a51
Fix double qualification in NamespacedAttribute
l46kok May 15, 2026
bfc4fdf
Refactor native extensions to separately hold type references
l46kok May 15, 2026
2a3fa90
Merge pull request #1054 from rayokota:fix-math-round
copybara-github May 15, 2026
c57d9d0
Release 0.13.0
l46kok May 15, 2026
7f1948d
Deprecate enableCelValue option
l46kok May 16, 2026
919ae0b
Internal change
May 20, 2026
1647b3b
Remove duplicate test policies and use the ones from cel-policy as SoT
l46kok May 22, 2026
caf39d7
Repo move announcement
dmitriplotnikov May 26, 2026
8c9bb8f
Internal Changes
May 27, 2026
98ce0bf
Internal Changes
l46kok May 28, 2026
659bfb9
Remove duplicate policy tests that's already covered by conformance t…
l46kok Jun 1, 2026
2793c00
Handle FIXED32/FIXED64 as unsigned in ProtoCelValueConverter
andrewparmet May 9, 2026
95faaa8
Preserve FieldMask as a message in the CelValue runtime path
andrewparmet May 9, 2026
c71923c
Add conformance test cases for policy variable scoping fixes
l46kok Jun 2, 2026
8f3d871
Fix dead code reachability logic erroneously flagging on unconditiona…
l46kok Jun 2, 2026
984193b
Wrap FieldMask via shared message-to-struct hook on the base converter
andrewparmet Jun 2, 2026
7f26293
Internal Changes
l46kok Jun 2, 2026
b9e7639
Revert "Wrap FieldMask via shared message-to-struct hook on the base …
andrewparmet Jun 2, 2026
abbd7cf
Override fromWellKnownProto in ProtoLiteCelValueConverter for FieldMask
andrewparmet Jun 3, 2026
c5d86d9
Remove redundant base FieldMask handler now that both converters inte…
andrewparmet Jun 3, 2026
7452e0d
Merge pull request #1073 from andrewparmet:fix-fixed32-fixed64-celvalue
copybara-github Jun 3, 2026
a6f2930
Merge pull request #1074 from andrewparmet:fix-fieldmask-celvalue
copybara-github Jun 5, 2026
02052f3
Safely ignore enums in native type extensions
l46kok Jun 9, 2026
359d39a
Expand support to arrays to Native type extensions
l46kok Jun 9, 2026
c2b6039
Internal Changes
l46kok Jun 11, 2026
f31ad58
Internal Changes
l46kok Jun 11, 2026
d917045
Ensure chained optional field selection does not repeatedly wrap the …
l46kok Jun 12, 2026
6e267b4
Release 0.13.1
l46kok Jun 13, 2026
a5817b4
Make OpaqueValue subclassable and resolve type in TypeResolver
l46kok Jun 15, 2026
8e46771
Update from google/cel-java to cel-expr/cel-java
dmitriplotnikov Jun 16, 2026
54acafe
Remove README warning regarding repo move
l46kok Jun 16, 2026
089a8e2
Add safe guards to ensure we don't build protoc from source
l46kok Jun 16, 2026
55244c7
Update from google/cel-spec to cel-expr/cel-spec (Part 2)
dmitriplotnikov Jun 16, 2026
62b1c1c
Parallelize github actions workflow for Java8 builds
l46kok Jun 17, 2026
bb0b958
Refine iteration variable validation in CEL macros.
jcking Jun 17, 2026
2bf3353
Switch constant folding to pre-order traversal
l46kok Jun 22, 2026
751a027
Internal Changes
l46kok Jun 23, 2026
2173c34
Internal Changes
l46kok Jun 23, 2026
534f651
Fix optional macro calls to be foldable
l46kok Jun 24, 2026
3e7dea1
Support pruning aggregate literals in optionals
l46kok Jun 26, 2026
0b2bf66
Create CelBlock abstraction to centralize cel.@block logic
l46kok Jun 30, 2026
8f05b8e
Update documentation and CEL-Java codelabs to use planner
l46kok Jul 1, 2026
b617a14
Prepare for planner migration by shifting standard CEL builders to pr…
l46kok Jul 1, 2026
d7f3b3c
Internal Changes
l46kok Jul 2, 2026
028e171
Internal Changes
l46kok Jul 7, 2026
313a3cd
Update workflow.yml
l46kok Jul 9, 2026
7d6d21e
Merge pull request #1118 from l46kok:disable-repository-cache
copybara-github Jul 10, 2026
fe24e6e
Migrate Lite Runtime to Program Planner
l46kok Jul 13, 2026
eaf61f7
Add more unit tests for ConstantFoldingOptimizer
Jul 14, 2026
3ca90e1
Internal Changes
l46kok Jul 15, 2026
e11f8d2
Internal Changes
l46kok Jul 15, 2026
bf86338
Internal Changes
l46kok Jul 15, 2026
186eb6b
Internal Changes
l46kok Jul 17, 2026
a8a288e
Internal Changes
l46kok Jul 17, 2026
ff7bccf
Open source the CEL formal verification framework
l46kok Jul 18, 2026
b3d1158
Support cross-type numeric equality in verifier
l46kok Jul 20, 2026
9617d14
Optimize SwitchBuilder to prune dead SMT branches
l46kok Jul 20, 2026
4cd8411
Generate satisfiable model for isSatisfiable
l46kok Jul 20, 2026
8b7d909
Fix notStrictlyFalse semantics in verifier
l46kok Jul 20, 2026
077d9a9
Implement custom policy invariants verification
l46kok Jul 21, 2026
c11a0f5
Preserve the original CelExpr from symbol table for comprehensions in…
l46kok Jul 21, 2026
250bff3
Port CEL-Go basic Protobuf constant folding syntax to CEL-Java
stanleyycheung Jul 22, 2026
f4ee049
Add optional pruning operator (?foo) handling to CEL Java's verifier
l46kok Jul 22, 2026
59cd48f
Replace quantifiers with array extensionality for map bijection in ve…
l46kok Jul 22, 2026
63f4751
Minor fix to readme.md
l46kok Jul 23, 2026
46e1933
Internal change
Jul 23, 2026
62d37c8
Add variable bounds for optionals in verifier
l46kok Jul 23, 2026
22e84f7
Add counterexample generation for optional values
l46kok Jul 23, 2026
c97a361
Add an axiom for optional.ofZeroValue for verifier
l46kok Jul 23, 2026
db6432f
Fix overflow handlings for Uint, add more test cases around IntSort o…
l46kok Jul 23, 2026
d4c8913
Make invariant violation messages policy-specific
l46kok Jul 27, 2026
f502672
Implement optional field traversal semantics in verifier
l46kok Jul 27, 2026
0bd9173
No public description
Jul 28, 2026
6b019ec
Implement JSON value unwrapping capability in verifier
l46kok Jul 28, 2026
36b268b
Add limit for expression nodes during parsing.
jnthntatum Jul 28, 2026
2a08d78
Fix floating point comparisons involving infinity/NaN for cross-type …
l46kok Jul 28, 2026
8bfc4c7
Fix conformance issues around type conversion overflows and duration …
l46kok Jul 29, 2026
01ac8a5
Fix conformance test case around receiver function names containing r…
l46kok Jul 29, 2026
310d96f
Avoid copying complex target in optMap/optFlatMap
jnthntatum Jul 29, 2026
e947ca5
Fix ConstantFoldingOptimizer to not treat true && dyn_x as a tautology
l46kok Jul 30, 2026
8d150b2
Add aggregate semantics to Policy Compiler
l46kok Jul 31, 2026
eb6fc20
Introduce timestamp/duration as first class types in verifier. Add ar…
l46kok Aug 1, 2026
1dccf2f
Add type constraints to uninterpreted conversions
l46kok Aug 1, 2026
0b9ee2f
Mark uninterpreted conversions with literals as approximate
l46kok Aug 1, 2026
e0e717b
Handle AccumulatedUnknowns in execution plan.
stanleyycheung Aug 2, 2026
989c8c5
Prevent ConstantFoldingOptimizer to fold x in [x] for dyn/double type…
l46kok Aug 3, 2026
ecc7a55
Prevent error values in map and list counterexamples
l46kok Aug 5, 2026
83f5782
Add CLI for Verifier
l46kok Aug 5, 2026
75e0900
Add REPL for Verifier
l46kok Aug 5, 2026
54ecf52
Prevent spurious counterexamples on maps by tightening its domain
l46kok Aug 5, 2026
2da98c9
Tighten the counterexample domain for double/int and parameterized un…
l46kok Aug 5, 2026
8106467
Add a canonicalization pass to CEL verifier
l46kok Aug 7, 2026
d5f903b
Include verifier and verifier-cli as publishable maven artifacts
l46kok Aug 7, 2026
d459cc9
Introduce common helpers for handling AST navigation
l46kok Aug 7, 2026
29fd271
Add timestamp, duration and optional types to CEL Verifier CLI
l46kok Aug 7, 2026
0cdb3b6
Refactor Canonicalization Optimizer
l46kok Aug 7, 2026
2716714
Add a helper function for finding the declaring comprehension from an…
l46kok Aug 7, 2026
d86bfbe
Add canonicalization for two-variable comprehensions
l46kok Aug 7, 2026
d8f2fca
Add helpers for performing fixed point optimization
l46kok Aug 10, 2026
f847b0c
Internal Changes
l46kok Aug 11, 2026
94ba8ad
Consolidate emit to output for aggregate policies
l46kok Aug 11, 2026
30f8e6d
Add a validation pass for ID uniqueness in optimizers
l46kok Aug 12, 2026
1ba7cc7
Default enable AST validation in optimizers
l46kok Aug 13, 2026
496434e
Handle custom functions returning unknowns in planner
l46kok Aug 13, 2026
e5c1466
Remove CelOptimizerOptions
l46kok Aug 13, 2026
e13bec5
Add block_ext to conformance test suite, refactor to consolidate cel.…
l46kok Aug 14, 2026
05bf69c
Add shorthand type specifier syntax for policy configs
l46kok Aug 14, 2026
849cb3e
Avoid concatenating superfluous empty list for aggregate semantics
l46kok Aug 17, 2026
5cf3ab3
Prepare 0.14.0 release
l46kok Aug 17, 2026
426fa24
Add agent_tool_execution_governance aggregate policy to conformance test
l46kok Aug 18, 2026
9333702
Deprecate setStandardEnvironmentEnabled flag in favor of subsetting
l46kok Aug 19, 2026
7f4a4e5
Add utility to find comprehension variables
Aug 27, 2026
a2353b3
Add EvalIndex to planner
l46kok Aug 31, 2026
9a97aec
Add async function bindings, observer, and drain strategies
l46kok Sep 3, 2026
d374a0d
Add optimizer listener
Sep 7, 2026
892dfce
[Pratt parser] Initial implementation - private, for now
dmitriplotnikov Sep 9, 2026
2bb86d0
Implement field selection optimizer
l46kok Sep 9, 2026
fbe7f97
Fix a bug in the `assertAstIdCorrectness` method and avoid re-checkin…
Sep 10, 2026
e955f8e
Avoid unnecessary AST renumbering in CEL optimizers when no changes a…
Sep 10, 2026
d88ea56
Fix CEL Java sortBy macro expansion to preserve element type and avoi…
laiyichin Sep 10, 2026
2db56dd
Introduce cel_verifier_test Bazel macro for CEL verification.
maskri17 Sep 10, 2026
226484d
Fix type unification for type parameters
l46kok Sep 10, 2026
6a8a056
Add enablePrattParser option and split Parser into AntlrParser and di…
dmitriplotnikov Sep 11, 2026
045e576
Add plumbing for executor, async evaluation option. Define program AP…
l46kok Sep 11, 2026
abff7d1
Internal build change
TristonianJones Sep 11, 2026
33da350
Optimize CEL PrattParser and Lexer performance
dmitriplotnikov Sep 12, 2026
6124cb0
Avoid intermediate slice views when reading token text
dmitriplotnikov Sep 14, 2026
c9f8f60
Add async concurrency gate
l46kok Sep 14, 2026
cf1292b
Remove throwaway builders, boxed positions and eager maps from the pa…
dmitriplotnikov Sep 14, 2026
ca299fa
Add test cases around map type parameter propagation
l46kok Sep 15, 2026
1c1604c
Change cel.@attribute to return a parameterized type to avoid dyn typ…
l46kok Sep 15, 2026
e1a373b
Add top-level APIs for instantiating pratt parser in Android
l46kok Sep 15, 2026
248b623
Add async completion coordinator
l46kok Sep 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
13 changes: 11 additions & 2 deletions .bazelrc
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
common --enable_bzlmod
# Use built-in protoc
common --incompatible_enable_proto_toolchain_resolution --@com_google_protobuf//bazel/toolchains:prefer_prebuilt_protoc
common --incompatible_enable_proto_toolchain_resolution
common --@com_google_protobuf//bazel/toolchains:prefer_prebuilt_protoc=true

# Ensure that we don't accidentally build protobuf or gRPC
common --per_file_copt=external/.*protobuf.*@--PROTOBUF_WAS_NOT_SUPPOSED_TO_BE_BUILT
common --host_per_file_copt=external/.*protobuf.*@--PROTOBUF_WAS_NOT_SUPPOSED_TO_BE_BUILT
common --per_file_copt=external/.*grpc.*@--GRPC_WAS_NOT_SUPPOSED_TO_BE_BUILT
common --host_per_file_copt=external/.*grpc.*@--GRPC_WAS_NOT_SUPPOSED_TO_BE_BUILT
build --java_runtime_version=remotejdk_11
build --java_language_version=11

Expand All @@ -10,5 +16,8 @@ build --java_language_version=11
common --javacopt=-Xlint:-options

# Remove flag once https://github.com/google/cel-spec/issues/508 and rules_jvm_external is fixed.
common --incompatible_autoload_externally=proto_library,cc_proto_library,java_proto_library,java_test
common --incompatible_autoload_externally=proto_library,cc_proto_library,java_proto_library,java_test,java_import

# Limit repository cache size by not caching extracted repository contents
build --repo_contents_cache=

1 change: 1 addition & 0 deletions .github/workflows/cross_artifact_dependencies_check.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ TARGETS=(
"//publish:cel_runtime"
"//publish:cel_protobuf"
"//publish:cel_v1alpha1"
"//publish:cel_verifier"
)

echo "------------------------------------------------"
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/unwanted_deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,8 @@ checkUnwantedDeps '//publish:cel' '@maven_android//:com_google_protobuf_protobuf
# cel_runtime_android shouldn't depend on the full protobuf runtime or antlr
checkUnwantedDeps '//publish:cel_runtime_android' '@maven//:com_google_protobuf_protobuf_java'
checkUnwantedDeps '//publish:cel_runtime_android' '@maven//:org_antlr_antlr4_runtime'

# cel shouldn't depend on the verifier
checkUnwantedDeps '//publish:cel' '//verifier/'

exit 0
25 changes: 15 additions & 10 deletions .github/workflows/workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ concurrency:
cancel-in-progress: true

jobs:
Static-Checks:
Bazel-Build-Java8:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
Expand All @@ -30,16 +30,21 @@ jobs:
# Avoid downloading Bazel every time.
bazelisk-cache: true
# Store build cache per workflow.
disk-cache: ${{ github.workflow }}
disk-cache: ${{ github.workflow }}-${{ github.job }}
# Share repository cache between workflows.
repository-cache: true
# Never write to the cache, strictly read-only
cache-save: false
# Prevent PRs from polluting cache
cache-save: ${{ github.event_name != 'pull_request' }}
- name: Bazel Output Version
run: bazelisk --version
- name: Java 8 Build
run: bazel build ... --java_language_version=8 --java_runtime_version=8 --build_tag_filters=-conformance_maven
- name: Unwanted Dependencies
run: .github/workflows/unwanted_deps.sh
- name: Cross-artifact Duplicate Classes Check
run: .github/workflows/cross_artifact_dependencies_check.sh
- run: echo "🍏 This job's status is ${{ job.status }}."

Bazel-Tests:
runs-on: ubuntu-latest
timeout-minutes: 30
Expand All @@ -55,15 +60,13 @@ jobs:
# Avoid downloading Bazel every time.
bazelisk-cache: true
# Store build cache per workflow.
disk-cache: ${{ github.workflow }}
disk-cache: ${{ github.workflow }}-${{ github.job }}
# Share repository cache between workflows.
repository-cache: true
# Prevent PRs from polluting cache
cache-save: ${{ github.event_name != 'pull_request' }}
- name: Bazel Output Version
run: bazelisk --version
- name: Java 8 Build
run: bazel build ... --java_language_version=8 --java_runtime_version=8 --build_tag_filters=-conformance_maven
- name: Bazel Test
# Exclude codelab exercises as they are intentionally made to fail
# Exclude maven conformance tests. They are only executed when there's version change.
Expand All @@ -82,7 +85,7 @@ jobs:
uses: actions/checkout@v6
- name: Get changed files
id: changed_file
uses: tj-actions/changed-files@v46
uses: tj-actions/changed-files@v47
with:
files: publish/cel_version.bzl
- name: Setup Bazel
Expand All @@ -92,7 +95,7 @@ jobs:
# Avoid downloading Bazel every time.
bazelisk-cache: true
# Store build cache per workflow.
disk-cache: ${{ github.workflow }}
disk-cache: ${{ github.workflow }}-${{ github.job }}
# Share repository cache between workflows.
repository-cache: true
# Never write to the cache, strictly read-only
Expand Down Expand Up @@ -121,4 +124,6 @@ jobs:
- name: Run Conformance Maven Test on Version Change
if: steps.changed_file.outputs.any_changed == 'true'
run: bazelisk test //conformance/src/test/java/dev/cel/conformance:conformance_maven --test_output=errors
- run: echo "🍏 This job's status is ${{ job.status }}."
- run: echo "🍏 This job's status is ${JOB_STATUS}."
env:
JOB_STATUS: ${{ job.status }}
9 changes: 9 additions & 0 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ java_library(
neverlink = 1,
exports = [
"@maven//:com_google_auto_value_auto_value_annotations",
"@maven//:org_jspecify_jspecify",
],
)

Expand All @@ -95,6 +96,14 @@ java_library(
],
)

java_library(
name = "java_jline",
exports = [
"@maven//:org_jline_jline_reader",
"@maven//:org_jline_jline_terminal",
],
)

default_java_toolchain(
name = "repository_default_toolchain",
configuration = DEFAULT_TOOLCHAIN_CONFIGURATION,
Expand Down
58 changes: 37 additions & 21 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -16,32 +16,41 @@ module(
name = "cel_java",
)

bazel_dep(name = "bazel_skylib", version = "1.8.2")
bazel_dep(name = "rules_jvm_external", version = "6.9")
bazel_dep(name = "protobuf", version = "33.4", repo_name = "com_google_protobuf") # see https://github.com/bazelbuild/rules_android/issues/373
bazel_dep(name = "googleapis", version = "0.0.0-20241220-5e258e33.bcr.1", repo_name = "com_google_googleapis")
bazel_dep(name = "rules_pkg", version = "1.0.1")
bazel_dep(name = "bazel_skylib", version = "1.9.2")
bazel_dep(name = "rules_jvm_external", version = "7.1")
bazel_dep(name = "protobuf", version = "35.1", repo_name = "com_google_protobuf") # see https://github.com/bazelbuild/rules_android/issues/373
bazel_dep(name = "googleapis", version = "0.0.0-20260728-b8486a2f", repo_name = "com_google_googleapis")
bazel_dep(name = "rules_pkg", version = "1.2.0")
bazel_dep(name = "rules_license", version = "1.0.0")
bazel_dep(name = "rules_proto", version = "7.1.0")
bazel_dep(name = "rules_java", version = "9.3.0")
bazel_dep(name = "rules_android", version = "0.7.1")
bazel_dep(name = "rules_shell", version = "0.6.1")
bazel_dep(name = "googleapis-java", version = "1.0.0")
bazel_dep(name = "cel-spec", version = "0.24.0", repo_name = "cel_spec")
bazel_dep(name = "rules_java", version = "9.7.0")
bazel_dep(name = "rules_android", version = "0.7.3")
bazel_dep(name = "rules_shell", version = "0.8.0")
bazel_dep(name = "googleapis-java", version = "1.1.5")
bazel_dep(name = "cel-spec", version = "0.25.2", repo_name = "cel_spec")
bazel_dep(name = "rules_go", version = "0.62.0")

# Required by cel-spec to satisfy gazelle transitive dependency
go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
go_sdk.download(version = "1.26.5")

switched_rules = use_extension("@com_google_googleapis//:extensions.bzl", "switched_rules")
switched_rules.use_languages(java = True)
use_repo(switched_rules, "com_google_googleapis_imports")

maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")

GUAVA_VERSION = "33.5.0"
AUTO_VALUE_VERSION = "1.11.1"

GUAVA_VERSION = "33.6.0"

JLINE_VERSION = "3.30.16"

TRUTH_VERSION = "1.4.4"
TRUTH_VERSION = "1.4.5"

PROTOBUF_JAVA_VERSION = "4.33.5"
PROTOBUF_JAVA_VERSION = "4.35.1"

CEL_VERSION = "0.12.0-SNAPSHOT"
CEL_VERSION = "0.14.0"

# Compile only artifacts
[
Expand All @@ -53,7 +62,7 @@ CEL_VERSION = "0.12.0-SNAPSHOT"
)
for group, artifact, version in [coord.split(":") for coord in [
"com.google.code.findbugs:annotations:3.0.1",
"com.google.errorprone:error_prone_annotations:2.42.0",
"com.google.errorprone:error_prone_annotations:2.50.0",
]]
]

Expand All @@ -67,8 +76,8 @@ CEL_VERSION = "0.12.0-SNAPSHOT"
)
for group, artifact, version in [coord.split(":") for coord in [
"org.mockito:mockito-core:4.11.0",
"io.github.classgraph:classgraph:4.8.179",
"com.google.testparameterinjector:test-parameter-injector:1.18",
"io.github.classgraph:classgraph:4.8.186",
"com.google.testparameterinjector:test-parameter-injector:1.22",
"com.google.guava:guava-testlib:" + GUAVA_VERSION + "-jre",
"com.google.truth.extensions:truth-java8-extension:" + TRUTH_VERSION,
"com.google.truth.extensions:truth-proto-extension:" + TRUTH_VERSION,
Expand All @@ -81,19 +90,23 @@ maven.install(
name = "maven",
# keep sorted
artifacts = [
"com.google.auto.value:auto-value:1.11.0",
"com.google.auto.value:auto-value-annotations:1.11.0",
"com.google.auto.value:auto-value:" + AUTO_VALUE_VERSION,
"com.google.auto.value:auto-value-annotations:" + AUTO_VALUE_VERSION,
"com.google.guava:guava:" + GUAVA_VERSION + "-jre",
"com.google.protobuf:protobuf-java:" + PROTOBUF_JAVA_VERSION,
"com.google.protobuf:protobuf-java-util:" + PROTOBUF_JAVA_VERSION,
"com.google.re2j:re2j:1.8",
"info.picocli:picocli:4.7.7",
"org.antlr:antlr4-runtime:4.13.2",
"org.freemarker:freemarker:2.3.34",
"org.jline:jline-reader:" + JLINE_VERSION,
"org.jline:jline-terminal:" + JLINE_VERSION,
"org.jspecify:jspecify:1.0.0",
"org.threeten:threeten-extra:1.8.0",
"org.yaml:snakeyaml:2.5",
"org.threeten:threeten-extra:1.10.0",
"org.yaml:snakeyaml:2.6",
"tools.aqua:z3-turnkey:4.14.1",
],
known_contributing_modules = ["protobuf"],
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
Expand Down Expand Up @@ -121,14 +134,17 @@ maven.install(
"dev.cel:compiler:" + CEL_VERSION,
"dev.cel:runtime:" + CEL_VERSION,
],
fail_on_missing_checksum = not CEL_VERSION.endswith("-SNAPSHOT"),
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
"https://central.sonatype.com/repository/maven-snapshots/",
"m2local",
],
)
use_repo(maven, "maven", "maven_android", "maven_conformance")

non_module_dependencies = use_extension("//:repositories.bzl", "non_module_dependencies")
use_repo(non_module_dependencies, "antlr4_jar")
use_repo(non_module_dependencies, "bazel_common")
use_repo(non_module_dependencies, "cel_policy")
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,14 @@ CEL-Java is available in Maven Central Repository. [Download the JARs here][8] o
<dependency>
<groupId>dev.cel</groupId>
<artifactId>cel</artifactId>
<version>0.11.1</version>
<version>0.14.0</version>
</dependency>
```

**Gradle**

```gradle
implementation 'dev.cel:cel:0.11.1'
implementation 'dev.cel:cel:0.14.0'
```

Then run this example:
Expand All @@ -84,7 +84,7 @@ public class HelloWorld {
private static final CelCompiler CEL_COMPILER =
CelCompilerFactory.standardCelCompilerBuilder().addVar("my_var", SimpleType.STRING).build();
private static final CelRuntime CEL_RUNTIME =
CelRuntimeFactory.standardCelRuntimeBuilder().build();
CelRuntimeFactory.plannerRuntimeBuilder().build();

public void run() throws CelValidationException, CelEvaluationException {
// Compile the expression into an Abstract Syntax Tree.
Expand Down Expand Up @@ -144,7 +144,7 @@ found in the [`CelCompilerBuilder`][9].
Some CEL use cases only require parsing of an expression in order to be useful.
For example, one example might want to check whether the expression contains any
nested comprehensions, or possibly to pass the parsed expression to a C++ or Go
binary for evaluation. Presently, Java does not support parse-only evaluation.
binary for evaluation.

```java
CelValidationResult parseResult =
Expand Down Expand Up @@ -231,7 +231,7 @@ Expressions can be evaluated using once they are type-checked/compiled by
creating a `CelRuntime.Program` from a `CelAbstractSyntaxTree`:

```java
CelRuntime celRuntime = CelRuntimeFactory.standardCelRuntimeBuilder().build();
CelRuntime celRuntime = CelRuntimeFactory.plannerRuntimeBuilder().build();
try {
CelRuntime.Program program = celRuntime.createProgram(compileResult.getAst());
return program.eval(
Expand Down Expand Up @@ -376,14 +376,14 @@ Java 8 or newer is required.

Released under the [Apache License](LICENSE).

[1]: https://github.com/google/cel-spec
[1]: https://github.com/cel-expr/cel-spec
[2]: https://groups.google.com/forum/#!forum/cel-java-discuss
[3]: https://github.com/google/guava
[4]: https://github.com/google/re2j
[5]: https://github.com/protocolbuffers/protobuf/tree/master/java
[6]: https://github.com/antlr/antlr4/tree/master/runtime/Java
[7]: https://github.com/google/cel-java/issues
[7]: https://github.com/cel-expr/cel-java/issues
[8]: https://search.maven.org/search?q=g:dev.cel
[9]: https://github.com/google/cel-java/blob/main/compiler/src/main/java/dev/cel/compiler/CelCompilerBuilder.java
[10]: https://github.com/google/cel-spec/blob/master/doc/langdef.md#macros
[11]: https://github.com/google/cel-java/blob/main/extensions/src/main/java/dev/cel/extensions/README.md
[9]: https://github.com/cel-expr/cel-java/blob/main/compiler/src/main/java/dev/cel/compiler/CelCompilerBuilder.java
[10]: https://github.com/cel-expr/cel-spec/blob/master/doc/langdef.md#macros
[11]: https://github.com/cel-expr/cel-java/blob/main/extensions/src/main/java/dev/cel/extensions/README.md
13 changes: 11 additions & 2 deletions bundle/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ package(

java_library(
name = "cel",
exports = ["//bundle/src/main/java/dev/cel/bundle:cel"],
exports = [
"//bundle/src/main/java/dev/cel/bundle:cel",
"//bundle/src/main/java/dev/cel/bundle:cel_factory",
],
)

java_library(
Expand All @@ -27,6 +30,12 @@ java_library(

java_library(
name = "environment_exporter",
visibility = ["//:internal"],
exports = ["//bundle/src/main/java/dev/cel/bundle:environment_exporter"],
)

java_library(
name = "cel_impl",
testonly = 1,
visibility = ["//:internal"],
exports = ["//bundle/src/main/java/dev/cel/bundle:cel_impl"],
)
Loading
Loading