0.38.0 does not compile without the `remote` feature: `job.rs` uses the `remote`-gated `Error::Http` variant
Summary
lancedb 0.38.0 does not compile without the remote feature: src/job.rs is compiled unconditionally (pub mod job; in src/lib.rs) and constructs Error::Http { … }, but that variant is declared behind #[cfg(feature = "remote")] in src/error.rs. Since the crate's default feature set is empty, a plain lancedb = "0.38" dependency (with or without default-features = false) fails to build. 0.37.1 builds fine with the same feature set.
Reproduction
[dependencies]
lancedb = "0.38" # default features are empty, so `default-features = false` makes no difference$ cargo check
error[E0599]: no variant named `Http` found for enum `error::Error`
--> …/lancedb-0.38.0/src/job.rs:56:40
|
56 | Some(request_id) => Error::Http {
| ^^^^ variant not found in `error::Error`
|
::: …/lancedb-0.38.0/src/error.rs:55:1
error[E0599]: no variant named `Http` found for enum `error::Error`
--> …/lancedb-0.38.0/src/job.rs:66:40
|
66 | Some(request_id) => Error::Http {
| ^^^^ variant not found in `error::Error`rustc 1.98.0 (88d9e12ae 2026-08-18), macOS aarch64. Enabling remote makes it compile, but that pulls in reqwest/http/urlencoding and the lance-namespace-impls REST adapters, which a local-only embedding has no use for.
Where
src/lib.rs:188—pub mod job;(ungated)src/job.rs:56and:66—Error::Http { source, request_id, status_code }src/error.rs:111—#[cfg(feature = "remote")]on theHttpvariant
Suggested fix
Either gate the module (#[cfg(feature = "remote")] pub mod job;) if the job API is remote-only, or gate the two Error::Http arms in job.rs behind remote and fall through to the existing non-HTTP variant otherwise. A cargo check --no-default-features (which for this crate is the default build) in CI would catch this class.
Thanks — happy to open a PR for whichever shape you prefer.
Source: lancedb/lancedb