vortex-data
vortex
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
Merge remote-tracking branch 'origin/develop' into wm/random-access-hot-cold Signed-off-by: Will Manning <will@willmanning.io>
wm/random-access-hot-cold
5 hours ago
feat: require Send on VortexWrite and its futures (#9648)
develop
5 hours ago
feat: require Send on VortexWrite and its futures `VortexReadAt` is already declared as `Send + Sync + 'static` and returns `BoxFuture`, so read futures are `Send`. `VortexWrite` carried no such bound, so write futures were only usable on single-threaded executors: anything that wanted to `tokio::spawn` a write task had to route the writer through a channel or pin the work to a current-thread runtime. Add a `Send` supertrait to `VortexWrite` and `+ Send` to the three return-position `impl Future` types. `Sync` and `'static` are deliberately not required: writers are only ever used through `&mut self`, and the `&mut W` and `Cursor<T>` implementations are not `'static`. This does not foreclose thread-per-core execution. `Handle::spawn` already requires `Send` futures, and `runtime::single` reaches its `!Send` `LocalExecutor` by forwarding work over channels, so a `!Send` sink can still be driven behind a `Send` handle. Fallout is mechanical. `Cursor<T>` gains `T: Send`, `AsyncWriteAdapter<W>` and `BlockingWriteAdapter<W>` gain `W: Send`, and the latter propagates `Send` to the `BlockingWrite::write` and `BlockingWrite::writer` type parameters. Every other implementation was already `Send`. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Claude <noreply@anthropic.com>
feat/vortex-write-send-bounds
6 hours ago
Make OutputSink skipped-row initialization a required method Skipped-row initialization was an optional capability because the old filter-and-scatter fallback could serve a sink without one by running it densely at the compact length and scattering afterwards. With that fallback gone, a sink without an initializer failed partially valid batches at runtime. A sink allocates its own storage, so it can always write placeholder values into it, and the values are unobservable: callbacks overwrite valid rows and batch execution masks skipped rows. Replace the Option-returning skipped_rows_initializer with a required initialize_skipped_rows method, removing the sink decline in direct skip-invalid execution and the runtime error in filtered execution. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0161JW9aU6W4zmzRQsnjbE3Q
claude/rowfn-kernel-execution-fqw0ue
6 hours ago
feat: require Send on VortexWrite and its futures `VortexReadAt` is already declared as `Send + Sync + 'static` and returns `BoxFuture`, so read futures are `Send`. `VortexWrite` carried no such bound, so write futures were only usable on single-threaded executors: anything that wanted to `tokio::spawn` a write task had to route the writer through a channel or pin the work to a current-thread runtime. Add a `Send` supertrait to `VortexWrite` and `+ Send` to the three return-position `impl Future` types. `Sync` and `'static` are deliberately not required: writers are only ever used through `&mut self`, and the `&mut W` and `Cursor<T>` implementations are not `'static`. Fallout is mechanical. `Cursor<T>` gains `T: Send`, `AsyncWriteAdapter<W>` and `BlockingWriteAdapter<W>` gain `W: Send`, and the latter propagates `Send` to the `BlockingWrite::write` and `BlockingWrite::writer` type parameters. Every other implementation was already `Send`. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DnW9AbmTASUcYgVjwkizKJ Signed-off-by: Claude <noreply@anthropic.com>
feat/vortex-write-send-bounds
6 hours ago
Allow disabling the chunked-execute shortcut via VORTEX_CHUNKED_EXECUTE Honor VORTEX_CHUNKED_EXECUTE=0 at process start so benchmark binaries can compare the executor with and without the stream-to-canonical shortcut without recompiling; set_chunked_execute_enabled still overrides at runtime. Signed-off-by: "Joe Isaacs" <joe.isaacs@live.co.uk> Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
claude/decompression-chunked-iteration-u3kcns
7 hours ago
Merge origin/develop into wm/pcodec-fixed-bin-experiment Signed-off-by: Will Manning <will@willmanning.io>
wm/pcodec-fixed-bin-experiment
7 hours ago
fix(bench): prepare random access data before timing Signed-off-by: Will Manning <will@willmanning.io>
wm/random-access-reopen-timing
7 hours ago
Latest Branches
CodSpeed Performance Gauge
-2%
Store hot and cold random access benchmark results
#9649
5 hours ago
53c97b4
wm/random-access-hot-cold
CodSpeed Performance Gauge
+10%
feat: require Send on VortexWrite and its futures
#9648
6 hours ago
da78387
feat/vortex-write-send-bounds
CodSpeed Performance Gauge
-1%
Replace filter-and-scatter RowFn fallback with filtered valid-row execution
#9645
6 hours ago
813e082
claude/rowfn-kernel-execution-fqw0ue
© 2026 CodSpeed Technology
Home
Terms
Privacy
Docs