You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In johannesvollmer/exrs#231 (CC @johannesvollmer) we're stripping out an upper-version bound for a dependency to allow it to be used across other dependencies, and reimplementing the MSRV test by -Zminimal-versions.
There was a request to make sure that the exrs change in question doesn't affect this image crate - especially its MSRV.
It however seems unnecessarily complicated to contribute to Cargo.lock.msrv or to reproduce the versions used by it in downstream crates. The file that's checked in seems to be a random snapshot from some moment in time - possibly with manual downgrades via text editing or cargo update --precise .. calls to downgrade specific (transitive) dependencies - that is not something a consume or image can easily cobble up except for trial-and-error downgrading dependencies, or swinging the big -Zminimal-versions hammer.
Even if downstream consumer crates decide to use -Zminimal-versions, they'll be greeted by a compiler failure because the image crate uses bytemuck::pow_read_unaligned() which only became available in bytemuck 1.8.0: 61ec877. Hence the big advantage of this is that, besides satisfying the MSRV check, downstream crates can safely use -Zminimal-versions and be sure that at least image and its dependencies continue to compile.
This approach only seems to have been discussed very briefly in #1433 (comment) and was deemed "shouldn't be used in production either", perhaps because it is a nightly-only feature?
The text was updated successfully, but these errors were encountered:
The strategy of checking in Cargo.lock.msrv was adopted in a rush to get CI working again after a few of our dependencies decided to switch to much more aggressive MSRV policies than we use. You are correct that it was created via a couple specific cargo update --precise .. calls. Using minimal versions is clearly a better option now that the crate actually supports that 😅
In johannesvollmer/exrs#231 (CC @johannesvollmer) we're stripping out an upper-version bound for a dependency to allow it to be used across other dependencies, and reimplementing the MSRV test by
-Zminimal-versions
.There was a request to make sure that the
exrs
change in question doesn't affect thisimage
crate - especially its MSRV.It however seems unnecessarily complicated to contribute to
Cargo.lock.msrv
or to reproduce the versions used by it in downstream crates. The file that's checked in seems to be a random snapshot from some moment in time - possibly with manual downgrades via text editing orcargo update --precise ..
calls to downgrade specific (transitive) dependencies - that is not something a consume orimage
can easily cobble up except for trial-and-error downgrading dependencies, or swinging the big-Zminimal-versions
hammer.Even if downstream consumer crates decide to use
-Zminimal-versions
, they'll be greeted by a compiler failure because theimage
crate usesbytemuck::pow_read_unaligned()
which only became available inbytemuck 1.8.0
: 61ec877. Hence the big advantage of this is that, besides satisfying the MSRV check, downstream crates can safely use-Zminimal-versions
and be sure that at leastimage
and its dependencies continue to compile.This approach only seems to have been discussed very briefly in #1433 (comment) and was deemed "shouldn't be used in production either", perhaps because it is a nightly-only feature?
The text was updated successfully, but these errors were encountered: