Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
699 commits
Select commit Hold shift + click to select a range
9551d14
feat: add third party licenses lists (#5922)
jackye1995 Feb 10, 2026
827a59a
fix: handle NULL elements in LABEL_LIST index results and explain_pla…
fenfeng9 Feb 10, 2026
1b38a74
ci: add codex workflows for backport and fixing CI (#5926)
jackye1995 Feb 10, 2026
0471e0e
fix: avoid panic on empty list LABEL_LIST filters (#5914)
fenfeng9 Feb 10, 2026
9e64e0b
refactor: correct panic message typos in OrderableScalarValue::cmp (#…
fenfeng9 Feb 10, 2026
94b0308
feat: spill page metadata to disk during IVF shuffle (#5921)
wkalt Feb 10, 2026
0b2c9e3
perf!: remove shuffle buffer (#5912)
wkalt Feb 10, 2026
aa449e4
fix: don't drop field metadata on merge insert path (#5927)
westonpace Feb 10, 2026
df04df4
perf: build fp16kernels with NEON support on iOS (#5917)
chyyran Feb 10, 2026
65e4815
feat!: support index progress reporting via callbacks (#5910)
wkalt Feb 10, 2026
27f9765
feat: introduce RowIdSet and RowIdMask (#5771)
yanghua Feb 11, 2026
dcb5bd8
fix: apply SchemaAdapter in Updater (#5928)
westonpace Feb 11, 2026
97ca6b9
feat(python): expose search_filter in scanner (#5506)
wojiaodoubao Feb 11, 2026
3d7fb36
fix: correct OR null semantics for nullable masks (#5919)
fenfeng9 Feb 11, 2026
6deadb8
feat(java): support session (#5931)
jackye1995 Feb 11, 2026
3605ce3
docs(governance): introduce incubating subproject concept and update …
jackye1995 Feb 11, 2026
e5e6ce7
ci: bump rust toolchain to 1.91.0 (#5937)
lance-community Feb 11, 2026
eb0e61f
docs: add FTS docs (#5888)
prrao87 Feb 11, 2026
e0301f5
ci: improve codex prompt for backport and ci fix (#5940)
jackye1995 Feb 12, 2026
75622b1
docs: add lance-trino doc (#5943)
jackye1995 Feb 12, 2026
255a7ed
feat(python): expose enable_stable_row_ids in commit() (#5908)
fecet Feb 12, 2026
1932327
fix: correct OR null handling for BlockList|BlockList (#5944)
fenfeng9 Feb 12, 2026
8457062
feat: support aggregate in scanner (#5911)
jackye1995 Feb 13, 2026
1ce6347
feat(java): support creating IVF_RQ index (#5648)
majin1102 Feb 13, 2026
86e5967
feat: add python and java binding for aggregate (#5951)
jackye1995 Feb 13, 2026
e47c345
ci: improve release workflows (#5949)
jackye1995 Feb 13, 2026
e28a556
perf: change Dataset::sample to sort its random indices (#5915)
wkalt Feb 13, 2026
f829eef
fix: remove unnecessary column projection for count aggregate (#5950)
jackye1995 Feb 14, 2026
c878af4
perf: create local writer for efficient local writes (#5939)
wkalt Feb 16, 2026
2704c17
perf: reduce peak memory in nullable training data sampling (#5935)
wkalt Feb 17, 2026
441bd9e
feat: add proto serialization for FilteredReadExec (#5954)
LuQQiu Feb 17, 2026
79b700f
fix: respect fragment restrictions in vector and FTS searches when re…
yingjianwu98 Feb 17, 2026
5b8744d
docs: add schema data types and field IDs documentation (#5925)
dik654 Feb 17, 2026
e419df7
chore: release beta version 3.0.0-beta.3
Feb 17, 2026
d1d1e53
perf: upgrade roaring to 0.11 and improve bitmap/range conversions (#…
LuQQiu Feb 18, 2026
884d18e
feat: create an arrow-scalar crate utilizing arrow-row and arrow-data…
westonpace Feb 18, 2026
832d2e6
refactor: deprecate list_indices and migrate tests to describe_indice…
fenfeng9 Feb 18, 2026
d877e6c
docs: add new maintainers (#5959)
prrao87 Feb 18, 2026
ee1914a
feat: update minimum supported rust version from 1.88 to 1.91 (#5964)
westonpace Feb 18, 2026
af84ea1
feat: add Dataset::with_object_store for request-scoped store overrid…
wkalt Feb 18, 2026
9b0fa9a
feat: add size to object store tracing (#5962)
wjones127 Feb 19, 2026
a1a60f2
fix: invalidate index fragment bitmaps after data replacement and sta…
wjones127 Feb 19, 2026
2c7001a
fix: ensure blob encoding work when using file reader directly (#5193)
rahil-c Feb 20, 2026
9511d6d
feat: support namespace as external manifest store (#5968)
jackye1995 Feb 20, 2026
649b487
chore: release beta version 3.0.0-beta.4
Feb 20, 2026
540e973
feat: serialize storage options in table identifier proto (#5973)
LuQQiu Feb 21, 2026
5916cf8
docs: add docs for branch (#5104)
majin1102 Feb 21, 2026
1c58574
feat: add progress monitoring via callbacks for inverted indexes (#5958)
vivek-bharathan Feb 21, 2026
daeb258
chore: fix test compile error (#5975)
westonpace Feb 21, 2026
e13dbc0
fix: spawn part load in fts training (#5977)
westonpace Feb 22, 2026
3882c20
fix: rest namespace integration with table version apis (#5980)
jackye1995 Feb 23, 2026
c69274b
chore: release beta version 3.0.0-beta.5
Feb 23, 2026
576c055
docs: add lance skills as user guide (#5877)
Xuanwo Feb 23, 2026
c4e78d2
chore(io): remove shellexpand and use std::env::home_dir (#5987)
Xuanwo Feb 23, 2026
3ee410d
ci: fix python datafusion test (#5991)
wjones127 Feb 23, 2026
716b926
fix: respect requested indexed fragment in vector and FTS searches (#…
yingjianwu98 Feb 23, 2026
51a5154
fix: improve error messages in FixedSizeListArrayExt::convert_to_floa…
LuciferYang Feb 23, 2026
d27efcc
perf: improve parallelism of data_stats (#5990)
wkalt Feb 23, 2026
b34c406
feat: make geodatafusion/geoarrow optional via `geo` feature flag (#5…
apoc Feb 23, 2026
90cc6ed
chore: bump main to 3.1.0-beta.0
Feb 23, 2026
50d29f7
fix: various bugs to namespace access (#5996)
jackye1995 Feb 24, 2026
c36a4d9
chore: release beta version 3.1.0-beta.1
Feb 24, 2026
348b4df
fix(encoding): handle empty rows in variable packed struct decode (#5…
Xuanwo Feb 24, 2026
693f394
docs: clarify v2.2 nested drop rollback risk (#5999)
Xuanwo Feb 24, 2026
0e53078
docs: expand the FTS index doc explaining the training process and mu…
westonpace Feb 24, 2026
914e275
feat: add DeleteResult with num_deleted_rows (#6001)
wkalt Feb 24, 2026
4af7726
feat: introduce IncompatibleTransaction error (#6003)
wjones127 Feb 24, 2026
8e86943
fix: set namespace commit handler for LanceDataset.commit (#6002)
jackye1995 Feb 24, 2026
ae3b1f4
chore: release beta version 3.1.0-beta.2
Feb 25, 2026
8a87852
fix: fast_search limits full text search to indexed fragments (#6006)
BubbleCal Feb 25, 2026
098e59f
fix: correctly calculate max visible level when a list has no def (#6…
westonpace Feb 25, 2026
20164ae
fix: fast_search should ignore any unindexed data for vector search (…
BubbleCal Feb 25, 2026
3ef07fe
feat: compress complex all null (#4990)
yingjianwu98 Feb 25, 2026
898599e
feat(core): add Levenshtein-based suggestions to not-found errors in …
HemantSudarshan Feb 25, 2026
861727c
refactor: use dict entries and encoded size instead of cardinality fo…
Xuanwo Feb 25, 2026
b2d4c8f
perf: speed up format 2.2 300% by spawning structural decode batch ta…
Xuanwo Feb 25, 2026
8f1a099
feat!: upgrade DataFusion dependency to 52.1.0 (#6015)
wjones127 Feb 25, 2026
f9ff672
fix: make overwrites retryable instead of compatible (#6014)
jackye1995 Feb 25, 2026
c39b551
feat: add URI-based commit support to Java SDK (#5978)
hamersaw Feb 26, 2026
bcbdb7e
feat: add ability to pass custom headers to objectstore requests (#5989)
hamersaw Feb 26, 2026
fb3bbf5
fix: concurrent read and write to directory namespace (#5983)
jackye1995 Feb 26, 2026
c0e1f0e
chore: bump to 4.0.0-beta.1 based on breaking change detection
Feb 26, 2026
025f37f
test: add v2.2 format gate regression tests (#6012)
Xuanwo Feb 26, 2026
c34fb82
fix(python): avoid interpreter shutdown panic in BackgroundExecutor (…
Xuanwo Feb 26, 2026
3cad9cb
perf: reduce peak memory during cosine IVF-PQ index training (#6016)
wkalt Feb 26, 2026
964ac0e
perf: avoid oversized variable buffers in full-zip scan batches (#6013)
Xuanwo Feb 26, 2026
4c81f5d
perf: fast rotation for RQ quantization (#6024)
BubbleCal Feb 27, 2026
b2324c0
docs: require data_storage_version=2.2 in map type example (#6032)
Xuanwo Feb 27, 2026
7b2d7f7
docs: update file versioning matrix for 2.2 rollout (#6033)
Xuanwo Feb 27, 2026
c0c3a84
docs: reorganize blob docs around blob v2 and clarify legacy compatib…
Xuanwo Feb 27, 2026
fd380be
chore: release beta version 4.0.0-beta.2
Feb 27, 2026
c840035
ci: upgrade Claude model to opus-4-6 (#6037)
Xuanwo Feb 27, 2026
be8cea3
docs: align 2.2 encoding docs and nested add-column notes (#6038)
Xuanwo Feb 27, 2026
e25f169
perf: speed up format v2.2 scans by adding shortcut for full page (#5…
Xuanwo Feb 27, 2026
4d563c1
test: extend file format version matrices to include 2.2 (#6036)
Xuanwo Feb 27, 2026
1193956
feat: surface ambiguous merge insert error as `InvalidInput` (#6048)
wjones127 Feb 27, 2026
a97170a
perf: disable auto FSST for binary fields (#6047)
Xuanwo Feb 27, 2026
9471540
chore: release beta version 4.0.0-beta.3
Feb 27, 2026
0753ed8
perf: avoid re-open shard indices and small reads (#6026)
BubbleCal Feb 27, 2026
7c84249
refactor!: refactor java access to file format version (#6053)
jackye1995 Feb 27, 2026
87675c1
chore: release beta version 4.0.0-beta.4
Feb 27, 2026
5989d1a
chore: release beta version 4.0.0-beta.5
Feb 28, 2026
2336078
docs: clarify how to generate TPCH benchmark dataset locally (#6063)
Xuanwo Mar 2, 2026
d17d6bd
feat(java): expose Dataset.dropIndex method to drop specific index (#…
fangbo Mar 2, 2026
9147fbd
feat(blob): distribute blob sidecar keys with reversed binary ids (#6…
Xuanwo Mar 2, 2026
03c5340
perf: avoid frequent allocating when computing residual vectors (#6062)
BubbleCal Mar 2, 2026
0eff646
fix: make blob v2 reads base-aware in multi-base datasets (#6064)
Xuanwo Mar 2, 2026
65c0807
fix(build): add Android aarch64 support to lance-linalg (#6057)
dardourimohamed Mar 2, 2026
b05f4ff
fix(java): schema field id mapping bug in transaction (#5824)
wojiaodoubao Mar 2, 2026
075248f
feat: add env toggle for repetition index cache on read (#6069)
Xuanwo Mar 2, 2026
384d5ef
fix(lance-linalg): fix missing return value in u8x16::bit_and for non…
cheungxi Mar 2, 2026
ca8fb1b
ci: allow Claude review workflow for external contributors (#6070)
Xuanwo Mar 2, 2026
da3bb94
fix: resolve Python lint failure on main (#6073)
Xuanwo Mar 3, 2026
03940cd
perf: add take_blob benchmark with cache_repetition_index matrix (#6067)
Xuanwo Mar 3, 2026
39f8a26
chore: migrate all Rust crates to edition 2024 (#6077)
Xuanwo Mar 3, 2026
6743f9d
fix: restore main CI by formatting take_blob imports (#6082)
Xuanwo Mar 3, 2026
170df3a
feat(blob): map external blob URIs to multi-base base ids (#6066)
Xuanwo Mar 3, 2026
cefa8ad
refactor: upgrade to SNAFU 0.9 (#6071)
shepmaster Mar 3, 2026
dd07737
fix: avoid thread pool contention between compression and write opera…
BubbleCal Mar 3, 2026
798c018
fix: allowing headers for static configuration to be consistent (#6045)
hamersaw Mar 3, 2026
aefd3fe
feat: expose compaction binary copy configuration through python and …
hamersaw Mar 3, 2026
8d936af
perf: add dict-values compression controls with lz4 default (#6059)
Xuanwo Mar 3, 2026
1348876
chore: make get execution summary counts pub (#6078)
LuQQiu Mar 3, 2026
623fc90
chore: release beta version 4.0.0-beta.6
Mar 3, 2026
53e3afb
feat: mark 2.2 as stable and add 2.3 as the next file format version …
Xuanwo Mar 3, 2026
669d6b6
perf: speedup flat fts (#6054)
westonpace Mar 3, 2026
273edff
refactor!: remove create_empty_table usage (#6087)
jackye1995 Mar 4, 2026
cb757b2
feat: support prewarm for IVF-based ANN indices (#6090)
wjones127 Mar 4, 2026
e1e5689
chore: release beta version 4.0.0-beta.7
Mar 4, 2026
af7c01e
fix: incorrect deletion masking in `DatasetPreFilter` (#6083)
cijiugechu Mar 4, 2026
fbdf1ce
fix(btree): include null pages in non-IsNull queries for correct thre…
wkalt Mar 4, 2026
3512931
feat: expose `use_scalar_index` param in Java scanner (#5487)
xloya Mar 4, 2026
fdfe66f
feat: handle JSONB literals in Lance SQL planner (#6061)
wkalt Mar 4, 2026
407409d
fix: compile error for err_express (#6094)
zhangyue19921010 Mar 4, 2026
c60913a
feat(compaction): single reserve_fragment_ids after rewriting files (…
hamersaw Mar 4, 2026
6f48c26
fix!: bump IVF_RQ version for compatibility check (#6097)
BubbleCal Mar 4, 2026
ab1a1c1
refactor: overhaul AGENTS.md with PR review insights (#6103)
Xuanwo Mar 5, 2026
db07e77
feat(cleanup): add more metrics to RemovalStats (#6025)
zhangyue19921010 Mar 5, 2026
2524246
feat(java): expose prefilter parameter to support vector search with …
nyl3532016 Mar 6, 2026
85da3e9
feat(compaction): add Python config for defer_index_remap (#5691)
zhangyue19921010 Mar 6, 2026
9314dc9
fix(python): crash when schema contains nested fixed_size_list or ext…
erandagan Mar 6, 2026
5bc01c8
fix: filter stale row IDs in TakeExec for FTS/vector after delete (#6…
wkalt Mar 6, 2026
c154ac8
fix: disallow wrapping auto-detected fsst in other compression (#6120)
hamersaw Mar 6, 2026
ee23cfa
fix: pin substrait to 0.62.2 until DF supports 0.62.3 (#6121)
westonpace Mar 6, 2026
574f002
fix: dont sample if no vectors are needed (#6110)
westonpace Mar 6, 2026
7f51b3a
feat: add skip_transpose flag to vector index builders (#6114)
BubbleCal Mar 8, 2026
7eed0db
fix: vector index type shown as unknown in describe_indices (#6122)
jackye1995 Mar 9, 2026
f94da21
docs: update index.md to fix `indexes` to `indices` for uniformity (#…
wombatu-kun Mar 9, 2026
860039a
fix: bitmap iterator exhaustion in mask_to_offset_ranges (#6046)
wkalt Mar 9, 2026
38a2369
chore: add scripts for reporting new contributors and code review sta…
westonpace Mar 9, 2026
6adcee8
fix(index): preserve stable row-id entries during scalar index optimi…
acking-you Mar 9, 2026
d96455c
fix: handle inverted index worker exits during dispatch (#6129)
BubbleCal Mar 9, 2026
aac74b4
feat(cleanup): support rate limiter for cleanup operation (#6084)
zhangyue19921010 Mar 9, 2026
88b2635
chore: ci/cd workflow improvements and fixes (#6127)
esteban Mar 9, 2026
e7eb014
chore: release beta version 4.0.0-beta.8
Mar 10, 2026
31de8d4
fix: replace `fetch_arrow_table` with `to_arrow_table` (#6146)
BubbleCal Mar 10, 2026
0681a08
perf: parallelize FTS prewarming (#6144)
BubbleCal Mar 10, 2026
e1aa70a
ci: fix pinned auth action ref in benchmarks workflow (#6153)
Xuanwo Mar 10, 2026
6be1b58
docs: document the rules for transaction conflicts (#6158)
westonpace Mar 10, 2026
3ccd602
fix: handle DataType::Null in adjust_child_validity to prevent panic …
wjones127 Mar 11, 2026
be5f439
fix: persist frag reuse index external file on local filesystem (#6163)
wjones127 Mar 11, 2026
fa64837
feat: clearer progress reporting for IVF (#6126)
wkalt Mar 11, 2026
e133d82
chore: release beta version 4.0.0-beta.9
Mar 11, 2026
31cd8d3
chore: clippy cleanups (#6172)
Xuanwo Mar 12, 2026
98bb073
ci: move Linux and Windows jobs to GitHub-hosted runners (#6175)
Xuanwo Mar 12, 2026
f3e50d7
docs: add alicloud oss configuration (#6167)
FarmerChillax Mar 12, 2026
58f3b84
fix: avoid empty range reads for zero-length blobs (#6168)
Xuanwo Mar 12, 2026
f4adbc0
perf: remove shard content key sorting from distributed merge (#6179)
Xuanwo Mar 12, 2026
c70ee41
perf(inverted)!: reduce fts indexing time and memory (#6174)
BubbleCal Mar 12, 2026
3f74834
chore: release beta version 4.0.0-beta.10
Mar 12, 2026
46826b1
docs: update the rules for data replacement conflicts to reflect real…
westonpace Mar 13, 2026
0851b14
fix: handle nullable validity layers without def levels (#6187)
Xuanwo Mar 13, 2026
311ff1a
fix: preserve merge insert delete-by-source semantics (#6148)
Xuanwo Mar 13, 2026
29075c9
fix: use to_arrow_reader in benchmark datagen (#6190)
Xuanwo Mar 13, 2026
e675fdb
perf(inverted): reuse posting batch builder and merge tail partitions…
BubbleCal Mar 13, 2026
7aa6d33
refactor: rename arrow-scalar to lance-arrow-scalar (#6199)
westonpace Mar 13, 2026
71c6e21
feat: support vector indices in describe_indices filtering (#6145)
ndpvt-web Mar 13, 2026
c9c8c46
fix: memory_limit and num_workers params are not passed to index work…
BubbleCal Mar 13, 2026
e8109ad
chore: release beta version 4.0.0-beta.11
Mar 13, 2026
f02df43
fix: disallowing stale credentials from directory namespace (#6194)
hamersaw Mar 13, 2026
1e7b725
chore: release beta version 4.0.0-beta.12
Mar 13, 2026
f0160c7
feat: enable HNSW-accelerated partition assignment for fp16 vectors (…
wkalt Mar 14, 2026
79ba632
refactor: use the dataset file version to determine index file versio…
westonpace Mar 16, 2026
44b3bd2
feat: add compaction options in manifest config (#6170)
hamersaw Mar 16, 2026
bfe7f56
feat: reduce open file handles during IVF training (#6169)
westonpace Mar 16, 2026
4110d04
fix: preserve create index transaction semantics (#6204)
Xuanwo Mar 16, 2026
50c778e
fix: allow same field name with different type in dataset overwrites …
hamersaw Mar 16, 2026
7790f2c
docs: add example to show how to index JSON column (#6208)
prrao87 Mar 17, 2026
147b957
perf: reuse distance calculator at selecting candidates (#6202)
BubbleCal Mar 17, 2026
0693908
chore: bump lz4_flex patch versions (#6212)
Xuanwo Mar 17, 2026
0a0b831
fix: prewarm all segments for named indices (#6211)
Xuanwo Mar 17, 2026
7b42fd5
fix: prevent duplicate manifest entries from concurrent table creatio…
jmhsieh Mar 17, 2026
fb1566a
fix: add missing type hint for producer function (#6133)
Gallardot Mar 18, 2026
ae9a2cb
fix: maintaining individual fragment operation when calling take_sour…
hamersaw Mar 18, 2026
d59bd23
perf: pre-transpose PQ codebook for SIMD-friendly L2 distance (#5923)
wkalt Mar 18, 2026
023b14b
feat: add file list with sizes to IndexMetadata (#5497)
wjones127 Mar 18, 2026
28db831
docs: fix incorrect URLs and cleanup (#5317)
prrao87 Mar 18, 2026
c9e5b1e
feat: add index segment commit API (#6209)
Xuanwo Mar 18, 2026
1a8b23d
feat: add abfss:// scheme support for Azure ADLS Gen2 (#6192)
burlacio Mar 18, 2026
f404d0e
docs: document vector index RAM (training) & storage requirements (#6…
westonpace Mar 18, 2026
416f5a6
feat: support atomic multi-table transactions via namespace manifest …
XuQianJin-Stars Mar 19, 2026
60cae4c
chore: release beta version 4.0.0-beta.13
Mar 19, 2026
674ccce
docs: remove legacy preview index note (#6218)
Xuanwo Mar 19, 2026
15e16cd
chore: bump main to 4.1.0-beta.0
Mar 19, 2026
42581d4
perf: new layout for positions and new algo for phrase query (#6203)
BubbleCal Mar 20, 2026
43c7f0b
fix: 2.1/2.2 panic when a list column had small values and many empty…
westonpace Mar 20, 2026
382d8d3
feat: bounding source fragments for compaction execution (#6232)
hamersaw Mar 20, 2026
a5e5104
fix: filter out detached versions when scanning manifests (#6245)
jackye1995 Mar 20, 2026
63d923b
fix: like queries with a prefix should be accelerated by btree and zo…
jackye1995 Mar 20, 2026
e143cba
feat: allow setting transaction properties in various operations (#6246)
jackye1995 Mar 21, 2026
13a929c
chore(deps): bump tar from 0.4.44 to 0.4.45 (#6244)
dependabot[bot] Mar 21, 2026
630dbfa
build: remove legacy rustls-webpki 0.101.7 and bump 0.103.10 (#6249)
Xuanwo Mar 21, 2026
b80fbb3
refactor: distributed vector segment build (#6220)
Xuanwo Mar 21, 2026
88c627b
chore: release beta version 4.1.0-beta.1
Mar 22, 2026
727a45c
fix: adding namespace support to java SDK CommitBuilder from dataset …
hamersaw Mar 23, 2026
0302473
chore: release beta version 4.1.0-beta.2
Mar 23, 2026
baa13ab
fix: resolve_latest_location converts errors to not_found uncondition…
wkalt Mar 23, 2026
384fb55
perf: batched WAND and new WAND structure, ~50% faster (#6241)
BubbleCal Mar 23, 2026
1d4052c
fix: return errors for unsupported fixed-size-list child types (#6253)
myandpr Mar 23, 2026
40929fe
feat: add OpenDAL Azdls backend for abfss:// with use_opendal flag (#…
burlacio Mar 23, 2026
244c721
chore: release beta version 4.1.0-beta.3
Mar 23, 2026
30cad43
test: fix flaky distributed vector build results test (#6268)
myandpr Mar 24, 2026
8b4a926
fix: handle list-level NULLs in NOT filters (#6044)
fenfeng9 Mar 24, 2026
66404ca
refactor!: remove staging from distributed vector indexing (#6269)
Xuanwo Mar 24, 2026
b678812
test: stabilize distributed IVF grouped build query test (#6281)
myandpr Mar 24, 2026
f2d2068
fix: pass dataset_options to SafeLanceDataset in worker processes (#6…
eddyxu Mar 24, 2026
d3803a9
fix: respect the old data filter on inverted index (#6216)
westonpace Mar 24, 2026
75f0195
feat(DirectoryNamespace): support index and transaction related opera…
zhangyue19921010 Mar 25, 2026
e2231fd
feat: add aimd throttled object store (#6266)
westonpace Mar 25, 2026
d016a82
feat: support stop-word gaps in phrase queries (#6277)
BubbleCal Mar 25, 2026
a6b033c
fix: support hamming distance in IndicesBuilder (#6295)
jmhsieh Mar 25, 2026
305b729
perf: add benchmark for distributed vector merge finalization (#6176)
Xuanwo Mar 26, 2026
ee324f4
refactor: move DatasetIndexExt out of lance-index (#6280)
Xuanwo Mar 26, 2026
c54f529
fix: restore namespace build after DatasetIndexExt move (#6302)
Xuanwo Mar 26, 2026
3a82648
feat: actually using namespace error variants (#6275)
hamersaw Mar 26, 2026
2ad415a
fix: multiple improvements for gh workflows (#6306)
esteban Mar 26, 2026
f0aa55f
feat!: support sampling selected fragments (#6294)
Xuanwo Mar 26, 2026
7f6fd0e
feat(java): add non-blocking AsyncScanner with CompletableFuture API …
beinan Mar 26, 2026
8c99eef
fix(namespace): support nested types in convert_json_arrow_type (#6300)
jiaoew1991 Mar 27, 2026
08ec995
feat: add a fast dataset version ID API (#6303)
BubbleCal Mar 27, 2026
8b8e36a
feat: clarify logical indices and physical index segments (#6270)
Xuanwo Mar 27, 2026
05c796c
docs: shorten core major release vote window (#6154)
Xuanwo Mar 27, 2026
9b43852
test: tighten multi-segment vector index coverage and cleanup (#6251)
Xuanwo Mar 27, 2026
92c45f6
feat: support non-shared centroid vector index builds (#6296)
Xuanwo Mar 27, 2026
55311f8
feat(python): add storage_options to IvfModel and PqModel save/load (…
hushengquan Mar 27, 2026
36e8b2d
perf: optimize stable row_id index build from O(rows) to O(fragments)…
jiaoew1991 Mar 27, 2026
209f99b
feat: move rate limiting to the object store (#6293)
westonpace Mar 27, 2026
75b8d2a
chore: bump to 5.0.0-beta.1 based on breaking change detection
Mar 27, 2026
2a4daf1
docs: add conflict handling and FRI guidance (#6304)
westonpace Mar 28, 2026
d543ed8
Fix write-starvation during high read-count
emilk Mar 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
115 changes: 22 additions & 93 deletions .bumpversion.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
[tool.bumpversion]
current_version = "0.32.1"
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)(-(?P<prerelease>.+))?"
current_version = "5.0.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}",
"{major}.{minor}.{patch}-{prerelease}.{prerelease_num}",
"{major}.{minor}.{patch}"
]
search = "{current_version}"
Expand All @@ -18,6 +18,13 @@ allow_dirty = false
commit = false
message = "chore: bump version {current_version} → {new_version}"

[tool.bumpversion.parts.prerelease]
optional_value = "stable"
values = ["beta", "rc", "stable"]

[tool.bumpversion.parts.prerelease_num]
first_value = "0"

[[tool.bumpversion.files]]
filename = "Cargo.toml"
search = 'version = "{current_version}"'
Expand Down Expand Up @@ -58,6 +65,11 @@ filename = "Cargo.toml"
search = 'lance-file = {{ version = "={current_version}"'
replace = 'lance-file = {{ version = "={new_version}"'

[[tool.bumpversion.files]]
filename = "Cargo.toml"
search = 'lance-geo = {{ version = "={current_version}"'
replace = 'lance-geo = {{ version = "={new_version}"'

[[tool.bumpversion.files]]
filename = "Cargo.toml"
search = 'lance-index = {{ version = "={current_version}"'
Expand All @@ -78,6 +90,11 @@ filename = "Cargo.toml"
search = 'lance-namespace = {{ version = "={current_version}"'
replace = 'lance-namespace = {{ version = "={new_version}"'

[[tool.bumpversion.files]]
filename = "Cargo.toml"
search = 'lance-namespace-datafusion = {{ version = "={current_version}"'
replace = 'lance-namespace-datafusion = {{ version = "={new_version}"'

[[tool.bumpversion.files]]
filename = "Cargo.toml"
search = 'lance-namespace-impls = {{ version = "={current_version}"'
Expand Down Expand Up @@ -108,96 +125,8 @@ filename = "Cargo.toml"
search = 'lance-bitpacking = {{ version = "={current_version}"'
replace = 'lance-bitpacking = {{ version = "={new_version}"'

# Update all rust crate Cargo.toml files
[[tool.bumpversion.files]]
filename = "rust/lance/Cargo.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'

[[tool.bumpversion.files]]
filename = "rust/lance-arrow/Cargo.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'

[[tool.bumpversion.files]]
filename = "rust/lance-core/Cargo.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'

[[tool.bumpversion.files]]
filename = "rust/lance-datafusion/Cargo.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'

[[tool.bumpversion.files]]
filename = "rust/lance-datagen/Cargo.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'

[[tool.bumpversion.files]]
filename = "rust/lance-encoding/Cargo.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'

[[tool.bumpversion.files]]
filename = "rust/lance-file/Cargo.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'

[[tool.bumpversion.files]]
filename = "rust/lance-index/Cargo.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'

[[tool.bumpversion.files]]
filename = "rust/lance-io/Cargo.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'

[[tool.bumpversion.files]]
filename = "rust/lance-linalg/Cargo.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'

[[tool.bumpversion.files]]
filename = "rust/lance-namespace/Cargo.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'

[[tool.bumpversion.files]]
filename = "rust/lance-namespace-impls/Cargo.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'

[[tool.bumpversion.files]]
filename = "rust/lance-table/Cargo.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'

[[tool.bumpversion.files]]
filename = "rust/compression/bitpacking/Cargo.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'

[[tool.bumpversion.files]]
filename = "rust/compression/fsst/Cargo.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'

[[tool.bumpversion.files]]
filename = "rust/lance-test-macros/Cargo.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'

[[tool.bumpversion.files]]
filename = "rust/lance-testing/Cargo.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'

[[tool.bumpversion.files]]
filename = "rust/examples/Cargo.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'
# Note: Individual rust crate Cargo.toml files use workspace = true,
# so we don't need to update them individually

# Python Cargo.toml
[[tool.bumpversion.files]]
Expand Down
5 changes: 5 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ debug = true
codegen-units = 16
lto = "thin"

[profile.bench]
inherits = "release"
lto = "thin"
codegen-units = 16

[target.x86_64-unknown-linux-gnu]
rustflags = ["-C", "target-cpu=haswell", "-C", "target-feature=+avx2,+fma,+f16c"]

Expand Down
14 changes: 14 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# file specification
protos/file*.proto @file-spec-team
protos/encodings*.proto @file-spec-team
docs/src/format/file/ @file-spec-team

# table specification
protos/table.proto @table-spec-team
protos/rowids.proto @table-spec-team
docs/src/format/table/ @table-spec-team

# index specification
protos/index.proto @index-spec-team
protos/index_old.proto @index-spec-team
docs/src/format/table/index/ @index-spec-team
26 changes: 26 additions & 0 deletions .github/actions/setup-release-env/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: 'Setup Release Environment'
description: 'Sets up Python, Rust, and dependencies for release workflows (assumes repo is already checked out)'
runs:
using: "composite"
steps:
- name: Set up Python
uses: actions/setup-python@7f4fc3e22c37d6ff65e88745f38bd3157c663f7c # v4
with:
python-version: "3.11"

- name: Install dependencies
shell: bash
run: |
pip install bump-my-version packaging PyGithub PyYAML

- name: Set up Rust
uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af # v1
with:
toolchain: stable
override: true

- name: Configure git identity
shell: bash
run: |
git config user.name 'Lance Release Bot'
git config user.email 'dev+gha@lance.org'
3 changes: 3 additions & 0 deletions .github/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ changelog:
- title: Breaking Changes 🛠
labels:
- breaking-change
- title: Critical Fixes ‼️
labels:
- critical-fix
- title: New Features 🎉
labels:
- enhancement
Expand Down
110 changes: 110 additions & 0 deletions .github/workflows/approve-rc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
name: Approve RC

on:
workflow_dispatch:
inputs:
rc_tag:
description: 'RC tag to approve (e.g., v1.3.0-rc.2 or v1.3.1-rc.1)'
required: true
type: string
dry_run:
description: 'Dry run (simulate without pushing)'
required: true
default: false
type: boolean

jobs:
approve-rc:
runs-on: ubuntu-latest
outputs:
stable_version: ${{ steps.approve.outputs.STABLE_VERSION }}
stable_tag: ${{ steps.approve.outputs.STABLE_TAG }}
release_branch: ${{ steps.approve.outputs.RELEASE_BRANCH }}
is_major_minor: ${{ steps.approve.outputs.IS_MAJOR_MINOR }}
previous_tag: ${{ steps.approve.outputs.PREVIOUS_TAG }}
steps:
- name: Output Inputs
run: echo "${{ toJSON(github.event.inputs) }}"

- name: Check out repository
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
token: ${{ secrets.LANCE_RELEASE_TOKEN }}
fetch-depth: 0
lfs: true

- name: Setup release environment
uses: ./.github/actions/setup-release-env

- name: Approve RC
id: approve
run: |
bash ci/approve_rc.sh "${{ inputs.rc_tag }}"

- name: Push changes (if not dry run)
if: ${{ !inputs.dry_run }}
run: |
git push origin "${{ steps.approve.outputs.RELEASE_BRANCH }}"
git push origin "${{ steps.approve.outputs.STABLE_TAG }}"

- name: Generate Release Notes (if not dry run)
if: ${{ !inputs.dry_run }}
id: release_notes
env:
GH_TOKEN: ${{ secrets.LANCE_RELEASE_TOKEN }}
run: |
PREVIOUS_TAG="${{ steps.approve.outputs.PREVIOUS_TAG }}"
STABLE_TAG="${{ steps.approve.outputs.STABLE_TAG }}"

if [ -n "${PREVIOUS_TAG}" ]; then
echo "Generating release notes from ${PREVIOUS_TAG} to ${STABLE_TAG}"
NOTES=$(python ci/generate_release_notes.py ${PREVIOUS_TAG} ${STABLE_TAG})
else
echo "No previous tag found, using automatic generation"
NOTES=$(gh api repos/${{ github.repository }}/releases/generate-notes \
-f tag_name="${STABLE_TAG}" \
--jq .body)
fi

# Save to output
echo "notes<<EOF" >> $GITHUB_OUTPUT
echo "$NOTES" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT

- name: Create GitHub Release (if not dry run)
if: ${{ !inputs.dry_run }}
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2
with:
tag_name: ${{ steps.approve.outputs.STABLE_TAG }}
name: ${{ steps.approve.outputs.STABLE_TAG }}
draft: false
prerelease: false
body: ${{ steps.release_notes.outputs.notes }}
token: ${{ secrets.LANCE_RELEASE_TOKEN }}

- name: Summary
run: |
echo "## Stable Release Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "- **RC Tag:** ${{ inputs.rc_tag }}" >> $GITHUB_STEP_SUMMARY
echo "- **Stable Version:** ${{ steps.approve.outputs.STABLE_VERSION }}" >> $GITHUB_STEP_SUMMARY
echo "- **Stable Tag:** ${{ steps.approve.outputs.STABLE_TAG }}" >> $GITHUB_STEP_SUMMARY
echo "- **Release Branch:** ${{ steps.approve.outputs.RELEASE_BRANCH }}" >> $GITHUB_STEP_SUMMARY
echo "- **Next Version:** ${{ steps.approve.outputs.NEXT_BETA_VERSION }}" >> $GITHUB_STEP_SUMMARY
echo "- **Release Type:** $( [ "${{ steps.approve.outputs.IS_MAJOR_MINOR }}" == "true" ] && echo "Major/Minor" || echo "Patch" )" >> $GITHUB_STEP_SUMMARY
if [ -n "${{ steps.approve.outputs.PREVIOUS_TAG }}" ]; then
echo "- **Release Notes From:** ${{ steps.approve.outputs.PREVIOUS_TAG }}" >> $GITHUB_STEP_SUMMARY
fi
echo "- **Dry Run:** ${{ inputs.dry_run }}" >> $GITHUB_STEP_SUMMARY

if [ "${{ inputs.dry_run }}" == "true" ]; then
echo "" >> $GITHUB_STEP_SUMMARY
echo "⚠️ This was a dry run. No changes were pushed." >> $GITHUB_STEP_SUMMARY
else
echo "" >> $GITHUB_STEP_SUMMARY
echo "✅ Stable release ${{ steps.approve.outputs.STABLE_TAG }} complete!" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Publishing:** Stable artifacts will be published to PyPI, crates.io, Maven Central" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Auto-bumped:** Release branch bumped to ${{ steps.approve.outputs.NEXT_BETA_VERSION }}" >> $GITHUB_STEP_SUMMARY
fi
51 changes: 51 additions & 0 deletions .github/workflows/benchmark-comment-trigger.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# This workflow is used to trigger benchmarks on a PR when a specific comment is added
# to the PR. The workflow runs on all PR comments containing the string 'benchmark'
# and the string '@bench-bot'. The workflow collects some information about the PR
# and then forwards the information to the lance-bench workflow.
#
# The lance-bench repository is a public repository in the lancedb organization which
# runs benchmarks against the Lance repository on a regular basis and stores the results
# in a historical database.

name: Benchmark Comment Trigger

on:
issue_comment:
types: [created]

jobs:
forward-to-bench:
# Only process comments on PRs that mention @bench-bot and contain 'benchmark'
if: |
github.event.issue.pull_request != null &&
contains(github.event.comment.body, '@bench-bot') &&
contains(github.event.comment.body, 'benchmark')
runs-on: ubuntu-latest
steps:
- name: Get PR details
id: pr
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7
with:
script: |
const pr = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number
});

core.setOutput('head_sha', pr.data.head.sha);

- name: Forward to lance-bench
uses: peter-evans/repository-dispatch@bf47d102fdb849e755b0b0023ea3e81a44b6f570 # v2
with:
token: ${{ secrets.LANCE_BENCH_DISPATCH_TOKEN }}
repository: lancedb/lance-bench
event-type: pr-comment
client-payload: |
{
"comment_body": ${{ toJson(github.event.comment.body) }},
"comment_user": "${{ github.event.comment.user.login }}",
"pr_number": ${{ github.event.issue.number }},
"pr_head_sha": "${{ steps.pr.outputs.head_sha }}",
"repository": "${{ github.repository }}"
}
6 changes: 3 additions & 3 deletions .github/workflows/benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ jobs:
matrix:
dataset: ["sift"]
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
fetch-depth: 0
lfs: true
- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@7f4fc3e22c37d6ff65e88745f38bd3157c663f7c # v4
with:
python-version: "3.10"
- uses: ./.github/workflows/build_linux_wheel
Expand All @@ -32,7 +32,7 @@ jobs:
run: |
./test_dataset.sh
- name: Archive results
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: ${{ matrix.dataset }}-results
path: |
Expand Down
Loading
Loading