Skip to content

refactor: add exact current-format writers - #8022

Merged
Xuanwo merged 17 commits into
mainfrom
xuanwo/exact-version-stack-05-file-runtime
Jul 31, 2026
Merged

refactor: add exact current-format writers#8022
Xuanwo merged 17 commits into
mainfrom
xuanwo/exact-version-stack-05-file-runtime

Conversation

@Xuanwo

@Xuanwo Xuanwo commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

Part 5/12 of #7877. Depends on #8021.

This is an independently reviewable step toward the final layout demonstrated in #7979.

This PR adds writer implementations owned by versions::v2_0, versions::v2_1, versions::v2_2, and versions::v2_3. Each exact version composes the mechanisms it supports; genuinely shared structural machinery remains under the version-neutral writer module.

Some composition code is intentionally repeated across adjacent versions. That repetition is the isolation boundary: changing a newer version must not silently change an older version. Public writer dispatch is left unchanged in this step and is activated by the next PR.

Validation:

  • exact-version writer compatibility fixtures
  • cargo clippy --all --tests --benches -- -D warnings
  • cargo fmt --all -- --check

@github-actions github-actions Bot added the A-encoding Encoding, IO, file reader/writer label Jul 27, 2026
Base automatically changed from xuanwo/exact-version-stack-04-encoding-mechanisms to main July 30, 2026 16:44
@Xuanwo
Xuanwo marked this pull request as ready for review July 30, 2026 19:15
@Xuanwo
Xuanwo merged commit ee0a60d into main Jul 31, 2026
39 of 40 checks passed
@Xuanwo
Xuanwo deleted the xuanwo/exact-version-stack-05-file-runtime branch July 31, 2026 07:48
Xuanwo added a commit that referenced this pull request Jul 31, 2026
Part 6/12 of #7877. Depends on #8022.

This is an independently reviewable step toward the final layout
demonstrated in #7979.

This PR switches the public file writer boundary to exact-version
dispatch. The root `FileWriter` becomes type erasure plus forwarding,
while V1 and each current format own construction and behavior inside
their version modules. Writer call sites in Lance, indexes, Python, and
Java now pass an exact `ConcreteFileVersion`.

This removes version-conditioned behavior from the shared current-format
writer and makes every temporary, shuffle, merge, and dataset file
creation site choose a format explicitly. Reader dispatch is
intentionally deferred to the next PR.

Validation:
- `cargo clippy --all --tests --benches -- -D warnings`
- `uv run make build` in `python/`
- `cargo check --manifest-path java/lance-jni/Cargo.toml`
- exact-version compatibility fixture tests
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-encoding Encoding, IO, file reader/writer

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants