Skip to content

Box operator logic by default#786

Merged
frankmcsherry merged 1 commit intoTimelyDataflow:masterfrom
frankmcsherry:operator_boxing
Apr 13, 2026
Merged

Box operator logic by default#786
frankmcsherry merged 1 commit intoTimelyDataflow:masterfrom
frankmcsherry:operator_boxing

Conversation

@frankmcsherry
Copy link
Copy Markdown
Member

Boxes operator logic by default, resulting in substantially less monomorphization in some cases (e.g. Materialize).

The OperatorBuilder types that help construct builders take a L: Fn<...> that is the closure that acts as the operator logic. This is specialized for each closure, which can result in a substantial amount of codegen, much of which is largely redundant. One fix to this is boxing these closures, which results in a vcall at operator scheduling time. Another fix here is to outline several complex timestamp-only methods, to avoid their "specialization" in the context of each closure.

Although the build methods now default to boxing, they work by way of a build_typed method that retains the ability to fully specialize if the user wants this. But the default is now to box.

@frankmcsherry frankmcsherry merged commit 253d2ba into TimelyDataflow:master Apr 13, 2026
9 checks passed
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