- Start Date: (today's date, YYYY-MM-DD)
- Tracking Issue: vortex-data/vortex#0000
One paragraph explanation of the proposed change.
What problem does this solve? Include concrete use cases where possible.
- What specific use cases does this enable or improve?
- What workflows or operations are painful, slow, or impossible today?
Describe the proposed design in enough detail that someone familiar with Vortex could implement it. This should cover:
- New or modified APIs, traits, or vtable entries.
- How this interacts with existing components (encodings, layouts, scan, file format, etc.).
- Key implementation details and corner cases.
- Why is this the best approach in the space of possible designs?
- Which crates are affected and how the dependency graph changes, if at all.
Use code examples and diagrams where they might help, like this:
pub fn main() {
let x = f32::to_bits(100.0f32);
dbg!(x);
}- Does this change the file format or wire format? Is it backward/forward compatible?
- Does this break any public APIs? If so, what is the migration path?
- Are there performance implications?
If there are no compatibility concerns, briefly state why.
- Why should we not do this?
- What is the maintenance cost of this change?
- Does this add complexity that could be avoided?
- What other designs were considered and why were they rejected?
- What is the cost of not doing this?
- Is there a simpler approach that gets us most of the way there?
How have other systems solved this or similar problems? Consider:
- Other columnar formats (Parquet, Arrow, etc.).
- Database internals (DuckDB, DataFusion, Velox, etc.).
- Relevant academic papers or blog posts.
This section helps frame the design in a broader context. If there is no relevant prior art, that is fine.
- What parts of the design need to be resolved during the RFC process?
- What is explicitly out of scope for this RFC?
- Are there open questions that can be deferred to implementation?
What natural extensions or follow-on work does this enable? This is a good place to note related ideas that are out of scope for this RFC but worth capturing.