4 ms·
No, they're equating _Turing completeness_ with _might not terminate_. CEL, Expr, Rego, and other languages like them are intended to guarantee to complete. You
by talideon 8mo ago
No, they're equating _Turing completeness_ with _might not terminate_. CEL, Expr, Rego, and other languages like them are intended to guarantee to complete. You can't do that cleanly with a Turing complete language.
- IshKebab 8mo agoRight but "guaranteed to terminate" is not a useful property. You could write a program that terminates... after a billion years.
- dilyevsky 8mo agoYou can estimate cost of CEL program using static analysis before running it. "estimate" only because size of runtime data is generally unknown (but obv you could limit that).
- IshKebab 8mo ago"You can" - in theory, or does this actually exist?
- dilyevsky 8mo agohttps://pkg.go.dev/github.com/google/cel-go/cel#Env.EstimateCost https://pkg.go.dev/github.com/google/cel-go/cel#Env.Estimate...
- AlecBG 8mo agoWith certain macros disabled like .map the runtime is O(code length)!
- akshayshah 8mo agoThere’s a whole section on this on TFA: https://celbyexample.com/execution-cost/ https://celbyexample.com/execution-cost/