Skip to content

refactor!: compose exact current-format readers - #8024

Open
Xuanwo wants to merge 22 commits into
mainfrom
xuanwo/exact-version-stack-07-readers
Open

refactor!: compose exact current-format readers#8024
Xuanwo wants to merge 22 commits into
mainfrom
xuanwo/exact-version-stack-07-readers

Conversation

@Xuanwo

@Xuanwo Xuanwo commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

Part 7/12 of #7877. Depends on #8023.

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

This PR gives V2.0, V2.1, V2.2, and V2.3 explicit reader composition alongside V1. The root reader keeps shared runtime machinery and type-erased forwarding, but exact version modules own construction, decoder selection, and supported capabilities.

The large shared reader implementation is reduced to mechanisms that are actually common. Version-sensitive choices no longer depend on ordering comparisons or scattered conditions, and the reader still parses persisted identity once at the boundary.

Validation:

  • cargo test -p lance-file
  • cargo clippy --all --tests --benches -- -D warnings
  • uv run make build in python/
  • cargo check --manifest-path java/lance-jni/Cargo.toml

Xuanwo added 20 commits July 21, 2026 16:47
…mat-identity

# Conflicts:
#	rust/lance-file/src/reader.rs
#	rust/lance/src/dataset/transaction.rs
@github-actions github-actions Bot added A-python Python bindings A-index Vector index, linalg, tokenizer A-java Java bindings + JNI A-encoding Encoding, IO, file reader/writer labels Jul 27, 2026
Base automatically changed from xuanwo/exact-version-stack-06-writers to main July 31, 2026 18:16
@Xuanwo
Xuanwo marked this pull request as ready for review July 31, 2026 18:22
…stack-07-readers

# Conflicts:
#	rust/lance-encoding/benches/common/mod.rs
#	rust/lance-encoding/src/array_encoding/physical/bitpack.rs
#	rust/lance-encoding/src/array_encoding/physical/fixed_size_binary.rs
#	rust/lance-encoding/src/array_encoding/strategy.rs
#	rust/lance-encoding/src/compression.rs
#	rust/lance-encoding/src/encoder.rs
#	rust/lance-encoding/src/encodings/logical/primitive/sparse/writer.rs
#	rust/lance-encoding/src/lib.rs
#	rust/lance-encoding/src/testing.rs
#	rust/lance-file/src/lib.rs
#	rust/lance-file/src/reader.rs
#	rust/lance-file/src/version.rs
#	rust/lance-file/src/versions/mod.rs
#	rust/lance-file/src/versions/v1/encoding/plain.rs
#	rust/lance-file/src/versions/v1/mod.rs
#	rust/lance-file/src/versions/v2_0/mod.rs
#	rust/lance-file/src/versions/v2_0/writer.rs
#	rust/lance-file/src/versions/v2_1/compression.rs
#	rust/lance-file/src/versions/v2_1/mod.rs
#	rust/lance-file/src/versions/v2_2/compression.rs
#	rust/lance-file/src/versions/v2_2/mod.rs
#	rust/lance-file/src/versions/v2_3/compression.rs
#	rust/lance-file/src/versions/v2_3/mod.rs
#	rust/lance-file/src/writer.rs
#	rust/lance-file/src/writer/structural.rs
#	rust/lance-file/src/writer_tests.rs
#	rust/lance-file/test_data/exact_versions/README.md
#	rust/lance-index/src/scalar/lance_format.rs
#	rust/lance-index/src/vector/utils.rs
#	rust/lance-table/src/format.rs
#	rust/lance-table/src/format/manifest.rs
#	rust/lance/src/dataset.rs
#	rust/lance/src/dataset/builder.rs
#	rust/lance/src/dataset/fragment.rs
#	rust/lance/src/index/vector/ivf.rs
#	rust/lance/src/index/vector/ivf/io.rs
#	rust/lance/src/index/vector/pq.rs

@lance-gatekeeper lance-gatekeeper Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The exact-version reader roots address a real file-format boundary: V2.0–V2.3 now validate their own footer identity, encoding grammar, alignment, projection shape, and metadata capabilities while shared I/O and decode machinery stays centralized. The stable wire contracts remain covered through exact-version fixtures, and I found no durable-format or correctness blocker.

Comment thread rust/lance-file/src/lib.rs
@Xuanwo Xuanwo changed the title refactor: compose exact current-format readers refactor!: compose exact current-format readers Jul 31, 2026
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 A-index Vector index, linalg, tokenizer A-java Java bindings + JNI A-python Python bindings breaking-change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant