Skip to content

Make struct cast implementation pluggable#7684

Open
robert3005 wants to merge 3 commits intodevelopfrom
rk/movecasttoplugin
Open

Make struct cast implementation pluggable#7684
robert3005 wants to merge 3 commits intodevelopfrom
rk/movecasttoplugin

Conversation

@robert3005
Copy link
Copy Markdown
Contributor

This pr moves Struct Cast implementation to be overridable by VortexSession.

The default implementation stays the same, i.e. it resolves the fields by name.

In follow up we will add back the positional cast and add both implementations
to the fuzzer

Signed-off-by: Robert Kruszewski github@robertk.io

@robert3005 robert3005 added the changelog/feature A new feature label Apr 28, 2026
@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented Apr 28, 2026

Merging this PR will degrade performance by 18.01%

⚠️ Unknown Walltime execution environment detected

Using the Walltime instrument on standard Hosted Runners will lead to inconsistent data.

For the most accurate results, we recommend using CodSpeed Macro Runners: bare-metal machines fine-tuned for performance measurement consistency.

⚠️ Different runtime environments detected

Some benchmarks with significant performance changes were compared across different runtime environments,
which may affect the accuracy of the results.

Open the report in CodSpeed to investigate

⚡ 1 improved benchmark
❌ 2 regressed benchmarks
✅ 378 untouched benchmarks
⏩ 817 skipped benchmarks1

⚠️ Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
WallTime mix[0%_in/100%_out] 228.4 µs 278.5 µs -18.01%
WallTime 10M_50%[5000000] 308.7 µs 278 µs +11.05%
Simulation bitwise_not_vortex_buffer_mut[128] 246.1 ns 275.3 ns -10.6%

Comparing rk/movecasttoplugin (b2b9997) with develop (6d2aee8)

Open in CodSpeed

Footnotes

  1. 817 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

Comment thread vortex-array/src/executor.rs Outdated
Comment thread vortex-array/src/optimizer/kernels.rs
Comment thread vortex-array/src/optimizer/kernels.rs Outdated
Comment thread vortex-array/src/arrays/struct_/compute/rules.rs
Comment thread vortex-array/src/arrays/struct_/compute/cast.rs
@connortsui20
Copy link
Copy Markdown
Contributor

Is this related to #6900?

@robert3005
Copy link
Copy Markdown
Contributor Author

It is related. We need to acknowledge that different systems have different requirements and we need to be able to override the behaviour

@robert3005
Copy link
Copy Markdown
Contributor Author

as I was refactoring this logic I made #7710 to cleanup validity casting

@robert3005 robert3005 force-pushed the rk/movecasttoplugin branch 2 times, most recently from 803c196 to 78e6308 Compare April 29, 2026 18:02
@robert3005 robert3005 changed the base branch from develop to rk/validitycast April 29, 2026 18:02
@robert3005 robert3005 force-pushed the rk/movecasttoplugin branch 2 times, most recently from ff57330 to 880c8d3 Compare April 29, 2026 18:25
Base automatically changed from rk/validitycast to develop April 30, 2026 13:55
@robert3005 robert3005 force-pushed the rk/movecasttoplugin branch from 880c8d3 to da57520 Compare April 30, 2026 16:07
Signed-off-by: Robert Kruszewski <github@robertk.io>
Signed-off-by: Robert Kruszewski <github@robertk.io>
Signed-off-by: Robert Kruszewski <github@robertk.io>
@robert3005 robert3005 force-pushed the rk/movecasttoplugin branch from da57520 to b2b9997 Compare April 30, 2026 16:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog/feature A new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants