Skip to content

Transitive num-bigint-dig 0.8.4 triggers future-incompat warnings on Rust 1.91 via rsa/reqsign/opendal chain #2760

@fredlarochelle

Description

@fredlarochelle

Summary

Building LanceDB 0.22.2 on Rust 1.91.0 surfaces future-incompatibility warnings from num-bigint-dig 0.8.4. The crate is pulled transitively via rsa → reqsign → opendal. Builds still pass today, but this will become a hard error in a future Rust release.

Environment

  • Rust 1.91.0 (stable)
  • OS: Fedora 42
  • lancedb: 0.22.2
  • lance: 0.38.2
  • opendal: 0.54.1
  • reqsign: 0.16.5
  • rsa: 0.9.8
  • num-bigint-dig: 0.8.4

Dependency Path

  • cargo tree -i num-bigint-dig shows:
num-bigint-dig v0.8.4
└── rsa v0.9.8
    └── reqsign v0.16.5
        └── opendal v0.54.1
            ├── lance-io v0.38.2
            │   ├── lance v0.38.2
            │   │   ├── lance-namespace v0.0.18
            │   │   │   └── lancedb v0.22.2
...
            │   │   ├── lancedb v0.22.2 (*)
...
            │   ├── lance-file v0.38.2
            │   │   ├── lance v0.38.2 (*)
            │   │   ├── lance-index v0.38.2
            │   │   │   ├── lance v0.38.2 (*)
            │   │   │   └── lancedb v0.22.2 (*)
            │   │   └── lance-table v0.38.2
            │   │       ├── lance v0.38.2 (*)
            │   │       ├── lance-index v0.38.2 (*)
            │   │       └── lancedb v0.22.2 (*)
            │   ├── lance-index v0.38.2 (*)
            │   ├── lance-table v0.38.2 (*)
            │   └── lancedb v0.22.2 (*)
            ├── lance-namespace v0.0.18 (*)
            └── object_store_opendal v0.54.0
                └── lance-io v0.38.2 (*)

Reproduction

  • Build on 1.91 and generate report:
cargo report future-incompatibilities --id 1

Impact

  • Currently: warnings on Rust 1.91.
  • Future: hard errors in a later Rust release, breaking downstream builds.

Tried

  • cargo update -p opendal → 0.54.1 (still resolves rsa 0.9.8 → num-bigint-dig 0.8.4).
  • cargo update -p rsa and -p reqsign → no newer compatible versions under current constraints.
  • Note: reqsign has a newer release (0.18.0), but opendal 0.54.x appears to constrain to 0.16.x.

Request

  • Please bump the dependency chain so num-big-dig is not pulled when upstream update become available
  • I can file upstream reports too if you prefer.

Output

cargo report future-incompatibilities --id 1

The following warnings were discovered during the build. These warnings are an
indication that the packages contain code that will become an error in a
future release of Rust. These warnings typically cover changes to close
soundness problems, unintended or undocumented behavior, or critical problems
that cannot be fixed in a backwards-compatible fashion, and are not expected
to be in wide use.

Each warning should contain a link for more information on what the warning
means and how to resolve it.


To solve this problem, you can try the following approaches:

- If the issue is not solved by updating the dependencies, a fix has to be
implemented by those dependencies. You can help with that by notifying the
maintainers of this problem (e.g. by creating a bug report) or by proposing a
fix to the maintainers (e.g. by creating a pull request):

  - num-bigint-dig@0.8.4
  - Repository: https://github.com/dignifiedquire/num-bigint
  - Detailed warning command: `cargo report future-incompatibilities --id 1 --package num-bigint-dig@0.8.4`

- If waiting for an upstream fix is not an option, you can use the `[patch]`
section in `Cargo.toml` to use your own version of the dependency. For more
information, see:
https://doc.rust-lang.org/cargo/reference/overriding-dependencies.html#the-patch-section

The package `num-bigint-dig v0.8.4` currently triggers the following future incompatibility lints:
> warning: macro `vec` is private
>    --> /home/fred/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-dig-0.8.4/src/biguint.rs:490:22
>     |
> 490 |         BigUint::new(vec![1])
>     |                      ^^^
>     |
>     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
>     = note: for more information, see issue #120192 <https://github.com/rust-lang/rust/issues/120192>
> 
> warning: macro `vec` is private
>     --> /home/fred/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-dig-0.8.4/src/biguint.rs:2005:9
>      |
> 2005 |         vec![0]
>      |         ^^^
>      |
>      = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
>      = note: for more information, see issue #120192 <https://github.com/rust-lang/rust/issues/120192>
> 
> warning: macro `vec` is private
>     --> /home/fred/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-dig-0.8.4/src/biguint.rs:2027:16
>      |
> 2027 |         return vec![b'0'];
>      |                ^^^
>      |
>      = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
>      = note: for more information, see issue #120192 <https://github.com/rust-lang/rust/issues/120192>
> 
> warning: macro `vec` is private
>     --> /home/fred/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-dig-0.8.4/src/biguint.rs:2313:13
>      |
> 2313 |             vec![0]
>      |             ^^^
>      |
>      = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
>      = note: for more information, see issue #120192 <https://github.com/rust-lang/rust/issues/120192>
> 
> warning: macro `vec` is private
>    --> /home/fred/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-dig-0.8.4/src/prime.rs:138:22
>     |
> 138 |     let mut moduli = vec![BigUint::zero(); prime_limit];
>     |                      ^^^
>     |
>     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
>     = note: for more information, see issue #120192 <https://github.com/rust-lang/rust/issues/120192>
> 
> warning: macro `vec` is private
>    --> /home/fred/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-dig-0.8.4/src/bigrand.rs:319:25
>     |
> 319 |         let mut bytes = vec![0u8; bytes_len];
>     |                         ^^^
>     |
>     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
>     = note: for more information, see issue #120192 <https://github.com/rust-lang/rust/issues/120192>
> 
The package `num-bigint-dig v0.8.4` currently triggers the following future incompatibility lints:
> warning: macro `vec` is private
>    --> /home/fred/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-dig-0.8.4/src/biguint.rs:490:22
>     |
> 490 |         BigUint::new(vec![1])
>     |                      ^^^
>     |
>     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
>     = note: for more information, see issue #120192 <https://github.com/rust-lang/rust/issues/120192>
> 
> warning: macro `vec` is private
>     --> /home/fred/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-dig-0.8.4/src/biguint.rs:2005:9
>      |
> 2005 |         vec![0]
>      |         ^^^
>      |
>      = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
>      = note: for more information, see issue #120192 <https://github.com/rust-lang/rust/issues/120192>
> 
> warning: macro `vec` is private
>     --> /home/fred/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-dig-0.8.4/src/biguint.rs:2027:16
>      |
> 2027 |         return vec![b'0'];
>      |                ^^^
>      |
>      = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
>      = note: for more information, see issue #120192 <https://github.com/rust-lang/rust/issues/120192>
> 
> warning: macro `vec` is private
>     --> /home/fred/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-dig-0.8.4/src/biguint.rs:2313:13
>      |
> 2313 |             vec![0]
>      |             ^^^
>      |
>      = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
>      = note: for more information, see issue #120192 <https://github.com/rust-lang/rust/issues/120192>
> 
> warning: macro `vec` is private
>    --> /home/fred/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-dig-0.8.4/src/prime.rs:138:22
>     |
> 138 |     let mut moduli = vec![BigUint::zero(); prime_limit];
>     |                      ^^^
>     |
>     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
>     = note: for more information, see issue #120192 <https://github.com/rust-lang/rust/issues/120192>
> 
> warning: macro `vec` is private
>    --> /home/fred/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-dig-0.8.4/src/bigrand.rs:319:25
>     |
> 319 |         let mut bytes = vec![0u8; bytes_len];
>     |                         ^^^
>     |
>     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
>     = note: for more information, see issue #120192 <https://github.com/rust-lang/rust/issues/120192>
> 

Metadata

Metadata

Assignees

No one assigned

    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