(Warning: approximately quarter-baked idea)
Now that the Rust edition is a fully formed concept, would it make sense to “promote” nightly to a full edition?
There are three ways I think that could be handled:
- Make
edition = "nightly" required to opt in to #[feature]
- Make
edition = "nightly" opt in to the “code-complete” features expected to headline the next edition
- Make
edition = "nightly" opt in to any RFC-approved “code-complete” features
I think the nightly toolchain should still be required for nightly features (sounds obvious now that I said it), so the first option seems redundant. The second is great, especially in the lead-up to stabilization of key edition features for easy opt-in, but could also be accomplished by just letting nightly users specify a future edition. The third is the most generally applicable.
What do you think? I’ve currently got a header block enabling all of the feature gates tracked in the Epoch.Next tracking issue for my personal-for-fun projects, so I know I’d use the “nightly edition” for those at least.
Benefits
- Easier to try out solid(ish) upcoming features without knowing the state of every feature gate
- And thus easier to get feedback on features nearing stabilization
Drawbacks
- Makes there two places to look for nightly feature enabling (
main.rs + Cargo.toml) instead of just one
- Though silently using things stable on a later compiler version than you thought you supported is still a problem – CI your things please
- Makes it easier to exit Rust’s careful stability story
- Adds an unstable edition to a versioning scheme that’s supposed to highlight the stability of the Rust compiler