Replies: 1 comment
-
Closing in favor of #3453 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Currently compute functions are separate from expressions. But they feel quite similar in lots of ways. The major difference is that compute functions are invoked with their input arguments, whereas expressions are given a scope and invoked with the whole expression tree. That is, expressions are responsible for evaluating their own inputs. This difference is perhaps important, e.g. for functions that wish to short-circuit.
Like most of Vortex though, we need to make both compute and expressions more extensible. Each compute engine that integrates with Vortex is likely to require slightly different semantics, and therefore benefit from an independent set of expressions (even if some base ones like logical operators are reused).
There is an existing
ComputeFn
trait that starts to experiment with this idea, although it's only implemented forFilter
(which arguably shouldn't be a compute function since it's not scalar!!)This trait works well, the Filter function can describe its behaviour, as well as have control of its entrypoint "invoke" function to perform pre/post validation. The implementation of
invoke
requires what we callkernels
, however these are currently discovered by "asking" the encoding for a kernel. This prevents a third-party from registering a compute kernel for an encoding they don't own, even if it's for a compute function that they themselves definedBeta Was this translation helpful? Give feedback.
All reactions