Skip to content

Drop default features on lance workspace dependency #5042

@valkum

Description

@valkum

Now that lance-namespace moved from lancedb/lance-namespace in here, lance-format/lance-namespace#242 no longer applies.
The latest beta still pulls in aws-* crates due to lancedb depending on lance-namespace-impls with default features enabled.
lance-namespace-impls will pull in lance with default features enabled, which in fact will enable the aws feature.

Details

When using lance in one of the subcrates such as lance-namespace-impls this will pull in all the dependencies that are enabled by the default features.

Dropping the default features avoids having aws-* crates as an implicit hard dependency.

Here is a cargo tree output of the current beta. I have v0.38.3-beta.9 checked out locally and tested that disabling the default features on lance will in fact, remove the dependency on aws-lc-rs (and the other aws-* crates)

aws-lc-rs v1.14.1
├── rustls v0.23.34
│   ├── aws-smithy-http-client v1.1.3
│   │   ├── aws-smithy-http-client feature "default"
│   │   │   └── aws-smithy-runtime v1.9.3
│   │   │       ├── aws-smithy-runtime feature "client"
│   │   │       │   ├── aws-config v1.8.8
│   │   │       │   │   ├── aws-config feature "credentials-process"
│   │   │       │   │   │   └── aws-config feature "default"
│   │   │       │   │   │       └── lance-io v0.38.3-beta.9 (/Users/valkum/Developer/lance/rust/lance-io)
│   │   │       │   │   │           ├── lance v0.38.3-beta.9 (/Users/valkum/Developer/lance/rust/lance)
│   │   │       │   │   │           │   ├── lance feature "aws"
│   │   │       │   │   │           │   │   └── lance feature "default" << This is causing the inclusion of `aws-*`
│   │   │       │   │   │           │   │       └── lance-namespace-impls v0.38.3-beta.9 (/Users/valkum/Developer/lance/rust/lance-namespace-impls)
│   │   │       │   │   │           │   │           ├── lance-namespace-impls feature "default"
│   │   │       │   │   │           │   │           │   └── lancedb v0.22.3-beta.2 (https://github.com/lancedb/lancedb.git?tag=v0.22.3-beta.2#451411b1) (*)
More cargo tree output

aws-lc-rs v1.14.1
├── rustls v0.23.34
│   ├── aws-smithy-http-client v1.1.3
│   │   ├── aws-smithy-http-client feature "default"
│   │   │   └── aws-smithy-runtime v1.9.3
│   │   │       ├── aws-smithy-runtime feature "client"
│   │   │       │   ├── aws-config v1.8.8
│   │   │       │   │   ├── aws-config feature "credentials-process"
│   │   │       │   │   │   └── aws-config feature "default"
│   │   │       │   │   │       └── lance-io v0.38.3-beta.9 (/Users/valkum/Developer/lance/rust/lance-io)
│   │   │       │   │   │           ├── lance v0.38.3-beta.9 (/Users/valkum/Developer/lance/rust/lance)
│   │   │       │   │   │           │   └── lancedb v0.22.3-beta.2 (https://github.com/lancedb/lancedb.git?tag=v0.22.3-beta.2#451411b1)
│   │   │       │   │   │           │       ├── lancedb feature "gcs"
│   │   │       │   │   │           │       │   └── instant-index v0.1.0 << Part of our software
│   │   │       │   │   │           │       └── lancedb feature "oss"
│   │   │       │   │   │           │           └── instant-index v0.1.0 << Part of our software
│   │   │       │   │   │           │   ├── lance feature "aws"
│   │   │       │   │   │           │   │   └── lance feature "default" << This is causing the inclusion of `aws-*`
│   │   │       │   │   │           │   │       └── lance-namespace-impls v0.38.3-beta.9 (/Users/valkum/Developer/lance/rust/lance-namespace-impls)
│   │   │       │   │   │           │   │           ├── lance-namespace-impls feature "default"
│   │   │       │   │   │           │   │           │   └── lancedb v0.22.3-beta.2 (https://github.com/lancedb/lancedb.git?tag=v0.22.3-beta.2#451411b1) (*)
│   │   │       │   │   │           │   │           ├── lance-namespace-impls feature "dir"
│   │   │       │   │   │           │   │           │   └── lancedb v0.22.3-beta.2 (https://github.com/lancedb/lancedb.git?tag=v0.22.3-beta.2#451411b1) (*)
│   │   │       │   │   │           │   │           └── lance-namespace-impls feature "rest"
│   │   │       │   │   │           │   │               └── lancedb v0.22.3-beta.2 (https://github.com/lancedb/lancedb.git?tag=v0.22.3-beta.2#451411b1) (*)
│   │   │       │   │   │           │   ├── lance feature "azure"
│   │   │       │   │   │           │   │   └── lance feature "default" (*)
│   │   │       │   │   │           │   ├── lance feature "default" (*)
│   │   │       │   │   │           │   ├── lance feature "gcp"
│   │   │       │   │   │           │   │   ├── lancedb feature "gcs" (*)
│   │   │       │   │   │           │   │   └── lance feature "default" (*)
│   │   │       │   │   │           │   └── lance feature "oss"
│   │   │       │   │   │           │       ├── lancedb feature "oss" (*)
│   │   │       │   │   │           │       └── lance feature "default" (*)
│   │   │       │   │   │           ├── lance-file v0.38.3-beta.9 (/Users/valkum/Developer/lance/rust/lance-file)
│   │   │       │   │   │           │   └── lance-file feature "default"
│   │   │       │   │   │           │       ├── lance v0.38.3-beta.9 (/Users/valkum/Developer/lance/rust/lance) (*)
│   │   │       │   │   │           │       ├── lance-index v0.38.3-beta.9 (/Users/valkum/Developer/lance/rust/lance-index)
│   │   │       │   │   │           │       │   └── lance-index feature "default"
│   │   │       │   │   │           │       │       └── lance v0.38.3-beta.9 (/Users/valkum/Developer/lance/rust/lance) (*)
│   │   │       │   │   │           │       └── lance-table v0.38.3-beta.9 (/Users/valkum/Developer/lance/rust/lance-table)
│   │   │       │   │   │           │           └── lance-table feature "default"
│   │   │       │   │   │           │               ├── lance v0.38.3-beta.9 (/Users/valkum/Developer/lance/rust/lance) (*)
│   │   │       │   │   │           │               └── lance-index v0.38.3-beta.9 (/Users/valkum/Developer/lance/rust/lance-index) (*)
│   │   │       │   │   │           ├── lance-index v0.38.3-beta.9 (/Users/valkum/Developer/lance/rust/lance-index) (*)
│   │   │       │   │   │           └── lance-table v0.38.3-beta.9 (/Users/valkum/Developer/lance/rust/lance-table) (*)
│   │   │       │   │   │           ├── lance-io feature "aws"
│   │   │       │   │   │           │   └── lance feature "aws" (*)
│   │   │       │   │   │           ├── lance-io feature "azure"
│   │   │       │   │   │           │   └── lance feature "azure" (*)
│   │   │       │   │   │           ├── lance-io feature "gcp"
│   │   │       │   │   │           │   └── lance feature "gcp" (*)
│   │   │       │   │   │           ├── lance-io feature "opendal"
│   │   │       │   │   │           │   ├── lance-io feature "aws" (*)
│   │   │       │   │   │           │   ├── lance-io feature "azure" (*)
│   │   │       │   │   │           │   ├── lance-io feature "gcp" (*)
│   │   │       │   │   │           │   └── lance-io feature "oss"
│   │   │       │   │   │           │       └── lance feature "oss" (*)
│   │   │       │   │   │           └── lance-io feature "oss" (*)

I haven't tried to disable default features for lance-namespace-impl in lancedb yet.
I am also not sure if lance-namespace-impl needs features to enable the different backends.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions