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
{{ message }}
Repository navigation
Tracking issue for future-incompatibility lint soft_unstable #64266
When some feature is unstable, but was allowed on stable due to some stability checking hole or oversight we may unstabilize it in a "soft" way to avoid breaking crates depending on the crates using the feature.
This soft unstabilization can be done using this lint.
#[deny(soft_unstable)] is on by default, but the error message (playground) still has a lint-like note warning mentioning it will become a hard error in the future:
= 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 #64266 <https://github.com/rust-lang/rust/issues/64266>
So this feature is used to make breaking change to avoid breaking change ? The concept of solf_unstable don't make any sense for me, specially if #[deny(soft_unstable)] is default. It's just a more complicate way that produce the same result. Or I'm missing something.
#[stability(level=2.33333333, wind-strenght=5.3)] (not from me, author probably wishes to stay in shadow)
Why doesn't compiler error message say what feature should I enable? It tells me about the lint soft_unstable but not about feature(custom_inner_attributes). Error messages for unstable features typically tell you the name of the feature.
This has been shown in future breakage reports for almost a year now (since #116274). I think we should move on towards making this lint a hard error.
IMO if we want to de-stabilize something in the future, we should just have a new lint for each such case. I don't think it is a good idea to have one lint used as a grab-bag for a bunch of independent things; each de-stabilization needs to be handled on its own timeline anyway and might need its own guidance for how to adjust the code to make it still work.
@kryptan please file an issue with a piece of example code triggering a sub-par diagnostic, and what information you think is missing from the diagnostic.
Activity
lqd commentedon Oct 4, 2019
#[deny(soft_unstable)]is on by default, but the error message (playground) still has a lint-like note warning mentioning it will become a hard error in the future:do we need an issue for this ?
Rollup merge of rust-lang#68018 - petrochenkov:nosoft, r=Centril
Rollup merge of rust-lang#68018 - petrochenkov:nosoft, r=Centril
Temporarily silence a Rust error
Temporarily silence a Rust error
build cleanly with nightly Rust 2021-03-14+
Stargateur commentedon Aug 31, 2021
So this feature is used to make breaking change to avoid breaking change ? The concept of
solf_unstabledon't make any sense for me, specially if#[deny(soft_unstable)]is default. It's just a more complicate way that produce the same result. Or I'm missing something.#[stability(level=2.33333333, wind-strenght=5.3)](not from me, author probably wishes to stay in shadow)yaahc commentedon May 16, 2022
I think I might need to use this for #95956 as well
fix(rustfmt): avoid unstable inner attributes
5 remaining items
kryptan commentedon Nov 19, 2024
Why doesn't compiler error message say what feature should I enable? It tells me about the lint
soft_unstablebut not aboutfeature(custom_inner_attributes). Error messages for unstable features typically tell you the name of the feature.RalfJung commentedon Dec 11, 2024
This has been shown in future breakage reports for almost a year now (since #116274). I think we should move on towards making this lint a hard error.
IMO if we want to de-stabilize something in the future, we should just have a new lint for each such case. I don't think it is a good idea to have one lint used as a grab-bag for a bunch of independent things; each de-stabilization needs to be handled on its own timeline anyway and might need its own guidance for how to adjust the code to make it still work.
@kryptan please file an issue with a piece of example code triggering a sub-par diagnostic, and what information you think is missing from the diagnostic.
Rollup merge of rust-lang#149978 - cyrgani:no-eq-assert-receiver-meth…
Rollup merge of rust-lang#149978 - cyrgani:no-eq-assert-receiver-meth…
Rollup merge of rust-lang#149978 - cyrgani:no-eq-assert-receiver-meth…
Rollup merge of rust-lang#149978 - cyrgani:no-eq-assert-receiver-meth…
Rollup merge of rust-lang#149978 - cyrgani:no-eq-assert-receiver-meth…
Unrolled build for #149978
Rollup merge of #149978 - cyrgani:no-eq-assert-receiver-method, r=mad…
Rollup merge of rust-lang#153622 - RalfJung:rm-soft-unstable, r=Jonat…
Rollup merge of rust-lang#153622 - RalfJung:rm-soft-unstable, r=Jonat…
Rollup merge of #153622 - RalfJung:rm-soft-unstable, r=JonathanBrouwer
Rollup merge of #153622 - RalfJung:rm-soft-unstable, r=JonathanBrouwer
Rollup merge of #153622 - RalfJung:rm-soft-unstable, r=JonathanBrouwer