diff --git a/bundle/BUILD.bazel b/bundle/BUILD.bazel
index 11e0b8a6d..1eaf0bec8 100644
--- a/bundle/BUILD.bazel
+++ b/bundle/BUILD.bazel
@@ -13,14 +13,6 @@ java_library(
],
)
-java_library(
- name = "cel_experimental_factory",
- visibility = ["//:internal"],
- exports = [
- "//bundle/src/main/java/dev/cel/bundle:cel_experimental_factory",
- ],
-)
-
java_library(
name = "environment",
exports = ["//bundle/src/main/java/dev/cel/bundle:environment"],
diff --git a/bundle/src/main/java/dev/cel/bundle/BUILD.bazel b/bundle/src/main/java/dev/cel/bundle/BUILD.bazel
index 822511e4c..742f718f1 100644
--- a/bundle/src/main/java/dev/cel/bundle/BUILD.bazel
+++ b/bundle/src/main/java/dev/cel/bundle/BUILD.bazel
@@ -35,7 +35,6 @@ java_library(
"@cel_spec//proto/cel/expr:checked_java_proto",
"@maven//:com_google_code_findbugs_annotations",
"@maven//:com_google_errorprone_error_prone_annotations",
- "@maven//:com_google_guava_guava",
"@maven//:com_google_protobuf_protobuf_java",
],
)
@@ -54,22 +53,6 @@ java_library(
"//compiler:compiler_builder",
"//parser",
"//runtime",
- ],
-)
-
-java_library(
- name = "cel_experimental_factory",
- srcs = ["CelExperimentalFactory.java"],
- tags = [
- ],
- deps = [
- ":cel",
- ":cel_impl",
- "//checker",
- "//common:options",
- "//common/annotations",
- "//compiler",
- "//parser",
"//runtime:runtime_planner_impl",
],
)
@@ -117,7 +100,6 @@ java_library(
tags = [
],
deps = [
- ":cel_factory",
":environment_exception",
":required_fields_checker",
"//:auto_value",
@@ -190,7 +172,6 @@ java_library(
"//common:options",
"//common/internal:env_visitor",
"//common/types:cel_proto_types",
- "//common/types:cel_types",
"//common/types:type_providers",
"//compiler:compiler_builder",
"//extensions",
diff --git a/bundle/src/main/java/dev/cel/bundle/CelExperimentalFactory.java b/bundle/src/main/java/dev/cel/bundle/CelExperimentalFactory.java
deleted file mode 100644
index 9a3e95dd8..000000000
--- a/bundle/src/main/java/dev/cel/bundle/CelExperimentalFactory.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2026 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package dev.cel.bundle;
-
-import dev.cel.checker.CelCheckerLegacyImpl;
-import dev.cel.common.CelOptions;
-import dev.cel.common.annotations.Beta;
-import dev.cel.compiler.CelCompilerImpl;
-import dev.cel.parser.CelParserImpl;
-import dev.cel.runtime.CelRuntimeImpl;
-
-/**
- * Experimental helper class to configure the entire CEL stack in a common interface, backed by the
- * new {@code ProgramPlanner} architecture.
- *
- *
All APIs and behaviors surfaced here are subject to change.
- */
-@Beta
-public final class CelExperimentalFactory {
-
- /**
- * Creates a builder for configuring CEL for the parsing, optional type-checking, and evaluation
- * of expressions using the Program Planner.
- *
- *
The {@code ProgramPlanner} architecture provides key benefits over the legacy runtime:
- *
- *
- * - Performance: Programs can be cached for improving evaluation speed.
- *
- Parsed-only expression evaluation: Unlike the traditional stack which required
- * supplying type-checked expressions, this architecture handles both parsed-only and
- * type-checked expressions.
- *
- */
- public static CelBuilder plannerCelBuilder() {
- return CelImpl.newBuilder(
- CelCompilerImpl.newBuilder(
- CelParserImpl.newBuilder(),
- CelCheckerLegacyImpl.newBuilder().setStandardEnvironmentEnabled(true)),
- CelRuntimeImpl.newBuilder())
- // CEL-Internal-2
- .setOptions(CelOptions.current().enableHeterogeneousNumericComparisons(true).build());
- }
-
- private CelExperimentalFactory() {}
-}
diff --git a/bundle/src/main/java/dev/cel/bundle/CelFactory.java b/bundle/src/main/java/dev/cel/bundle/CelFactory.java
index 6cc6d8192..ac589cfe6 100644
--- a/bundle/src/main/java/dev/cel/bundle/CelFactory.java
+++ b/bundle/src/main/java/dev/cel/bundle/CelFactory.java
@@ -20,6 +20,7 @@
import dev.cel.compiler.CelCompilerImpl;
import dev.cel.parser.CelParserImpl;
import dev.cel.runtime.CelRuntime;
+import dev.cel.runtime.CelRuntimeImpl;
import dev.cel.runtime.CelRuntimeLegacyImpl;
/** Helper class to configure the entire CEL stack in a common interface. */
@@ -44,6 +45,30 @@ public static CelBuilder standardCelBuilder() {
.setStandardEnvironmentEnabled(true);
}
+ /**
+ * Creates a builder for configuring CEL for the parsing, optional type-checking, and evaluation
+ * of expressions using the Program Planner.
+ *
+ * The {@code ProgramPlanner} architecture provides key benefits over the {@link
+ * #standardCelBuilder()}:
+ *
+ *
+ * - Performance: Programs can be cached for improving evaluation speed.
+ *
- Parsed-only expression evaluation: Unlike the traditional stack which required
+ * supplying type-checked expressions, this architecture handles both parsed-only and
+ * type-checked expressions.
+ *
+ */
+ public static CelBuilder plannerCelBuilder() {
+ return CelImpl.newBuilder(
+ CelCompilerImpl.newBuilder(
+ CelParserImpl.newBuilder(),
+ CelCheckerLegacyImpl.newBuilder().setStandardEnvironmentEnabled(true)),
+ CelRuntimeImpl.newBuilder())
+ // CEL-Internal-2
+ .setOptions(CelOptions.current().enableHeterogeneousNumericComparisons(true).build());
+ }
+
/** Combines a prebuilt {@link CelCompiler} and {@link CelRuntime} into {@link Cel}. */
public static Cel combine(CelCompiler celCompiler, CelRuntime celRuntime) {
return CelImpl.combine(celCompiler, celRuntime);
diff --git a/extensions/src/test/java/dev/cel/extensions/BUILD.bazel b/extensions/src/test/java/dev/cel/extensions/BUILD.bazel
index eed240317..f926e25b6 100644
--- a/extensions/src/test/java/dev/cel/extensions/BUILD.bazel
+++ b/extensions/src/test/java/dev/cel/extensions/BUILD.bazel
@@ -10,7 +10,6 @@ java_library(
deps = [
"//:java_truth",
"//bundle:cel",
- "//bundle:cel_experimental_factory",
"//common:cel_ast",
"//common:cel_exception",
"//common:compiler_common",
diff --git a/extensions/src/test/java/dev/cel/extensions/CelOptionalLibraryTest.java b/extensions/src/test/java/dev/cel/extensions/CelOptionalLibraryTest.java
index 4f348c12a..34c7f89f9 100644
--- a/extensions/src/test/java/dev/cel/extensions/CelOptionalLibraryTest.java
+++ b/extensions/src/test/java/dev/cel/extensions/CelOptionalLibraryTest.java
@@ -26,7 +26,6 @@
import com.google.testing.junit.testparameterinjector.TestParameters;
import dev.cel.bundle.Cel;
import dev.cel.bundle.CelBuilder;
-import dev.cel.bundle.CelExperimentalFactory;
import dev.cel.bundle.CelFactory;
import dev.cel.common.CelAbstractSyntaxTree;
import dev.cel.common.CelContainer;
@@ -113,7 +112,7 @@ private CelBuilder newCelBuilder(int version) {
switch (testMode) {
case PLANNER_PARSE_ONLY:
case PLANNER_CHECKED:
- celBuilder = CelExperimentalFactory.plannerCelBuilder();
+ celBuilder = CelFactory.plannerCelBuilder();
break;
case LEGACY_CHECKED:
celBuilder = CelFactory.standardCelBuilder();
diff --git a/publish/BUILD.bazel b/publish/BUILD.bazel
index d905edc4b..69622aada 100644
--- a/publish/BUILD.bazel
+++ b/publish/BUILD.bazel
@@ -32,7 +32,6 @@ RUNTIME_TARGETS = [
"//runtime/src/main/java/dev/cel/runtime:base",
"//runtime/src/main/java/dev/cel/runtime:interpreter",
"//runtime/src/main/java/dev/cel/runtime:late_function_binding",
- "//runtime/src/main/java/dev/cel/runtime:runtime_experimental_factory",
"//runtime/src/main/java/dev/cel/runtime:runtime_factory",
"//runtime/src/main/java/dev/cel/runtime:runtime_helpers",
"//runtime/src/main/java/dev/cel/runtime:runtime_legacy_impl",
@@ -125,7 +124,6 @@ EXTENSION_TARGETS = [
# keep sorted
BUNDLE_TARGETS = [
"//bundle/src/main/java/dev/cel/bundle:cel",
- "//bundle/src/main/java/dev/cel/bundle:cel_experimental_factory",
"//bundle/src/main/java/dev/cel/bundle:environment",
"//bundle/src/main/java/dev/cel/bundle:environment_yaml_parser",
]
diff --git a/runtime/BUILD.bazel b/runtime/BUILD.bazel
index 3e183d236..f4a150ff3 100644
--- a/runtime/BUILD.bazel
+++ b/runtime/BUILD.bazel
@@ -29,14 +29,6 @@ java_library(
],
)
-java_library(
- name = "runtime_experimental_factory",
- visibility = ["//:internal"],
- exports = [
- "//runtime/src/main/java/dev/cel/runtime:runtime_experimental_factory",
- ],
-)
-
java_library(
name = "runtime_legacy_impl",
visibility = ["//:internal"],
diff --git a/runtime/src/main/java/dev/cel/runtime/BUILD.bazel b/runtime/src/main/java/dev/cel/runtime/BUILD.bazel
index 0da68d548..5178ae27c 100644
--- a/runtime/src/main/java/dev/cel/runtime/BUILD.bazel
+++ b/runtime/src/main/java/dev/cel/runtime/BUILD.bazel
@@ -916,20 +916,8 @@ java_library(
deps = [
":runtime",
":runtime_legacy_impl",
- "//common:options",
- ],
-)
-
-java_library(
- name = "runtime_experimental_factory",
- srcs = ["CelRuntimeExperimentalFactory.java"],
- tags = [
- ],
- deps = [
- ":runtime",
":runtime_planner_impl",
"//common:options",
- "//common/annotations",
],
)
diff --git a/runtime/src/main/java/dev/cel/runtime/CelRuntimeExperimentalFactory.java b/runtime/src/main/java/dev/cel/runtime/CelRuntimeExperimentalFactory.java
deleted file mode 100644
index 743f90669..000000000
--- a/runtime/src/main/java/dev/cel/runtime/CelRuntimeExperimentalFactory.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2026 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package dev.cel.runtime;
-
-import dev.cel.common.CelOptions;
-import dev.cel.common.annotations.Beta;
-
-/**
- * Experimental helper class to construct new {@code CelRuntime} instances backed by the new {@code
- * ProgramPlanner} architecture.
- *
- * All APIs and behaviors surfaced here are subject to change.
- */
-@Beta
-public final class CelRuntimeExperimentalFactory {
-
- /**
- * Create a new builder for constructing a {@code CelRuntime} instance.
- *
- *
The {@code ProgramPlanner} architecture provides key benefits over the legacy runtime:
- *
- *
- * - Performance: Programs can be cached for improving evaluation speed.
- *
- Parsed-only expression evaluation: Unlike the traditional legacy runtime, which
- * only supported evaluating type-checked expressions, this architecture handles both
- * parsed-only and type-checked expressions.
- *
- */
- public static CelRuntimeBuilder plannerRuntimeBuilder() {
- return CelRuntimeImpl.newBuilder()
- // CEL-Internal-2
- .setOptions(CelOptions.current().enableHeterogeneousNumericComparisons(true).build());
- }
-
- private CelRuntimeExperimentalFactory() {}
-}
diff --git a/runtime/src/main/java/dev/cel/runtime/CelRuntimeFactory.java b/runtime/src/main/java/dev/cel/runtime/CelRuntimeFactory.java
index 322985b22..6615b59e0 100644
--- a/runtime/src/main/java/dev/cel/runtime/CelRuntimeFactory.java
+++ b/runtime/src/main/java/dev/cel/runtime/CelRuntimeFactory.java
@@ -32,5 +32,24 @@ public static CelRuntimeBuilder standardCelRuntimeBuilder() {
.setStandardEnvironmentEnabled(true);
}
+ /**
+ * Create a new builder for constructing a {@code CelRuntime} instance.
+ *
+ * The {@code ProgramPlanner} architecture provides key benefits over the {@link
+ * #standardCelRuntimeBuilder()}:
+ *
+ *
+ * - Performance: Programs can be cached for improving evaluation speed.
+ *
- Parsed-only expression evaluation: Unlike the runtime returned by {@link
+ * #standardCelRuntimeBuilder()}, which only supported evaluating type-checked expressions,
+ * this architecture handles both parsed-only and type-checked expressions.
+ *
+ */
+ public static CelRuntimeBuilder plannerRuntimeBuilder() {
+ return CelRuntimeImpl.newBuilder()
+ // CEL-Internal-2
+ .setOptions(CelOptions.current().enableHeterogeneousNumericComparisons(true).build());
+ }
+
private CelRuntimeFactory() {}
}
diff --git a/runtime/src/main/java/dev/cel/runtime/CelRuntimeImpl.java b/runtime/src/main/java/dev/cel/runtime/CelRuntimeImpl.java
index ed203d612..dcdf3be52 100644
--- a/runtime/src/main/java/dev/cel/runtime/CelRuntimeImpl.java
+++ b/runtime/src/main/java/dev/cel/runtime/CelRuntimeImpl.java
@@ -474,7 +474,8 @@ private static CelDescriptorPool newDescriptorPool(
@Override
public CelRuntime build() {
- assertAllowedCelOptions(options());
+ CelOptions options = options();
+ assertAllowedCelOptions(options);
CelDescriptors celDescriptors =
CelDescriptorUtil.getAllDescriptorsFromFileDescriptor(fileDescriptorsBuilder().build());
diff --git a/runtime/src/test/java/dev/cel/runtime/BUILD.bazel b/runtime/src/test/java/dev/cel/runtime/BUILD.bazel
index 3200a80e0..e886c3d8a 100644
--- a/runtime/src/test/java/dev/cel/runtime/BUILD.bazel
+++ b/runtime/src/test/java/dev/cel/runtime/BUILD.bazel
@@ -146,7 +146,6 @@ java_library(
"//extensions",
"//runtime",
"//runtime:function_binding",
- "//runtime:runtime_experimental_factory",
"//runtime:unknown_attributes",
"//testing:base_interpreter_test",
"@cel_spec//proto/cel/expr/conformance/proto3:test_all_types_java_proto",
diff --git a/runtime/src/test/java/dev/cel/runtime/PlannerInterpreterTest.java b/runtime/src/test/java/dev/cel/runtime/PlannerInterpreterTest.java
index c0b0f76c4..9ae8590d5 100644
--- a/runtime/src/test/java/dev/cel/runtime/PlannerInterpreterTest.java
+++ b/runtime/src/test/java/dev/cel/runtime/PlannerInterpreterTest.java
@@ -42,7 +42,7 @@ public class PlannerInterpreterTest extends BaseInterpreterTest {
@Override
protected CelRuntimeBuilder newBaseRuntimeBuilder(CelOptions celOptions) {
- return CelRuntimeExperimentalFactory.plannerRuntimeBuilder()
+ return CelRuntimeFactory.plannerRuntimeBuilder()
.addLateBoundFunctions("record")
.setOptions(celOptions)
.addLibraries(CelExtensions.optional())
diff --git a/testing/src/main/java/dev/cel/testing/BUILD.bazel b/testing/src/main/java/dev/cel/testing/BUILD.bazel
index b52026ec4..69765b549 100644
--- a/testing/src/main/java/dev/cel/testing/BUILD.bazel
+++ b/testing/src/main/java/dev/cel/testing/BUILD.bazel
@@ -102,7 +102,6 @@ java_library(
"@maven//:com_google_protobuf_protobuf_java",
"@maven//:com_google_protobuf_protobuf_java_util",
"@maven//:junit_junit",
- "@maven_android//:com_google_protobuf_protobuf_javalite",
],
)
@@ -113,6 +112,5 @@ java_library(
],
deps = [
"//bundle:cel",
- "//bundle:cel_experimental_factory",
],
)
diff --git a/testing/src/main/java/dev/cel/testing/CelRuntimeFlavor.java b/testing/src/main/java/dev/cel/testing/CelRuntimeFlavor.java
index 576e0c1d3..66ce8d802 100644
--- a/testing/src/main/java/dev/cel/testing/CelRuntimeFlavor.java
+++ b/testing/src/main/java/dev/cel/testing/CelRuntimeFlavor.java
@@ -15,7 +15,6 @@
package dev.cel.testing;
import dev.cel.bundle.CelBuilder;
-import dev.cel.bundle.CelExperimentalFactory;
import dev.cel.bundle.CelFactory;
/** Enumeration of supported CEL runtime environments for testing. */
@@ -29,7 +28,7 @@ public CelBuilder builder() {
PLANNER {
@Override
public CelBuilder builder() {
- return CelExperimentalFactory.plannerCelBuilder();
+ return CelFactory.plannerCelBuilder();
}
};