Commit Graph
3540 Commits
Author SHA1 Message Date
Jack Ye ced4799ad5 fix(python): preserve typed results for reopened refresh jobs (#4981)
Restore typed results for reopened Function and SQL-expression refresh jobs while preserving their handles and cached descriptions.

Fixes https://linear.app/lancedb/issue/ENT-3441.
2026-11-12 09:21:58 +00:00
Jack Ye 7b2dfb9e36 fix(python): align catalog and database connection inputs (#4983)
Align Python catalog connection inputs with database connections, warn when region is ignored, and preserve remote storage settings in opened databases.
2026-11-12 01:19:05 -08:00
Jack Ye 478d1d9b01 fix: expose comparable Function runtime identity (#4975)
Expose `FunctionVersion.runtime_digest` through Rust and Python, and add
`PythonRuntimeSpec.digest` so clients can compare declared environment
inputs before registering a Function. Dependency pins, environment
variables, Python version, and GPU settings affect this digest; package
ordering does not.

Clarify that matching `source_digest` alone is insufficient for reuse.
Older servers/images leave `runtime_digest` unset, which cannot
establish a match. Both digests and the other registration inputs must
match before reusing a version.

```python
request = definition.registration_request
same_source = version.source_digest == request.artifact.digest
same_runtime = version.runtime_digest == request.runtime.digest
```

Add shared runtime digest fixtures and coverage for environment-only
changes and catalog decoding. Local builds and tests were skipped as
requested.
2026-11-12 00:30:19 -08:00
Lance Release 01e9ea44aa Bump version: 0.42.0-beta.11 → 0.42.0-beta.12 v0.42.0-beta.12 2026-11-12 08:13:04 +00:00
Yang Cen 5a38066234 chore(deps): upgrade Lance to v15.0.0-beta.18 (#4965)
Upgrade the Rust Lance dependency, Java lance-core, and Python test
dependency from beta.17 to the officially published
[v15.0.0-beta.18](https://github.com/lance-format/lance/releases/tag/v15.0.0-beta.18)
(`079fd77683a7acf056b0912f6ecda938e39ee120`). This provides a compatible
SDK for the newer Lance source already adopted downstream. Rust registry
versions and checksums are unchanged; the Python lock uses the six
published beta.18 wheels.

### Compatibility

The adopted release includes [Lance
#10863](https://github.com/lance-format/lance/pull/10863):
`FilteredReadOptionsProto.has_fragment_ids` distinguishes an explicit
empty fragment selection. Older executors ignore this field, so upgrade
executors before relying on the corrected empty-selection behavior. Rust
callers constructing this generated struct need the new field. [Lance
#10112](https://github.com/lance-format/lance/pull/10112) also replaces
the internal `hamming_distance_batch` API with
`hamming_distance_batch_into`.

The Linux Python matrix timeout is raised from 30 to 60 minutes: the
Python 3.13 cold native build and both test passes completed, but the
job hit its limit during cleanup. Build profiles, test commands, and
coverage are unchanged.

### Validation

- Three native FRI/ANN regressions passed: deferred-compaction refined
RQ, deferred index remapping, and approximate-query builder.
- `cargo clippy --quiet --locked --features remote --tests --examples --
-D warnings` passed with pinned Rust 1.97.0.
- Locked metadata, formatting, Python Makefile-scope Ruff checks, and
`uv lock --check --offline` passed.
- YAML, whitespace, end-of-file, and typo checks passed for the
timeout-only workflow change.

### Publication and CI

Java beta.18 is now published. After [Lance
#10968](https://github.com/lance-format/lance/pull/10968) merged, the
[normal publication
workflow](https://github.com/lance-format/lance/actions/runs/43146352505)
built all three JNI targets and published successfully; the Maven jar is
available. The upstream Python publication run was cancelled after its
Windows ARM job hit the one-hour timeout; six other wheels were
published and are the actual artifacts recorded in this lock.
Cross-platform SDK CI is still required. No performance claim is made by
this dependency update.
2026-11-12 16:09:13 +08:00
Jack Ye 1dee9b006c fix(python): reject unsupported Function callables early (#4972)
Reject synchronous and asynchronous generator Functions, including class
`__call__` methods, during decoration so invalid outputs never reach
remote execution. Give actionable errors for lambdas and decorated
wrappers such as `functools.lru_cache`. Defaulted callable inputs remain
unsupported; the error now names the parameter and explains how to use
class initialization fields.

```python
@function
def double(value: float) -> float:
    yield value * 2
# TypeError: generator Functions are not supported; return a value instead of
# yielding, or return a list for multiple values
```

The deprecated `@udf` alias shares the validation. Adds regression
coverage for both decorators, class methods, explicit schemas, and the
supported list-return alternative.

Fixes https://linear.app/lancedb/issue/ENT-3539
2026-11-11 23:32:57 -08:00
Jack Ye e622254108 fix(python): use direct lookups for table existence checks (#4974)
Table existence checks should not depend on listing every table or
searching only the first 100 names. Use a direct lookup for `name in db`
and implement `table_exists(table_id)` on synchronous local connections,
matching the remote and asynchronous APIs. Native namespace connections
use their initialized Rust connection for existence checks; custom
namespace clients retain their existing callback. Missing tables return
`False`; other lookup errors propagate.

```python
if "events" in db:
    db.drop_table("events")

exists = db.table_exists(["analytics", "events"])
all_names = list(db.list_tables())
```

Clarify that `.tables` contains one page and update deprecation guidance
with safe replacements. Add regression coverage for lookups beyond the
first page, nested namespaces, native and custom namespace clients,
missing tables, permission errors, and lookups that do not list tables.
Include an unpublished draft for the table-management guide until the
new SDK support ships.
2026-11-11 23:32:19 -08:00
Jack Ye ee231aad06 fix(python): validate function package requirements before registration (#4971)
Function dependency typos currently reach the environment build before
failing. Validate pip requirements with
`packaging.requirements.Requirement` and conda requirements with
Rattler's MatchSpec parser when constructing a function definition,
before source packaging or registration. Errors identify the original
entry and its index.

```python
@lancedb.function(pip=["numpy", "torch>=2.0,,<3"])
def score(value: float) -> float:
    return value
# ValueError: invalid pip[1] requirement 'torch>=2.0,,<3': ...
```

Preserves pip extras, markers, named references, bare archive/git URLs,
and conda channel/build specifications. The existing native extension
exposes the conda parser, so no additional Python package is required.
Adds regression coverage for invalid and supported forms, including the
deprecated `udf` alias.
2026-11-11 22:56:36 -08:00
Brendan Clement 42f11d13a2 docs: clarify Python job states and waiting behavior (#4954)
We weren’t explicit about the job states returned by the Python SDK.
This documents those values and clarifies the difference between
checking the current status and waiting for completion.
2026-11-11 12:50:07 -08:00
Bruno Ramirez 28bbc81c3e fix(remote): explain unsupported optimize syntax (#4944)
This PR addresses [OSS-2913](https://linear.app/lancedb/issue/OSS-2913)
([#4845](https://github.com/lancedb/lancedb/issues/4845)) and
[ENT-2909](https://linear.app/lancedb/issue/ENT-2909):
`table.optimize()` on an Enterprise table exposes SQL parser errors when
the deployment does not support its generated SQL. The SDK generates the
statement itself, but previously propagated unsupported grammar as a
generic SQL failure. Parser errors and unknown-option errors reported as
`InvalidArgument` now become `NotSupported` (`NotImplementedError` in
Python), retaining the original diagnostic and request ID.
2026-11-11 12:06:00 -08:00
Xuanwo 9a9b681aaf docs(python): clarify refresh result row counts (#4963)
## Summary

`RefreshColumnResult` exposed the canonical refresh counters without
documenting their unit. This change describes them as logical rows
planned for one refresh: `rows_assigned` counts successful rows written,
`rows_failed` counts rows whose computation failed, and `rows_remaining`
counts planned rows neither assigned nor terminally skipped. Rows
already covered by `rows_failed` are not counted again as remaining.
Retry attempts and user-code calls do not change that logical-row scope.
The change also documents the source and published versions and the
deprecated `rows_filled` alias.

The existing skip-policy example is now explicit: a refresh over 2,001
logical rows with 1,891 assigned, 110 failed, and 0 remaining uses 2,001
as the failure-rate denominator.

## Behavior

Documentation only. No field names, Python or native behavior, REST wire
format, dependencies, or pins change.

## Validation

- `git diff --check`
- `uvx ruff format --check`
- `uvx ruff check`
- Imported this Python source with a compatible prebuilt ABI3 extension
and asserted the public class and property documentation, the affected
source version, and the native extension identity.
2026-11-12 00:49:00 +08:00
Lance Release 08d3f448af Bump version: 0.42.0-beta.10 → 0.42.0-beta.11 v0.42.0-beta.11 2026-11-11 15:38:36 +00:00
Jack Ye ea1cf17f89 feat(python): export recorded Function job timelines (#4946)
Function jobs can now export their recorded execution timeline with
`job.export_timeline(path)` or `await job.export_timeline(path)`. The
SDK fetches a fresh Chrome Trace Event recording that opens in Perfetto,
including worker split spans and timestamped job phases. Batch counts
and latency statistics remain details rather than invented batch
intervals.

```python
job = db.open_job(job_id)
job.export_timeline("refresh.trace.json")

async_job = await async_db.open_job(job_id)
await async_job.export_timeline("refresh.trace.json")
```

The export does not wait for completion or cancel the job. Running jobs
return partial recordings. Local operations and SQL query handles remain
unsupported, and servers must support the timeline endpoint. The
destination is touched only after a successful fetch; network and
filesystem errors propagate. Rust freshness wrappers forward the
operation without changing the submitting table's read baseline.
2026-11-11 07:35:43 -08:00
Jack Ye e9774ed168 feat(nodejs): expose Function refresh publication intervals (#4957)
Expose `publicationIntervalRows` on TypeScript refresh options and
forward it as `publication_interval_rows`. Accept positive safe integers
and preserve whole-fragment publication when omitted.

```typescript
const job = await table.refreshColumnAsync("embedding", {
  publicationIntervalRows: 10000,
});
await job.wait();
```

Document the threshold semantics and add coverage for serialization,
omission, invalid values, safe-integer boundaries, and Embedded
rejection.

Closes ENT-3755.
2026-11-11 07:34:54 -08:00
Yang Cen c1fee36045 chore(deps): upgrade Lance to v15.0.0-beta.17 (#4943)
Update the Rust workspace, Java dependency, and Python test dependency
to [Lance
v15.0.0-beta.17](https://github.com/lance-format/lance/releases/tag/v15.0.0-beta.17).
This includes the FRI cache and vector-index changes required by current
Sophon and retains the RaBitQ prewarm fixes. Lockfiles use the published
source and test wheels without unrelated registry version bumps.

The dependency dry run also exposed CI resource limits. Use the existing
larger x64 runner for GNU Node and compatibility-wheel builds; allow 60
minutes for Mac Python tests, 120 minutes for the compatibility wheel,
and 150 minutes for the Mac release wheel. Disable the CLI toolchain
action's automatic target cache so only the subsequent downloads-only
cache runs. Release optimization, the compatibility wheel's manylinux
container and x86-64-v2 baseline, and test coverage stay unchanged.

Validation:

- Three native SDK regressions pass: refined RQ queries after deferred
compaction, deferred index remapping, and ANN approximation planning.
- Pinned Rust 1.97.0: `cargo clippy --quiet --locked --features remote
--tests --examples -- -D warnings` passes.
- Locked offline Rust metadata, Python lock validation, Ruff
lint/format, and diff checks pass. The Python lock contains six
published beta.17 wheels.
- Repository YAML, whitespace and typo checks pass for the workflow
changes. Product-source checks are reused for the subsequent CI-only
commits.
- At head `07033dc6`, all 65 applicable pre-review CI checks pass,
including the compatibility wheel, Mac CLI, GNU Node, Mac Python tests,
release wheels, and Java checks. Six checks are skipped by tag/main-only
conditions or draft-only app behavior; the automated review and security
checks run after the Ready transition.

The upstream Java publisher succeeded and its beta.17 Maven artifact is
available. Six upstream Python wheel builds/uploads succeeded; its
Windows ARM job was cancelled. These checks do not establish Sophon
performance or aggregate-memory acceptance.
2026-11-11 07:26:52 -08:00
Xuanwo a356950bce feat: expose queued Function refresh status (#4959)
## Problem

The existing Function `column_status` surface cannot decode the Agent
scheduler's `queued` state or the `failure_threshold_reached` and
`binding_revision_missing` blocked reasons. It also preserves only the
latest refresh job, so a later cancellation can hide an earlier actual
failure.

## Change

- Adds the `queued`, `failure_threshold_reached`, and
`binding_revision_missing` wire states in Rust, Python, and Node. The
wire change is additive, while Rust callers must update exhaustive enum
matches and public struct literals.
- Adds optional `last_failure_job` alongside `last_refresh_job`. The
latest cancellation and the most recent actual failure retain separate
meanings.
- Reuses the canonical Rust `JobFailure` and existing Python/Node
`JobFailureInfo` models for nested job failure details instead of
introducing a parallel status error model.
- Maps the existing public `sql_job_id` field through Node's
`JobFailureInfo`.
- Keeps `column_status`, `column_statuses`, and `wait_fresh` as the
existing API surfaces. There is no new endpoint, row-error list, durable
ledger, or unknown-enum fallback.
- Documents `queued` versus `running` and the separate latest-attempt
and latest-failure jobs in the existing hidden freshness release draft.

The new status values are additive but cross-service: `queued`, the two
new blocked reasons, and `last_failure_job` require matching Agent/QN
and SDK deployments before clients can rely on them. This SDK follow-up
does not change the normal `7cc3904a` dependency pin or claim whole
ENT-3487 completion.

## Validation

The tested private source is `b19c8adbdc936c5976def6c17be47f6d5e3faf3e`,
based on product commit `c9bac25ecb8b73b1bd0256bbea65c2621bcf6a94`. The
final product docs commit changes generated TypeDoc only.

- Rust: 2 selected tests passed, 0 failed, exit 0. The same two Rust
blobs are unchanged from their tested `788ef85b` source through
`c9bac25e`.
- Python: the PyO3 extension built successfully, and the selected native
PyO3 SDK test against a mock HTTP REST transport passed 1/0, exit 0. The
test requests pinned version 42.
- Node: the addon and TypeScript builds passed, Biome passed, and the
selected Jest transport test passed 1/0 with 57 filtered tests. Addon
SHA-256:
`c888e260b61d41e79689ed2f20dd0dc98586a2377ce34f21610b06111734d426`.
- Python extension SHA-256:
`36c961d8a0cbd2e102a7765f2e47efb4c5af6310baa6262c8e3120407463da2b`.
- TypeDoc was generated from the native `native.d.ts` produced by that
Node build. A second generation produced no remaining diff.

The public diff contains only product, test, and generated API
documentation changes. Native runner scripts and preserved
compile-failure logs remain private validation evidence.

Agent/QN production mapping, mixed-version rollout, and the remaining
ENT-3487 server-side work are tracked separately.
2026-11-11 21:14:30 +08:00
Xuanwo 7cc3904a7e feat: expose exact Function column freshness (#4958)
## Problem

Function-backed columns need an exact `fresh`, `stale`,
`never_computed`, and
`failed` partition for the table version a caller is reading. The
existing
error listing is capped, and composing it with job and schema listings
cannot
prove which rows currently failed.

## Behavior

- Adds a strict freshness reader beside the existing permissive planner.
It
  distinguishes an absent certificate from legacy evidence that omits
  failures, and from a current certificate carrying failure coverage.
- Extends the immutable freshness sidecar with per-fragment known and
failed
  row bitmaps. Partial or `WHERE` publications cover only observed rows;
  untouched rows stay unknown. Deleted rows do not block classification.
- Adds failure-aware whole-fragment and row-repair writers. A rejected
older
attempt cannot overwrite failure evidence already recorded for a newer
input
  signature.
- Adds `column_status`, `column_statuses`, and `wait_fresh` to Python
and the
  corresponding Node methods. The client calls the server's exact status
endpoint, validates the four-way partition and one-version guarantee,
and
preserves the complete Function version, last-job, and automatic-refresh
  metadata.
- Adds an MDX-commented draft usage section to the Enterprise
computed-column
refresh guide, covering Python, Rust, and TypeScript and remaining
hidden
  until the server integration ships.
- Sends `column`, `branch`, and exact `version` selectors to the status
route.
A pinned handle rejects a nonempty response from any other table
version;
  latest handles keep the existing read-freshness headers.
- Retries `wait_fresh` only for HTTP 503 with
`function_column_status_finalization_pending`. Existing failed rows
remain
  visible and do not keep the wait pending; other errors propagate.
- Models the shared scheduler projection, including `up_to_date`, real
`blocked` states, their reason, failure streak, and effective cooldown.

## Validation

This is the SDK side of ENT-3563. Sophon's failure-coverage publication
and
status endpoint are a separate integration; deployed end-to-end and
whole-ticket
acceptance remain pending.

- Rust: 9 exact freshness/status tests passed, plus 1 exact
latest-handle
  freshness-header test. The pinned transport test was extended with a
wrong-version response and rerun at `ebd6649a` (1 passed). Coverage
includes untouched partial rows,
  selected-row failure clearing, cross-generation evidence, typed and
non-retried errors, `up_to_date`, blocked scheduler fields, and
exact-version
  requests.
- Python: 2 native PyO3 remote-transport tests passed together,
including
typed retry; one local facade test reaches the existing unsupported
boundary.
- Node: the NAPI addon built successfully, TypeScript and Biome passed,
and the
selected native remote-transport test passed 1/0, including
exact-version
  selection and blocked scheduler metadata.
- `cargo fmt`, `git diff --check`, Ruff format/lint, Python compile,
Biome, and
  TypeScript checks passed.

Validation is mapped by the relevant unchanged source rather than
treated as one
final-head run: the nine Rust tests ran at `e4d51fc8`, the latest-header
and Python
remote tests at `31e68b7d`, the local Python test and Node build at
`6f213584`, and
the final TypeScript/Jest delta at `4f2d5c27`. The final product tree
excludes those five private EC2 runner files and adds
six generated TypeDoc files plus one hidden draft usage section in the
computed-column refresh guide. The Node delta corrected a private
TypeScript
command and reused the unchanged native addon.
2026-11-11 19:12:06 +08:00
Yang Cen 34e8b8087b fix: preserve function freshness across input-preserving writes (#4948)
Updating an unrelated column or merging rows with unchanged Function
inputs rewrites fragment files, causing already computed outputs to be
treated as stale. Preserve their freshness from the successful write
transaction when the inputs and outputs are provably unchanged; keep
changed or uncertain inputs eligible for recomputation.

Mixed update/insert writes keep a separate pending-fill proof so
retained outputs can be reused while inserted NULL outputs still need
computation. Partial refreshes under a new Function definition discard
the previous definition’s completed and pending proofs. Preservation
uses a version-fenced metadata commit, and an optional preservation
failure does not turn a successful data write into an error.

Validation: 67 freshness tests pass, including the new
partial-definition regression (confirmed failing before its fix),
unrelated updates, identical/mixed merges, NULL/nested/blob inputs,
dirty-state preservation, concurrency fences and sidecar retention.
`cargo fmt --all` and `cargo clippy --quiet --locked --features remote
--tests --examples` pass.

Compatibility: `StalenessPlan` adds a public `pending_fill` field, so
direct Rust struct literals must be updated. Refresh consumers must
handle pending-fill admission and publication before adopting this
behavior; a dependency bump alone does not complete consumer
integration. End-to-end consumer validation and deployment remain
separate. No latency claim is made for this SDK-only change.
2026-11-11 16:11:47 +08:00
Xuanwo cf8e6d0fd4 feat: expose Function call concurrency limits (#4956)
## Summary

Adds an optional `max_concurrency` setting to Function registration and
explicit refresh:

- A registered Function version can define the default maximum number of
user-code calls in flight for one logical execution.
- A refresh can override that default for that execution only.
- The value must be a positive `u32` and is independent from
`resource_budget`; it is not an account-wide quota.
- Omitting the option preserves the previous request payload. Local
embedded refreshes reject this Enterprise-only option.

Rust, Python sync/async, PyO3, and the existing Node refresh surface
forward the option. Node has no Function registration surface today, so
no registration API is added there. The generated TypeDoc pages are
included for the new public option.

## Validation

The native-tested source covers Function version decoding, registration
validation and serialization, the Flight SQL registration ticket and
returned version, remote refresh forwarding, local rejection, and Node's
numeric boundary before conversion. Exact stage results are Rust `1+3`
plus four remote cases at `1` each; Python `14/1/49/24`; Node `57`
remote and `1` local rejection. Ruff, standard repository Pyright, and
Biome passed.

The tested Python extension was
`21aa256a970f4a16ea8253d68401d0fc573d946412e8752155dfcad63f30654d`; the
tested Node addon and generated native declaration were
`f6089f861981f96f8ce0f6dbef43de0907b9eeb4b63e84cdd5da14e00d6cbd30` and
`4c4ceb205824075d706897c726c215dcf839880c757f0d0582d24cec5f938416`. The
final 24-file diff preserves the 22 tested
product/test/fixture/source-doc blobs and adds only two generated
TypeDoc pages.
2026-11-11 14:32:26 +08:00
Xuanwo 8029428c71 feat: persist automatic Function refresh resource budgets (#4953)
## Depends on merged #4951

Phase 1 merged as `4d22c0ce2b6825c880c818e737b079db494b4053`, so this PR
now targets `main`. It reuses the canonical
`FunctionWorkerResourceBudget` introduced there rather than copying the
type.

For Function `add_columns` declarations, Python and Rust now persist
`auto_refresh_resource_budget` in computed-column metadata and send it
as `auto_refresh_resource_budget` in the remote request. CPU
milliseconds and memory bytes are required positive integers. Omitting
`gpu_count` is accepted as zero and the canonical outgoing JSON still
contains `"gpu_count": 0`. Unknown fields, missing CPU or memory, wrong
types, zero CPU or memory, negative values, and overflow are rejected.

The same budget is applied to every public output binding of a
multi-output Function declaration. Existing metadata is retained, and
SQL-expression declarations or local execution reject the budget instead
of silently ignoring it. Node is unchanged because its current
`addColumns` surface only accepts SQL computed expressions and has no
Function declaration path.

This change does not implement fleet call concurrency limits or enforce
the budget in the runtime. The Enterprise server must support the nested
Function worker resource-budget contract before these values can act as
execution limits.

## Validation

- Python extension build passed.
- Remote Function declaration and local unsupported-path rejection each
passed.
- Canonical metadata round-trip passed, including omitted GPU decoding
to zero and explicit `gpu_count: 0` on encode.
- Function multi-output remote wire test passed with `--features
remote`.
- Repository-scoped Python type check passed with 0 errors.
- All runtime source blobs match the native-tested source. The
post-native deltas are one documentation example line and an existing
routing-test stub update for the new optional argument; the affected
parameterized test passed 3/3 against the existing extension build. No
private test runners are part of this PR.
2026-11-11 11:23:17 +08:00
Xuanwo c9d176ae7e feat: resolve latest Function versions (#4949)
## Problem

Function catalog lookup required an exact version string even though
callers
commonly need the latest currently visible immutable revision. On the
current
SDK, resolving that version required an out-of-band catalog query before
calling
`get_function`.

## Change

- Make Python `get_function(name)` default to latest while accepting
`int` or
  `str` for exact lookup.
- Normalize integer versions to their decimal string form and reject
`bool`
  explicitly. Existing string validation and errors remain unchanged.
- Thread `None` through the rebuilt PyO3 binding and route it to the new
Rust
  `Connection::get_function_latest`.
- Resolve latest through the existing catalog `DESCRIBE FUNCTION` path
without
`WITH (version = ...)`. The returned value is one exact immutable
version, not
  a mutable alias.
- Preserve the existing Rust exact-version API.

## Validation

On the designated EC2 host with the rebuilt extension:

- `test_local_function_catalog_operations_are_not_supported`: **1
passed**.
  This crosses the Python connection, rebuilt PyO3, and embedded Rust
  `NotSupported` boundary with the omitted-version call.
- Async and sync catalog-path tests: **2 passed**, 117 deselected.
- Remote SQL Function creation/description integration test: **1
passed**.
- An earlier Rust invocation with the wrong module path matched **0
tests**;
  it is retained as harness evidence and is not counted as a pass.

## Scope

This is the Function lookup SDK slice. It does not include the separate
atomic
rebind/publication server work tracked under ENT-3418.
2026-11-11 10:39:03 +08:00
Xuanwo 1e5b6deee3 fix(python): support legacy blob query bytes (#4947)
## Summary

- Let local plain queries over row-addressable legacy v1 and v2 blob
columns use `blob_mode="bytes"` without importing `pylance` through
pandas, batch, or Arrow conversion.
- Preserve aliases, filters, ordering, limits, null and empty payloads,
empty result schemas, and the caller's `_rowid` choice.
- Build the hidden row-id query separately so reusing an async builder
for lazy reads or non-blob projections cannot retain an automatic
`_rowid`.
- Keep byte reads closed for blobs inside lists, remote or namespace
pushdown, and query shapes whose result rows cannot be matched back to
the source. Blob v2 lazy auto-row-id behavior is unchanged.

Fixes #4645

## Validation

- 26 focused Python tests passed with the test subprocess blocking all
`lance` imports. The persisted fixture writes and reopens a storage-v2.1
table, then covers sync and async pandas, batches, and Arrow conversion
plus async builder reuse.
- The existing unsupported vector and hybrid reranker regressions now
assert the current eligibility diagnostic, and the legacy table-level
Arrow regression now asserts successful bytes, schema, values, and
hidden row IDs. Both focused tests passed.
- The runtime receipt records no installed `pylance` distribution and no
importable `lance` module. The Python-only change was verified with an
existing compatible 0.42.0b9 extension; the relevant query and fetch
APIs are unchanged between that source and this 0.42.0b10 base.
- Ruff format and lint pass for every changed Python file.
2026-11-11 10:08:13 +08:00
Xuanwo 4d22c0ce2b feat: expose Function refresh resource budgets in SDKs (#4951)
## Summary

- Add the canonical Rust `FunctionWorkerResourceBudget` and
`RefreshColumnOptions::resource_budget()` for explicit Enterprise
Function refreshes.
- Forward the nested budget through Python sync/async, PyO3, Rust remote
requests, Node NAPI, and TypeScript.
- Require positive CPU and memory values; normalize an omitted nested
GPU count to numeric zero; reject the nested budget when combined with
the top-level `gpu_count` shorthand.
- Reject `resource_budget` on LanceDB Embedded refresh paths instead of
silently ignoring it.
- Document the Rust, Python, and TypeScript APIs, including that SQL
servers currently require all three budget fields.

The Rust, Python, and TypeScript additions use `cpu_millis` /
`cpuMillis`, `memory_bytes` / `memoryBytes`, and `gpu_count` /
`gpuCount`. The top-level GPU shorthand keeps its existing behavior and
remains mutually exclusive with the complete nested budget.

## Scope and compatibility

This change configures only the explicit refresh call. It does not
configure `add_columns` automatic refresh and does not introduce a
fleet-wide call-cap interface.

A LanceDB Enterprise server must expose the nested `resource_budget`
backfill contract. LanceDB Embedded continues to support its existing
expression refresh defaults and rejects the new complete budget
explicitly.

## Validation

Validated against the final signed product source:

- Rust: resource-budget remote serialization test `2 passed`; validation
test `1 passed`.
- Python: actual PyO3 build; remote-request matrix `22 passed`;
invalid-option matrix `20 passed`; local rejection `22 passed`; Ruff
check and format clean.
- Repository-standard Pyright entry point: `0 errors`, within the
repository's configured include set.
- Node: native build and Biome lint passed; the existing remote-request
test `1 passed`, including fractional, negative, overflow, NaN, and
infinity nested GPU cases; the existing local-rejection test `1 passed`.
- TypeDoc generation and generated-document cleanliness passed.
- The native-tested product source differs from this head only in two
semantically equivalent Node range checks required by Clippy. Current CI
compiles and lints the final blobs. No dependency or lockfile changes
are included.
2026-11-11 10:05:52 +08:00
Lucia Cerchie d44f768920 docs: add generated agent prompt catalog section (UAX-192) (#4945)
Add an automated prompt catalog section to the agentic skills page. The
combined docs build fills its insertion marker from the evaluation
source, avoiding a manually maintained prompt list. Keep the evaluation
context and fixture guidance in this page so docs reviewers can edit it
independently of the generator. Existing workflow examples remain in
place.

Part of UAX-192.

Depends on https://github.com/lancedb/docs/pull/434; merge that docs
pipeline change first. Validation: combined assembly and Mintlify
validation pass.
2026-11-10 15:07:59 -08:00
Jack Ye 481e82293e fix(python): explain explicit blob reads and subset copies (#4940)
Unsupported remote blob materialization errors now point to row-ID
selection, fetch_blobs and fetch_blob_files. Document descriptor
structs, fetched bytes and Function BlobReader inputs, and show a
bounded subset-copy recipe that keeps the source unchanged between
selection and fetching.

Adds guidance assertions and copy coverage preserving payloads, empty
blobs and nulls.

No new blob materialization API is introduced.

Formatting applied; no local builds or tests were run. CI will execute
the regression coverage.
2026-11-10 08:24:32 -08:00
Jack Ye 3bfa023375 fix(python): bound Job and AsyncJob payload previews (#4939)
Printing a Job or a bound status method could dump hundreds of lines of
serialized Function initialization. Bound nested payload previews in
both sync and async handles while preserving cached identity, state,
failure and result information. Full spec/result values remain available
through their properties, with no additional backend calls.

Adds regression coverage for large payloads, bound method display,
unobserved handles and completed local jobs.

The broader method/property API design remains separate.

Formatting applied; no local builds or tests were run. CI will execute
the regression coverage.
2026-11-10 08:23:13 -08:00
Jack Ye faa5987b33 fix(python): name unsupported Function globals in capture errors (#4938)
Function source packaging rejected unsupported global values without
identifying the variable or explaining the supported captures. Include
the global name even for a nested tuple failure, describe the supported
literal values and remedy, and document the capture boundary.

Adds function/class regression cases for Arrow types, nested tuples,
dictionaries and non-finite floats, plus a supported nested literal
control.

New serialization support remains separate.

Formatting applied; no local builds or tests were run. CI will execute
the regression coverage.
2026-11-10 08:22:52 -08:00
BHAWESHBHASKAR f7648d4a22 feat(python): expose the ZoneMap scalar index (#4816) 2026-11-10 08:58:39 -05:00
Xuanwo c0bd83ef29 feat(sql): expose durable job ids on query handles (#4941)
Expose the durable SQL registry id separately from the connection-scoped
query UUID. Rust and Python query handles and descriptions expose
optional `job_id`; result readers preserve it in schema metadata under
`x-lancedb-sql-job-id`, without adding business columns. Clients can
reopen that id with `open_job`.

Poll success and failure metadata update the same handle. A failure
before the first successful poll retains its job id and original
structured error. The cancellation documentation distinguishes the
Flight waiter from `cancel_job(job_id)`.

Validation on the designated EC2: the two focused error interoperability
tests and Ruff passed on `a8798e81`; delivery has the identical tree.
The preceding 51 Rust SQL tests and earlier 31 native Python SQL tests
are reused for unchanged coverage. Matching-runtime independent
acceptance remains pending.

Companion server change: https://github.com/lancedb/sophon/pull/10049.

Refs ENT-3562.
2026-11-10 19:47:30 +08:00
Lance Release 3851938b6e Bump version: 0.42.0-beta.9 → 0.42.0-beta.10 v0.42.0-beta.10 2026-11-10 08:27:20 +00:00
LanceDB RobotandJack Ye e928e374d0 chore: update lance dependency to v15.0.0-beta.16 (#4935)
Update the Rust workspace, Java lance-core, and Python test dependency
to [Lance
v15.0.0-beta.16](https://github.com/lance-format/lance/releases/tag/v15.0.0-beta.16).
Synchronize `python/uv.lock` with the published beta.16 wheels for
Linux, macOS, and Windows.

Run the native Linux x64 wheel build on an eight-core runner, matching
the existing ARM build allocation, after its optimized build repeatedly
exceeded the job deadline on the standard runner.

The dependency update passed Clippy, formatting, and CI-script checks;
the Python lockfile refresh/check passes. Fresh CI is running for the
runner adjustment. Java dependency-resolution failures caused solely by
publication lag are accepted for this upgrade.

---------

Co-authored-by: Jack Ye <yezhaoqin@gmail.com>
2026-11-10 00:25:41 -08:00
Xuanwo 13e4cf7e58 feat: expose Function publication intervals in refresh options (#4928)
Python refresh APIs currently reject `publication_interval_rows`, so
callers cannot request incremental Function output publication through
the SDK. Add the optional typed parameter through the sync/async Python
APIs, PyO3, and Rust `RefreshColumnOptions`, and serialize it as a
top-level Enterprise refresh option.

An omitted value preserves the existing wire request and whole-fragment
default. Positive values set a publication threshold; zero and negative
Python values fail before a request is sent. Embedded refreshes reject
the Enterprise-only option. Documentation describes a threshold rather
than an exact number of rows per publication.

Validation on the designated development host:
- A matching baseline build reproduced the missing public keyword
argument in both sync and async submission tests.
- The updated PyO3 build passed 54 focused Python tests; Rust payload,
invalid-option, and default-wire tests each passed. Rust formatting and
Python Ruff checks passed.
- The single signed delivery commit differs from that tested
implementation only in a Rustdoc correction describing Embedded
rejection; formatting passed again. No dependency pins or lockfiles
changed.

The matching SDK is prepared for the separate server validation of
failure/cancellation retention and missing-only refill. Those end-to-end
results are still pending and are not implied by these SDK tests.

Refs [ENT-3733](https://linear.app/lancedb/issue/ENT-3733).
2026-11-10 15:22:56 +08:00
Wyatt Alt 0a5c36c1e2 feat: plan computed columns against the session's DataFusion functions (#4924)
A computed column's expression is planned with Lance's default planner,
so a function the embedder registers with DataFusion can't be declared,
and the declared field drops the return-field metadata a function
attaches, such as a logical type.

Every site that plans a declaration (declare, validate, refresh, schema
changes, view and table creation) now uses the DataFusion session the
table's lance session carries, when there is one. The declared field
keeps the expression's return-field metadata, without schema
declarations such as a primary key.
2026-11-09 21:55:58 -08:00
Sarwar Bhuiyan d8957238bf fix(remote): stream query responses instead of buffering them (#4929) 2026-11-09 20:40:59 -05:00
Jack Ye 794fa023cd feat: add materialized view refresh resource budgets (#4902)
Expose aggregate CPU, memory, and GPU budgets plus GPU-class placement
on materialized-view refreshes in Python and Rust. Forward options
through SQL and reject invalid or unsupported Embedded requests instead
of silently dropping constraints.

```python
job = view.refresh_async(
    cpu_millis=8000,
    memory_bytes=16 * 1024**3,
    gpu_count=2,
    gpu_class="h100",
)
job.wait()
```

```sql
REFRESH MATERIALIZED VIEW curated_training_set
WITH (cpu_millis = 8000, memory_bytes = 17179869184,
      gpu_count = 2, gpu_class = 'h100');
```

The same options apply to blocking refreshes, async Python connections,
and the Rust refresh builder. CPU/memory budgets require all three
resource fields; GPU-only caps and class-only placement are also
supported. These are execution-wide caps and require a supporting
Enterprise server with an isolated execution backend. A cap does not
increase refresh parallelism; current MV refreshes use at most one GPU.

Updates API documentation and SQL reference, with Python sync/async and
Rust remote-submission regression coverage. Formatting and Python lint
pass; local builds and tests are intentionally skipped.

The Linux CI build and example steps explicitly select the LanceDB
package, matching the feature-test step. This avoids rebuilding and
retaining a second dependency graph after a workspace-wide build, which
exhausted runner disk space on both this branch and main.

Related: [ENT-3386](https://linear.app/lancedb/issue/ENT-3386)
2026-11-09 15:02:13 -08:00
LanceDB Robot 1eeb200705 chore: update lance dependency to v15.0.0-beta.15 (#4926)
Update Rust and Java Lance dependencies to
[v15.0.0-beta.15](https://github.com/lance-format/lance/releases/tag/v15.0.0-beta.15),
pin Python tests to published pylance 15.0.0b15, and refresh both
lockfiles; no compatibility fixes were needed.

Validation passed: workspace Clippy with all features/tests and warnings
denied, cargo fmt, uv lock --check, and all 35 CI-script tests.

The [upstream wheel
workflow](https://github.com/lance-format/lance/actions/runs/42669437482)
canceled Windows ARM64 and manylinux_2_28 x86_64 builds after an hour,
so the lockfile contains the five published variants (Linux x86_64
remains covered by manylinux2014); Windows ARM64 is unavailable until
upstream publishes its wheel and the lockfile is refreshed.
2026-11-09 14:51:07 -08:00
Bruno Ramirez 546a28ad2c feat: support remote compaction tuning and table inheritance (#4886) 2026-11-09 11:19:47 -08:00
Brendan Clement 94f366a11a docs: show the Python filtered refresh next to the SQL form (#4923)
Adds Python where= examples next to the SQL ones.

Also fixes two examples that fail:
- Date filters now use date '2026-01-01'. A bare string fails on DATE
and TIMESTAMP columns (see [Dates, Timestamps,
Decimals](https://docs.lancedb.com/search/filtering#dates-timestamps-decimals)).
- The first example reads results with table.search().to_arrow(),
because table.to_arrow() raises on Enterprise.

where= needs lancedb 0.42.0 or later.
2026-11-09 09:51:48 -08:00
Lance Release 1157a0709d Bump version: 0.42.0-beta.8 → 0.42.0-beta.9 v0.42.0-beta.9 2026-11-08 16:14:57 +00:00
Yang Cen bd8cbfd4f2 chore: update lance dependency to v15.0.0-beta.14 (#4909)
Update the Rust workspace Lance crates and Python test dependency to
[Lance
v15.0.0-beta.14](https://github.com/lance-format/lance/releases/tag/v15.0.0-beta.14),
which includes JSON cache reuse across request stores and stable-row-ID
JSON index support. The Python lock contains all seven published wheels.
The independent Java module retains beta.8, as in the previous beta.13
update; its separate beta.14 publisher repair is outside this Rust
consumer upgrade.

Preserve all CI coverage while reclaiming completed workspace lancedb
artifacts before the package-level feature-test build, which otherwise
exhausted the Linux runner disk. Give only the Linux ARM64 release-wheel
job two hours after its one-hour timeout, retaining the same runner,
fat-LTO release profile and build flags.

Validation: 2,280 Rust tests passed (79 existing ignores), strict
workspace/all-feature Clippy, Rust formatting, and remote example checks
passed on unchanged Rust source and dependency lock. Python dependency
guards, lock validation, locked sync, and the published macOS wheel
import passed. The new Windows ARM64 wheel was downloaded and its
SHA-256 verified. Workflow YAML/shell checks and independent review
passed. Root Python Ruff/format checks still fail on unchanged
documentation examples; no suppressions or unrelated cleanup were added.

The CI repairs require a complete new run before readiness. This
dependency update does not establish corrected Sophon performance;
downstream native acceptance and the paired S3 replay remain separate.
2026-11-09 00:08:12 +08:00
Lance Release bff93ff314 Bump version: 0.42.0-beta.7 → 0.42.0-beta.8 v0.42.0-beta.8 2026-11-07 02:16:16 +00:00
LanceDB RobotandVivek 1b3b2c2da9 chore: update lance dependency to v15.0.0-beta.13 (#4899)
Update the Rust workspace Lance dependencies to
[v15.0.0-beta.13](https://github.com/lance-format/lance/releases/tag/v15.0.0-beta.13),
synchronize the Python test dependency to published pylance 15.0.0b13,
and refresh both lockfiles; no compatibility fixes were needed.

The Java SDK stays on `lance-core` 15.0.0-beta.8, as in the beta.9 and
beta.10 updates: Maven Central has no `lance-core` artifact for
15.0.0-beta.9 through beta.13.

Validation passed: workspace Clippy with all features and warnings
denied, Cargo formatting, Python lockfile checks, and all 35 CI-script
tests. Repository-wide Ruff reports 163 diagnostics, all verified
identical on unchanged HEAD; unrelated formatter changes were reverted.

---------

Co-authored-by: Vivek <vbharathan2008@gmail.com>
2026-11-06 18:14:43 -08:00
Brendan ClementandClaude e2501b0dab docs: update example names (#4887)
Use neutral placeholder names and values in a few code examples in the
docs and Python docstrings. Text-only; no behavior change.

---
_Generated by [Claude
Code](https://claude.ai/code/session_019iqZdtD3ZMnvTMeoNsULgX)_

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-11-06 11:32:48 -08:00
Will JonesandClaude Opus 5.5 96328f6e08 fix(node): upgrade transformers.js to 4.3.2 to pick up patched sharp (#4885)
## Summary

`@lancedb/lancedb` pins the optional dependency
`@huggingface/transformers` at 3.0.2, which requires `sharp ^0.33.5`.
Every npm install of LanceDB therefore pulled in a sharp version with
critical advisories (GHSA-wq5f-xc86-pv6w, GHSA-rgj7-g3m4-5g8c). No 3.x
release of transformers allows a patched sharp, so this upgrades to
4.3.2, which requires `sharp ^0.35.4`. A fresh install resolves that
range to 0.35.5, the first release that fixes both advisories.

- `nodejs/package.json`: `@huggingface/transformers` 3.0.2 → 4.3.2.
- `nodejs/pnpm-workspace.yaml`: remove the `sharp: ^0.35.4` override. It
only covered our own install, not consumers, and transformers now
requires that range itself.
- `nodejs/examples`: transformers 3.0.2 → 4.3.2, sharp 0.33.5 → 0.35.5.
- Both lockfiles resolve sharp to 0.35.5; `pnpm audit` reports no sharp
advisories in either.

`TransformersEmbeddingFunction` needed no code changes. The transformers
types are only used in private fields, so the published typings don't
change.

`docs/web-tests/ts` and `docs/web-tests/blob-v2/ts` are left alone: they
resolve transformers through a published `@lancedb/lancedb`, so they
pick this up after a release.

## Evidence

Embeddings from the built-in `huggingface` embedding function (default
`Xenova/all-MiniLM-L6-v2`) on 4.3.2, compared with the same mean pooling
on 3.0.2, for three sentences:

```
transformers 4.3.2: 3 x 384
text 0: max|diff|=6.62e-07  cosine=1.00000000
text 1: max|diff|=6.26e-07  cosine=1.00000000
text 2: max|diff|=7.33e-07  cosine=1.00000000
```

End to end through a table, `search("a feline sat down")` returns `["The
cat sat on the mat.", "A dog barked at the mailman."]`.

## Merge Risk

**Door:** Two-way. A revert restores the 3.0.2 pin.
**Blast Radius:** Node `huggingface` embedding function, and install
footprint of the optional dependency (onnxruntime-node 1.19.2 → 1.30.0,
which still downloads the CUDA provider on Linux x64 by default, as
1.19.2 did).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 11:07:44 -08:00
Taylor 003d5e522f docs: fix Rust example download links (#4896)
The Rust example downloads in the ingestion, search, reranking and SQL
guides point to `/static/code/*.zip` URLs that return HTTP 404 on the
published docs site. Replace all 15 references across 13 pages with
public GitHub downloads pinned to commit
`2af85bea8999c8cd23ec01ff62ba110c54652c10`.

The three archives already exist in this repository. Pinning their URLs
preserves the exact source, dependency manifests and lockfiles used by
the existing `cargo run --locked` instructions. Only link destinations
change.

Validation:

- All three public download URLs return HTTP 200 with ZIP content.
Downloaded bytes match the repository archives and the deployed docs
source archives exactly, and ZIP integrity checks pass.
- Verified that the diff contains exactly 15 URL replacements in 13
pages. No example code, run instructions, manifests or lockfiles
changed.
- `git diff --check` passes.
- `mint broken-links` reports the same 16 existing missing internal
links on both the unchanged `main` baseline and this branch.
- `mint validate` reports four existing missing snippet exports
(`RsExampleBody` and `RsExampleTail` in the reranking and vector-search
pages); the unchanged baseline has the same warnings. The combined docs
build and internal-link check pass with the equivalent download-link
fix.
2026-11-06 09:46:18 -08:00
Wyatt Alt 2af85bea89 feat: expose the remaining refresh options on the SDKs (#4890)
The server's backfill request takes a row filter, failure limits,
per-call timeouts and worker sizing, and SQL exposes all of them through
`REFRESH COLUMN ... WHERE ... WITH (...)`, but the typed SDKs could send
only batch_size, GPU placement and the retry and error policies. Anyone
needing a filtered refresh or a bounded skip policy had to drop to SQL.

This adds `where`, `max_failed_fraction`, `max_failed_rows`,
`row_timeout_seconds`, `init_timeout_seconds`, `num_workers` and
`max_executor_processes_per_worker` to Python, Rust and Node, passed
through unchanged. `RefreshColumnOptions` now serializes straight into
the request body, so the three SDKs share one producer. Node gets a
`RefreshColumnOptions` object, which also carries the options it lacked
before. A LanceDB Embedded refresh rejects every option other than
batch_size and GPU placement, naming the option.
2026-11-06 09:19:27 -08:00
dependabot[bot] d379bbb722 chore(deps): bump the rust-minor-patch group across 1 directory with 6 updates (#4798)
Bumps the rust-minor-patch group with 6 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [tonic](https://github.com/grpc/grpc-rust) | `0.14.6` | `0.14.9` |
| [clap](https://github.com/clap-rs/clap) | `4.6.1` | `4.6.7` |
| [unicode-width](https://github.com/unicode-rs/unicode-width) | `0.2.2`
| `0.2.3` |
| [tokio-stream](https://github.com/tokio-rs/tokio) | `0.1.18` |
`0.1.19` |
| [napi](https://github.com/napi-rs/napi-rs) | `3.15.0` | `3.16.0` |
| [napi-derive](https://github.com/napi-rs/napi-rs) | `3.6.13` | `3.7.0`
|


Updates `tonic` from 0.14.6 to 0.14.9
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/grpc/grpc-rust/releases">tonic's
releases</a>.</em></p>
<blockquote>
<h2>tonic-build-v0.14.9</h2>
<h3>Fixed</h3>
<ul>
<li>fix/silence all clippy warnings (<a
href="https://redirect.github.com/grpc/grpc-rust/pull/2807">#2807</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>fix changelog duplicate and update repository URLs (<a
href="https://redirect.github.com/grpc/grpc-rust/pull/2943">#2943</a>)</li>
<li>License update (<a
href="https://redirect.github.com/grpc/grpc-rust/pull/2749">#2749</a>)</li>
</ul>
<h2>tonic-health-v0.14.9</h2>
<h3>Other</h3>
<ul>
<li>fix changelog duplicate and update repository URLs (<a
href="https://redirect.github.com/grpc/grpc-rust/pull/2943">#2943</a>)</li>
<li>License update (<a
href="https://redirect.github.com/grpc/grpc-rust/pull/2749">#2749</a>)</li>
</ul>
<h2>tonic-prost-build-v0.14.9</h2>
<h3>Fixed</h3>
<ul>
<li>fix/silence all clippy warnings (<a
href="https://redirect.github.com/grpc/grpc-rust/pull/2807">#2807</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>fix changelog duplicate and update repository URLs (<a
href="https://redirect.github.com/grpc/grpc-rust/pull/2943">#2943</a>)</li>
<li>License update (<a
href="https://redirect.github.com/grpc/grpc-rust/pull/2749">#2749</a>)</li>
</ul>
<h2>tonic-prost-v0.14.9</h2>
<h3>Fixed</h3>
<ul>
<li>fix/silence all clippy warnings (<a
href="https://redirect.github.com/grpc/grpc-rust/pull/2807">#2807</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>fix changelog duplicate and update repository URLs (<a
href="https://redirect.github.com/grpc/grpc-rust/pull/2943">#2943</a>)</li>
<li>relax codec Default bounds (<a
href="https://redirect.github.com/grpc/grpc-rust/pull/2681">#2681</a>)</li>
<li>License update (<a
href="https://redirect.github.com/grpc/grpc-rust/pull/2749">#2749</a>)</li>
</ul>
<h2>tonic-reflection-v0.14.9</h2>
<h3>Fixed</h3>
<ul>
<li><em>(reflection)</em> preserve custom options in served descriptors
(<a
href="https://redirect.github.com/grpc/grpc-rust/pull/2730">#2730</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>fix changelog duplicate and update repository URLs (<a
href="https://redirect.github.com/grpc/grpc-rust/pull/2943">#2943</a>)</li>
<li>enable missing feature for test build (<a
href="https://redirect.github.com/grpc/grpc-rust/pull/2820">#2820</a>)</li>
<li>License update (<a
href="https://redirect.github.com/grpc/grpc-rust/pull/2749">#2749</a>)</li>
</ul>
<h2>tonic-types-v0.14.9</h2>
<h3>Fixed</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/grpc/grpc-rust/commit/4c0f455c264fe2ec9f9ab5d0cc7fd2824d5daf70"><code>4c0f455</code></a>
chore: release v0.14.9 (<a
href="https://redirect.github.com/grpc/grpc-rust/issues/2979">#2979</a>)</li>
<li><a
href="https://github.com/grpc/grpc-rust/commit/4ee04836ba1aa703521e9b7bde5611fa54a72d11"><code>4ee0483</code></a>
fix(server): set a timer on HTTP/1 connections so hyper's header read
timeout...</li>
<li><a
href="https://github.com/grpc/grpc-rust/commit/a47b6086970b1bbcf9596543dd7f42bf6dec14b3"><code>a47b608</code></a>
feat(transport): expose h2 reset stream settings on Endpoint (<a
href="https://redirect.github.com/grpc/grpc-rust/issues/2972">#2972</a>)</li>
<li><a
href="https://github.com/grpc/grpc-rust/commit/349166ede3a2b3a9f541da3dd292f72b76ef539a"><code>349166e</code></a>
grpc/load_balancing: Add address-checked subchannel helpers to TestEnv.
(<a
href="https://redirect.github.com/grpc/grpc-rust/issues/2938">#2938</a>)</li>
<li><a
href="https://github.com/grpc/grpc-rust/commit/78a8f2dc7760ad29a4113ff49e2a92e14add49be"><code>78a8f2d</code></a>
feat(tonic-xds): expose ADS keepalive knob in config (<a
href="https://redirect.github.com/grpc/grpc-rust/issues/2973">#2973</a>)</li>
<li><a
href="https://github.com/grpc/grpc-rust/commit/954d6d7099f2ea71692f4e684430e81e45c3cc78"><code>954d6d7</code></a>
xds-client: align ADS keepalive defaults with other gRPC languages (<a
href="https://redirect.github.com/grpc/grpc-rust/issues/2970">#2970</a>)</li>
<li><a
href="https://github.com/grpc/grpc-rust/commit/4b61ef94ac94ce76714e9409a963a97a82257de2"><code>4b61ef9</code></a>
xds-client: add grpc crate transport implementation (<a
href="https://redirect.github.com/grpc/grpc-rust/issues/2920">#2920</a>)</li>
<li><a
href="https://github.com/grpc/grpc-rust/commit/541379959bf197057a7c04eeca7f1d976f5ba7c6"><code>5413799</code></a>
chore: release v0.14.8 (<a
href="https://redirect.github.com/grpc/grpc-rust/issues/2966">#2966</a>)</li>
<li><a
href="https://github.com/grpc/grpc-rust/commit/b8282b95eb6baeb85cce88cdd7940033fba8ccf7"><code>b8282b9</code></a>
fix(tonic-web): fix dropped trailers in combined streaming call. (<a
href="https://redirect.github.com/grpc/grpc-rust/issues/2474">#2474</a>)</li>
<li><a
href="https://github.com/grpc/grpc-rust/commit/818532da3abfa6068b0855f483e3c627d9e14640"><code>818532d</code></a>
chore: release v0.14.7 (<a
href="https://redirect.github.com/grpc/grpc-rust/issues/2800">#2800</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/grpc/grpc-rust/compare/tonic-v0.14.6...tonic-v0.14.9">compare
view</a></li>
</ul>
</details>
<br />

Updates `clap` from 4.6.1 to 4.6.7
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.6.7</h2>
<h2>[4.6.7] - 2026-09-14</h2>
<h3>Features</h3>
<ul>
<li><em>(derive)</em> Add <code>#[command(defer = &lt;bool&gt;)]</code>
attribute to opt-in to lazy initialisation of subcommands</li>
</ul>
<h2>v4.6.6</h2>
<h2>[4.6.6] - 2026-08-06</h2>
<h3>Features</h3>
<ul>
<li>Add <code>Command::get_overridden_usage</code></li>
</ul>
<h2>v4.6.5</h2>
<h2>[4.6.5] - 2026-07-31</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Correctly mark which <code>value_names</code> are
optional with <code>num_args</code></li>
</ul>
<h2>v4.6.4</h2>
<h2>[4.6.4] - 2026-07-21</h2>
<h3>Internal</h3>
<ul>
<li>Update to syn v3</li>
</ul>
<h2>v4.6.3</h2>
<h2>[4.6.3] - 2026-07-20</h2>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Allow <code>&quot;literal&quot;.function()</code>
as attribute values</li>
</ul>
<h2>v4.6.2</h2>
<h2>[4.6.2] - 2026-07-15</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Say <code>alias</code> when there is only one</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/main/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.6.7] - 2026-09-14</h2>
<h3>Features</h3>
<ul>
<li><em>(derive)</em> Add <code>#[command(defer = &lt;bool&gt;)]</code>
attribute to opt-in to lazy initialisation of subcommands</li>
</ul>
<h2>[4.6.6] - 2026-08-06</h2>
<h3>Features</h3>
<ul>
<li>Add <code>Command::get_overridden_usage</code></li>
</ul>
<h2>[4.6.5] - 2026-07-31</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Correctly mark which <code>value_names</code> are
optional with <code>num_args</code></li>
</ul>
<h2>[4.6.4] - 2026-07-21</h2>
<h3>Internal</h3>
<ul>
<li>Update to syn v3</li>
</ul>
<h2>[4.6.3] - 2026-07-20</h2>
<h3>Fixes</h3>
<ul>
<li><em>(derive)</em> Allow <code>&quot;literal&quot;.function()</code>
as attribute values</li>
</ul>
<h2>[4.6.2] - 2026-07-15</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Say <code>alias</code> when there is only one</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/clap-rs/clap/commit/d3e59a9ab214910b9dad02921b7ef42c6400de9b"><code>d3e59a9</code></a>
chore: Release</li>
<li><a
href="https://github.com/clap-rs/clap/commit/d997f878c484e02b2935d32a7b67afe990e91227"><code>d997f87</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/clap-rs/clap/commit/fb6058cc38cf6f4b07b8db89c850fc80e059e222"><code>fb6058c</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6409">#6409</a>
from heaths/pwsh-support</li>
<li><a
href="https://github.com/clap-rs/clap/commit/2310870f7a9fe4c39f5bb5620261a06ac9aaa0b1"><code>2310870</code></a>
test(complete): Add tests for completer_for_path</li>
<li><a
href="https://github.com/clap-rs/clap/commit/5967c17393a09f90112cdc5b2c20a1383f0bd8e4"><code>5967c17</code></a>
refactor(complete): Move shell detection to Shells</li>
<li><a
href="https://github.com/clap-rs/clap/commit/594602bb29f374e49da5029df63e5c740c723ad0"><code>594602b</code></a>
fix(complete): Detect pwsh for PowerShell</li>
<li><a
href="https://github.com/clap-rs/clap/commit/3a4f2d031b5110aaaac40f1cb1d6c0b8ff619df8"><code>3a4f2d0</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6427">#6427</a>
from clap-rs/renovate/shlex-2.x</li>
<li><a
href="https://github.com/clap-rs/clap/commit/67ebaed4ac95a83d5d7cc22d64ee0fc162ae1db3"><code>67ebaed</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/6426">#6426</a>
from clap-rs/renovate/actions-checkout-7.x</li>
<li><a
href="https://github.com/clap-rs/clap/commit/c968b136d0e6f560c08b06a844a20f2798a00096"><code>c968b13</code></a>
chore(deps): Update Rust crate shlex to v2</li>
<li><a
href="https://github.com/clap-rs/clap/commit/8f247cbf58c582a755ee4dbe62a2390d93b9f8eb"><code>8f247cb</code></a>
chore(deps): Update actions/checkout action to v7</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.6.1...clap_complete-v4.6.7">compare
view</a></li>
</ul>
</details>
<br />

Updates `unicode-width` from 0.2.2 to 0.2.3
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/unicode-rs/unicode-width/commit/f8c8b20d0ef0102dc4c136bcd5a1b39d2aef8a69"><code>f8c8b20</code></a>
Publish 0.2.3 (<a
href="https://redirect.github.com/unicode-rs/unicode-width/issues/100">#100</a>)</li>
<li><a
href="https://github.com/unicode-rs/unicode-width/commit/5180748ec0cacabfad0478996e9a89a612274e8f"><code>5180748</code></a>
Fix documentation of Kirat Rai rules (<a
href="https://redirect.github.com/unicode-rs/unicode-width/issues/97">#97</a>)</li>
<li><a
href="https://github.com/unicode-rs/unicode-width/commit/0b85fb874a628a08c9c85dc70ca9e5b7908db6a8"><code>0b85fb8</code></a>
Update to Unicode 18 (<a
href="https://redirect.github.com/unicode-rs/unicode-width/issues/96">#96</a>)</li>
<li><a
href="https://github.com/unicode-rs/unicode-width/commit/832f7ca447375ff969f850dab9362a0c2ce1eefb"><code>832f7ca</code></a>
Fix typo in docs (<a
href="https://redirect.github.com/unicode-rs/unicode-width/issues/90">#90</a>)</li>
<li><a
href="https://github.com/unicode-rs/unicode-width/commit/c7b4d42d741d985103fd887089c57deefc9e4f2d"><code>c7b4d42</code></a>
Fix halfwidth katakana voiced and semi-voiced sound marks in width
calculatio...</li>
<li><a
href="https://github.com/unicode-rs/unicode-width/commit/a3d4ee6c2989367e8d54ac70c83ee76ba0a71079"><code>a3d4ee6</code></a>
Fix mistake in the specification of Arabic lam-alef ligature (<a
href="https://redirect.github.com/unicode-rs/unicode-width/issues/92">#92</a>)</li>
<li><a
href="https://github.com/unicode-rs/unicode-width/commit/d8654db078bf9f93b5bfe1e6294a477cc4addc28"><code>d8654db</code></a>
Split generated file into multiple files, separating static code from
generat...</li>
<li><a
href="https://github.com/unicode-rs/unicode-width/commit/ab7a6dc5706e8d47a3b77577165e3ca76aeeab7b"><code>ab7a6dc</code></a>
Support <code>char</code> iter width (<a
href="https://redirect.github.com/unicode-rs/unicode-width/issues/83">#83</a>)</li>
<li><a
href="https://github.com/unicode-rs/unicode-width/commit/b10a4d5fbefe3f3dddd5e59cae2b889083ca58e7"><code>b10a4d5</code></a>
Exclude development scripts from published packages (<a
href="https://redirect.github.com/unicode-rs/unicode-width/issues/80">#80</a>)</li>
<li>See full diff in <a
href="https://github.com/unicode-rs/unicode-width/compare/v0.2.2...v0.2.3">compare
view</a></li>
</ul>
</details>
<br />

Updates `tokio-stream` from 0.1.18 to 0.1.19
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tokio-rs/tokio/commit/bc0933ccffb62e010d3ccb497abc22cec2e73f54"><code>bc0933c</code></a>
chore: prepare tokio-stream v0.1.19 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8310">#8310</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/e3786d0090d1a36381738068519534991ca69d44"><code>e3786d0</code></a>
readme: remove obsolete TokioConf notices (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8311">#8311</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/f2189d3bd69d22638158a0ca8163b2e8daf18c5f"><code>f2189d3</code></a>
chore: prepare tokio-util v0.7.19 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8309">#8309</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/52f2745c18fd69174ca420a2ff5fe4216d320a48"><code>52f2745</code></a>
net: re-enable <code>tcp_stream::try_read_buf</code> test for WASI (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8305">#8305</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/ac6869a431d9d7e2a81ce5309f00730741d3462a"><code>ac6869a</code></a>
rt: remove unstable cfgs leftovers after local runtime stabilization (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8298">#8298</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/75fef53d0a8590c2d1dbb63672aa7b7d1ef51155"><code>75fef53</code></a>
chore: prepare Tokio v1.53.1 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8303">#8303</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/ae9d01121377cdbef32b9d5e8559843cce9f927e"><code>ae9d011</code></a>
signal: restore MSRV by removing OnceLock::wait from the Windows handler
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8300">#8300</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/eb4988dc2ecb85d2617971fbbabc84938c141bfd"><code>eb4988d</code></a>
time: fix the loom test of the race between cancellation/insertion (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8302">#8302</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/91d3b4c0bccf2234fc3ed19e605e2cd402f19437"><code>91d3b4c</code></a>
time: fix alt timer cancellation and insertion race (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8252">#8252</a>)</li>
<li><a
href="https://github.com/tokio-rs/tokio/commit/a46338401b9e0ffc9bd68c31100ee99cee717481"><code>a463384</code></a>
runtime: remove dead link definition in <code>Runtime::block_on</code>
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/8301">#8301</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tokio-rs/tokio/compare/tokio-stream-0.1.18...tokio-stream-0.1.19">compare
view</a></li>
</ul>
</details>
<br />

Updates `napi` from 3.15.0 to 3.16.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/napi-rs/napi-rs/releases">napi's
releases</a>.</em></p>
<blockquote>
<h2>napi-v3.16.0</h2>
<h3>Added</h3>
<ul>
<li><em>(napi)</em> support well-known symbol keys for class members (<a
href="https://redirect.github.com/napi-rs/napi-rs/pull/3665">#3665</a>)</li>
<li><em>(napi)</em> support symbol_for keys for class members (<a
href="https://redirect.github.com/napi-rs/napi-rs/pull/3661">#3661</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><em>(napi)</em> compact class identity metadata (<a
href="https://redirect.github.com/napi-rs/napi-rs/pull/3667">#3667</a>)</li>
<li><em>(napi)</em> keep the registered classes when a later load fails
(<a
href="https://redirect.github.com/napi-rs/napi-rs/pull/3666">#3666</a>)</li>
<li><em>(napi)</em> free define_class closures, honour static flags,
avoid TS1016 in constructors (<a
href="https://redirect.github.com/napi-rs/napi-rs/pull/3662">#3662</a>)</li>
<li><em>(napi)</em> free threadsafe function call data when the call
fails (<a
href="https://redirect.github.com/napi-rs/napi-rs/pull/3656">#3656</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/f89400d99b136c5c8a27818654b91256832b5bd6"><code>f89400d</code></a>
chore: release (<a
href="https://redirect.github.com/napi-rs/napi-rs/issues/3637">#3637</a>)</li>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/192cbaafabc3166691efd63d34b675b525fcf65a"><code>192cbaa</code></a>
chore(deps): update dependency <code>@​types/inquirer</code> to v10 (<a
href="https://redirect.github.com/napi-rs/napi-rs/issues/3668">#3668</a>)</li>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/9188219047aff34963c98fc701e625955050cdbc"><code>9188219</code></a>
chore(deps): update dependency electron to v45 (<a
href="https://redirect.github.com/napi-rs/napi-rs/issues/3634">#3634</a>)</li>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/1d93a4e284150c3461032a40e3a8a95c3703efb7"><code>1d93a4e</code></a>
fix(napi): compact class identity metadata (<a
href="https://redirect.github.com/napi-rs/napi-rs/issues/3667">#3667</a>)</li>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/e9de9024337af056b79010d3f9024fdc88965572"><code>e9de902</code></a>
fix(napi): keep the registered classes when a later load fails (<a
href="https://redirect.github.com/napi-rs/napi-rs/issues/3666">#3666</a>)</li>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/cad7ff7176bd2975d7a75cfa64fde3be021e0e0b"><code>cad7ff7</code></a>
feat(napi): support well-known symbol keys for class members (<a
href="https://redirect.github.com/napi-rs/napi-rs/issues/3665">#3665</a>)</li>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/c01ce6017afb40bc5e454f837869edd54c287271"><code>c01ce60</code></a>
fix(napi): free define_class closures, honour static flags, avoid TS1016
in c...</li>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/5a49dad2756acf93fdc7ff1f1ab7b01803fb28e4"><code>5a49dad</code></a>
feat(napi): support symbol_for keys for class members (<a
href="https://redirect.github.com/napi-rs/napi-rs/issues/3661">#3661</a>)</li>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/0c589032e362595dd38642bb91b532415bdca1d3"><code>0c58903</code></a>
fix(napi): free threadsafe function call data when the call fails (<a
href="https://redirect.github.com/napi-rs/napi-rs/issues/3656">#3656</a>)</li>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/ada66a35f8c16e8225745066994dd33b1dfaa293"><code>ada66a3</code></a>
chore(deps): update release-plz/action action to v0.5.147 (<a
href="https://redirect.github.com/napi-rs/napi-rs/issues/3659">#3659</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/napi-rs/napi-rs/compare/napi-v3.15.0...napi-v3.16.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `napi-derive` from 3.6.13 to 3.7.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/napi-rs/napi-rs/releases">napi-derive's
releases</a>.</em></p>
<blockquote>
<h2>napi-derive-v3.7.0</h2>
<h3>Added</h3>
<ul>
<li><em>(napi)</em> support well-known symbol keys for class members (<a
href="https://redirect.github.com/napi-rs/napi-rs/pull/3665">#3665</a>)</li>
<li><em>(napi)</em> support symbol_for keys for class members (<a
href="https://redirect.github.com/napi-rs/napi-rs/pull/3661">#3661</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><em>(napi)</em> free define_class closures, honour static flags,
avoid TS1016 in constructors (<a
href="https://redirect.github.com/napi-rs/napi-rs/pull/3662">#3662</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/f89400d99b136c5c8a27818654b91256832b5bd6"><code>f89400d</code></a>
chore: release (<a
href="https://redirect.github.com/napi-rs/napi-rs/issues/3637">#3637</a>)</li>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/192cbaafabc3166691efd63d34b675b525fcf65a"><code>192cbaa</code></a>
chore(deps): update dependency <code>@​types/inquirer</code> to v10 (<a
href="https://redirect.github.com/napi-rs/napi-rs/issues/3668">#3668</a>)</li>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/9188219047aff34963c98fc701e625955050cdbc"><code>9188219</code></a>
chore(deps): update dependency electron to v45 (<a
href="https://redirect.github.com/napi-rs/napi-rs/issues/3634">#3634</a>)</li>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/1d93a4e284150c3461032a40e3a8a95c3703efb7"><code>1d93a4e</code></a>
fix(napi): compact class identity metadata (<a
href="https://redirect.github.com/napi-rs/napi-rs/issues/3667">#3667</a>)</li>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/e9de9024337af056b79010d3f9024fdc88965572"><code>e9de902</code></a>
fix(napi): keep the registered classes when a later load fails (<a
href="https://redirect.github.com/napi-rs/napi-rs/issues/3666">#3666</a>)</li>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/cad7ff7176bd2975d7a75cfa64fde3be021e0e0b"><code>cad7ff7</code></a>
feat(napi): support well-known symbol keys for class members (<a
href="https://redirect.github.com/napi-rs/napi-rs/issues/3665">#3665</a>)</li>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/c01ce6017afb40bc5e454f837869edd54c287271"><code>c01ce60</code></a>
fix(napi): free define_class closures, honour static flags, avoid TS1016
in c...</li>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/5a49dad2756acf93fdc7ff1f1ab7b01803fb28e4"><code>5a49dad</code></a>
feat(napi): support symbol_for keys for class members (<a
href="https://redirect.github.com/napi-rs/napi-rs/issues/3661">#3661</a>)</li>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/0c589032e362595dd38642bb91b532415bdca1d3"><code>0c58903</code></a>
fix(napi): free threadsafe function call data when the call fails (<a
href="https://redirect.github.com/napi-rs/napi-rs/issues/3656">#3656</a>)</li>
<li><a
href="https://github.com/napi-rs/napi-rs/commit/ada66a35f8c16e8225745066994dd33b1dfaa293"><code>ada66a3</code></a>
chore(deps): update release-plz/action action to v0.5.147 (<a
href="https://redirect.github.com/napi-rs/napi-rs/issues/3659">#3659</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.6.13...napi-derive-v3.7.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-11-06 08:50:29 -08:00
Yang Cen a9028ef441 feat(search): document and validate calibrated effort tiers (#4882)
Lance beta.11 calibrates lower `search_effort` tiers by metric and
requested `k`. With the Rust dependency and Python/Node execution tests
already on main via #4881, document the tiers across Rust, Python, Node
and the search guide, extend the remote request matrix to cover `0.1`
and `0.25`, and align the Python test package with beta.11.

`0.1` and `0.25` target empirical mean partition-routing recall of 80%
and 90% for L2, cosine and dot through `k=100000`. These are not
per-query or final Recall@k guarantees. Default Auto is unchanged;
Hamming and larger `k` remain uncalibrated, and remote queries require
corresponding server support. This PR makes no additional performance
claim. See [Lance
#10695](https://github.com/lance-format/lance/pull/10695) for
measurements and limitations.

Validation: both strict workspace Clippy configurations, Rust
formatting, 13 Rust effort tests, 208 Python query tests, 41 Node query
tests, native binding builds, TypeScript, Node lint/generated docs,
Python lint/format, full lockfile check and two dependency guards passed
on `a8b09170`. All validated Rust/Python/Node source and dependency
files are byte-identical at `2a82d07c`; the only subsequent change
restores the Java POM to main. Root Ruff has 59 existing diagnostics and
six formatting files, all byte-identical to the base; the Python package
passes.

The Java REST/Namespace client has no changed API here, and its
dependency remains identical to main. The separate [Java beta
publication failure](https://github.com/lance-format/lance/issues/10773)
is not claimed resolved or validated. Official SDK release, automatic
mirror, Sophon adoption and measured consumer acceptance remain
follow-up stages.
2026-11-06 17:37:52 +08:00
Lance Release 06fcd628cf Bump version: 0.42.0-beta.6 → 0.42.0-beta.7 v0.42.0-beta.7 2026-11-06 08:08:36 +00:00
Yang Cen d812fe86ae chore(deps): upgrade Lance to v15.0.0-beta.12 (#4888)
Upgrade the exact Lance Git dependencies from v15.0.0-beta.11 to the
published
[v15.0.0-beta.12](https://github.com/lance-format/lance/releases/tag/v15.0.0-beta.12).
This includes `Dataset::file_reader_options()`, which downstream
consumers need to preserve dataset defaults when constructing per-read
list-structure options.

Update all 15 workspace pins and 25 Lance lockfile package records to
release commit `635d412cde01e5d4203a91be47ddbfd0f2a6e068`. Non-Lance
package records, including their dependency edges, remain unchanged. The
`geo` validation covers the release's R-tree crate relocation.

Validation on macOS arm64 / Rust 1.97.0:

- `cargo test --locked --features remote,geo --tests`: 2,278 passed, 79
existing ignored, 0 failed.
- `cargo clippy --locked --features remote,geo --tests --examples -- -D
warnings`: passed.
- `cargo fmt --all -- --check` and `git diff --check`: passed.

Sophon adoption and PE integration validation remain separate.
2026-11-06 15:57:49 +08:00