Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
93fdd5d
fix(mem_wal): allow append-only tables without primary keys (#6848)
touch-of-grey May 19, 2026
dd887ec
feat: add manifest version hint for fast latest-version lookup (#6752)
touch-of-grey May 19, 2026
98e2b8a
chore: release beta version 7.0.0-beta.16
May 19, 2026
64d7b78
fix: make HNSW graph build deterministic to stabilize test_ann_prefil…
wombatu-kun May 19, 2026
29a8f92
fix: set _row_created_at_version to new version for MERGE INTO INSERT…
jerryjch May 19, 2026
742e6a3
fix: branch_identfier unstable for legacy branches (#6390)
majin1102 May 20, 2026
79b363a
docs: document PR publishing requirements (#6870)
Xuanwo May 20, 2026
1607010
feat(index): serializable cache for the BTree scalar index (#6793)
wjones127 May 20, 2026
6ddd7e2
feat: implement vector index details (#6099)
wjones127 May 20, 2026
4de5ce6
feat(index): serializable cache for Bitmap and LabelList scalar indic…
wjones127 May 20, 2026
e808eb1
feat(mem_wal): cache opened L0 flushed-generation datasets (#6816)
hamersaw May 20, 2026
bf68171
feat: add MemWAL sharding evaluator (#6854)
jackye1995 May 20, 2026
c7c5626
chore: release beta version 7.0.0-beta.17
May 20, 2026
dbeeefb
feat: expose granular trace event targets (#6853)
beinan May 21, 2026
65a0e41
fix(mem_wal): exact PK dedup for LSM vector search (#6881)
touch-of-grey May 21, 2026
bd58ad0
fix(mem_wal): dedupe duplicate primary keys in LSM point lookup (#6880)
touch-of-grey May 21, 2026
6e0e5a6
feat: expose multi-base config to Python and Java write_fragments API…
zhangyue19921010 May 21, 2026
c39f31e
fix: stop double-counting child CPU in node-with-children Exec plans …
brendanclement May 21, 2026
95613a7
feat: create materialized view API (#6891)
rpgreen May 21, 2026
0f13993
chore: bump main to 7.1.0-beta.0
May 21, 2026
3d85fc7
perf: use roaring's range iter to speedup mask_to_offset_ranges (#6871)
westonpace May 21, 2026
cffa8cb
chore: release beta version 7.1.0-beta.1
May 21, 2026
d6e2915
feat: external IVF-PQ vector index over caller-supplied parquet files
sezruby May 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .bumpversion.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[tool.bumpversion]
current_version = "7.0.0-beta.15"
current_version = "7.1.0-beta.1"
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)(-(?P<prerelease>(beta|rc))\\.(?P<prerelease_num>\\d+))?"
serialize = [
"{major}.{minor}.{patch}-{prerelease}.{prerelease_num}",
Expand Down
5 changes: 5 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,11 @@ AWS_DEFAULT_REGION=us-east-1 pytest --run-integration python/tests/test_s3_ddb.p
- Indent content under MkDocs admonition directives (`!!! note`, etc.) with 4 spaces.
- Proofread comments and docs for typos before committing.

## Pull Requests

- PR titles must follow the Conventional Commits specification because `.github/workflows/pr-title.yml` validates the PR title and body with commitlint. Use prefixes like `feat:`, `fix:`, `docs:`, `perf:`, `ci:`, `test:`, `build:`, `style:`, or `chore:`; add a scope when useful.
- Before creating or updating a PR, run the lint checks for every touched language surface, even when they are expensive. For Rust changes, run `cargo fmt --all` and `cargo clippy --all --tests --benches -- -D warnings`. For Python changes, follow the environment workflow in `python/AGENTS.md` and run `uv run make lint` from `python/`. If a required lint check cannot be run, state the blocker explicitly in the PR summary.

## Review Guidelines

Contributor and maintainer attention is the most valuable resource. Less is more.
Expand Down
58 changes: 30 additions & 28 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

42 changes: 21 additions & 21 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ resolver = "3"


[workspace.package]
version = "7.0.0-beta.15"
version = "7.1.0-beta.1"
edition = "2024"
authors = ["Lance Devs <dev@lance.org>"]
license = "Apache-2.0"
Expand All @@ -55,25 +55,25 @@ rust-version = "1.91.0"
[workspace.dependencies]
arc-swap = "1.7"
libc = "0.2.176"
lance = { version = "=7.0.0-beta.15", path = "./rust/lance", default-features = false }
lance-arrow = { version = "=7.0.0-beta.15", path = "./rust/lance-arrow" }
lance-core = { version = "=7.0.0-beta.15", path = "./rust/lance-core" }
lance-datafusion = { version = "=7.0.0-beta.15", path = "./rust/lance-datafusion" }
lance-datagen = { version = "=7.0.0-beta.15", path = "./rust/lance-datagen" }
lance-encoding = { version = "=7.0.0-beta.15", path = "./rust/lance-encoding" }
lance-file = { version = "=7.0.0-beta.15", path = "./rust/lance-file" }
lance-geo = { version = "=7.0.0-beta.15", path = "./rust/lance-geo" }
lance-index = { version = "=7.0.0-beta.15", path = "./rust/lance-index" }
lance-io = { version = "=7.0.0-beta.15", path = "./rust/lance-io", default-features = false }
lance-linalg = { version = "=7.0.0-beta.15", path = "./rust/lance-linalg" }
lance-namespace = { version = "=7.0.0-beta.15", path = "./rust/lance-namespace" }
lance-namespace-impls = { version = "=7.0.0-beta.15", path = "./rust/lance-namespace-impls" }
lance = { version = "=7.1.0-beta.1", path = "./rust/lance", default-features = false }
lance-arrow = { version = "=7.1.0-beta.1", path = "./rust/lance-arrow" }
lance-core = { version = "=7.1.0-beta.1", path = "./rust/lance-core" }
lance-datafusion = { version = "=7.1.0-beta.1", path = "./rust/lance-datafusion" }
lance-datagen = { version = "=7.1.0-beta.1", path = "./rust/lance-datagen" }
lance-encoding = { version = "=7.1.0-beta.1", path = "./rust/lance-encoding" }
lance-file = { version = "=7.1.0-beta.1", path = "./rust/lance-file" }
lance-geo = { version = "=7.1.0-beta.1", path = "./rust/lance-geo" }
lance-index = { version = "=7.1.0-beta.1", path = "./rust/lance-index" }
lance-io = { version = "=7.1.0-beta.1", path = "./rust/lance-io", default-features = false }
lance-linalg = { version = "=7.1.0-beta.1", path = "./rust/lance-linalg" }
lance-namespace = { version = "=7.1.0-beta.1", path = "./rust/lance-namespace" }
lance-namespace-impls = { version = "=7.1.0-beta.1", path = "./rust/lance-namespace-impls" }
lance-namespace-datafusion = { version = "=7.0.0-beta.9", path = "./rust/lance-namespace-datafusion" }
lance-namespace-reqwest-client = "0.7.5"
lance-tokenizer = { version = "=7.0.0-beta.15", path = "./rust/lance-tokenizer" }
lance-table = { version = "=7.0.0-beta.15", path = "./rust/lance-table" }
lance-test-macros = { version = "=7.0.0-beta.15", path = "./rust/lance-test-macros" }
lance-testing = { version = "=7.0.0-beta.15", path = "./rust/lance-testing" }
lance-namespace-reqwest-client = "0.7.7"
lance-tokenizer = { version = "=7.1.0-beta.1", path = "./rust/lance-tokenizer" }
lance-table = { version = "=7.1.0-beta.1", path = "./rust/lance-table" }
lance-test-macros = { version = "=7.1.0-beta.1", path = "./rust/lance-test-macros" }
lance-testing = { version = "=7.1.0-beta.1", path = "./rust/lance-testing" }
approx = "0.5.1"
# Note that this one does not include pyarrow
arrow = { version = "58.0.0", optional = false, features = ["prettyprint"] }
Expand All @@ -99,7 +99,7 @@ half = { "version" = "2.1", default-features = false, features = [
"num-traits",
"std",
] }
lance-bitpacking = { version = "=7.0.0-beta.15", path = "./rust/compression/bitpacking" }
lance-bitpacking = { version = "=7.1.0-beta.1", path = "./rust/compression/bitpacking" }
bitpacking = "0.9"
bitvec = "1"
bytes = "1.11.1"
Expand Down Expand Up @@ -139,7 +139,7 @@ deepsize = "0.2.0"
dirs = "6.0.0"
either = "1.0"
fst = { version = "0.4.7", features = ["levenshtein"] }
fsst = { version = "=7.0.0-beta.15", path = "./rust/compression/fsst" }
fsst = { version = "=7.1.0-beta.1", path = "./rust/compression/fsst" }
futures = "0.3"
geoarrow-array = "0.8"
geoarrow-schema = "0.8"
Expand Down
2 changes: 1 addition & 1 deletion docs/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name = "lance-docs"
version = "0.1.0"
description = "Documentation for Lance - Modern columnar data format for ML and LLMs"
readme = "README.md"
requires-python = ">=3.9"
requires-python = ">=3.10,<3.11"
dependencies = [
"mkdocs>=1.5.0",
"mkdocs-material>=9.4.0",
Expand Down
2 changes: 2 additions & 0 deletions docs/src/format/index/system/mem_wal.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ The MemWAL Index is a system index that serves as the centralized structure for
It stores configuration (shard specs, indexes to maintain), merge progress, and shard state snapshots.

A table has at most one MemWAL index.
The table may be a primary-key table or an append-only table without primary-key metadata.
Primary-key-dependent lookup and deduplication semantics only apply when a primary key is defined.

For the complete specification, see:

Expand Down
15 changes: 14 additions & 1 deletion docs/src/format/table/layout.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ A Lance dataset in its basic form stores all files within the dataset root direc
data/
*.lance -- Data files containing column data
_versions/
*.manifest -- Manifest files (one per version)
*.manifest -- Manifest files (one per version)
latest_version_hint.json -- Optional hint of the latest version (see below)
_transactions/
*.txn -- Transaction files for commit coordination
_deletions/
Expand Down Expand Up @@ -201,3 +202,15 @@ Manifest files are stored in the `_versions/` directory with naming schemes that

See [Manifest Naming Schemes](transaction.md#manifest-naming-schemes) for details on the V1 and V2 patterns and their implications for version discovery.

### Version Hint

The optional file `_versions/latest_version_hint.json` records the latest committed version as JSON:

```json
{"version": 42}
```

It exists to accelerate latest-version discovery on stores where listing `_versions/` is expensive: a reader can read the hint and probe higher versions with HEAD requests instead of listing the whole directory, falling back to a full listing if the hint is missing or stale.

The hint is purely an optimization. It is always safe to delete, never affects correctness, and can be ignored by readers that don't understand it. Writers may choose not to write it.

Loading