Skip to content

Concurrent Eval with context.Context bound functions#1369

Open
TristonianJones wants to merge 5 commits into
cel-expr:masterfrom
TristonianJones:async-cel
Open

Concurrent Eval with context.Context bound functions#1369
TristonianJones wants to merge 5 commits into
cel-expr:masterfrom
TristonianJones:async-cel

Conversation

@TristonianJones

@TristonianJones TristonianJones commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

The ConcurrentEval function for CEL enables you to connect asynchronous extensions
that respect context cancellation and deadlines.

Execution Frame as Context

The features is built upon the CEL-managed ExecutionFrame which serves the role of a
custom context.Context object for the duration of a single ConcurrentEval execution.
The ExecutionFrame must never be stored or used outside of CEL: it's purely internal

Async Blocking

Async extensions are expected to block with CEL managing channel creation / concurrency
limits which can be configured through top-level options. Over time, CEL will add more utilities
for customizing extension timeouts, retries, and caching, e.g. #1367

Async Pruning

This implementation uses CEL's unknown feature to prune async dispatches before they're
executed if they're not relevant to the result.

Fixes for Unknown Merging

All code paths now properly early return on error, but aggregate unknowns, allowing for better
constant folding and expression pruning in addition to better identification of the batches of
calls which are relevant to result computation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant