-
Notifications
You must be signed in to change notification settings - Fork 13.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add a "future" edition #137606
add a "future" edition #137606
Conversation
It's hard to implement edition migrations without having a perma-unstable "future" edition to target.
cc @rust-lang/edition |
Can you say more about why any future changes would need to be tied to any edition? The kind of expected development workflow would be to keep new features behind a feature gate. Only when it looks like it is definitely ready to go in the edition would it add edition gates, and only once were are ready to stabilize would the feature gate be removed. |
In rust-lang/rfcs#3729, I describe some edition migrations that the RFC would require - I'm working on an experimental implementation of that RFC, and it's all behind a feature gate like you would expect, but I still want to be able to implement the behaviour for edition N and edition N+1 and write the tests confirming that behaves like it should. |
Quoting ehuss replying to a very similar proposal which was brought forth by me in June '24:
https://rust-lang.zulipchat.com/#narrow/channel/268952-edition/topic/Edition.20Beyond/near/442314182 |
I'm not sure that works in my case, I want to be able to enable the feature to refer to the unstable items it adds to the standard library and test those work with edition N behaviour, and then opt-in to the edition N+1 behaviour and test that. I guess I could add multiple feature flags instead? But that just feels like it confirms there is a need for this but we just don't want to add it. |
Hm, I see. Would it be possible to call it something different, like "future"? We don't know what will actually go in the "next" edition, and thus I don't think it is good to make any presumptions about what will be bundled together. It would also be helpful to have a clear warning in the docs to not use the "future" edition unless you have a situation like this were you have two different unstable behaviors that you need to test across an edition boundary1, that this edition marker is permanently unstable2, and that any behavior must also be gated behind a feature gate3? Otherwise I'm concerned that people will actually use this edition marker, which will make testing and tracking difficult and lead to confusion about which edition something is targeted towards. Would it also be possible to make the prelude changes Footnotes |
5cc7565
to
d19922b
Compare
Changed it to "future" and added requested descriptions. |
This comment has been minimized.
This comment has been minimized.
Team member @traviscross has proposed to merge this. The next step is review by the rest of the tagged team members: No concerns currently listed. Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! See this document for info about what commands tagged team members can give me. |
d19922b
to
d6bb98e
Compare
🔔 This is now entering its final comment period, as per the review above. 🔔 |
This should have been included in rust-lang#137606.
This should have been included in rust-lang#137606.
This should have been included in rust-lang#137606.
This should have been included in rust-lang#137606.
This should have been included in rust-lang#137606.
The final comment period, with a disposition to merge, as per the review above, is now complete. As the automated representative of the governance process, I would like to thank the author for their work and everyone else who contributed. This will be merged soon. |
@bors r=traviscross,ehuss rollup |
Rollup of 12 pull requests Successful merges: - rust-lang#137337 (Add verbatim linker to AIXLinker) - rust-lang#137363 (compiler: factor Windows x86-32 ABI impl into its own file) - rust-lang#137537 (Prevent `rmake.rs` from using unstable features, and fix 3 run-make tests that currently do) - rust-lang#137606 (add a "future" edition) - rust-lang#137957 (Remove i586-pc-windows-msvc) - rust-lang#138000 (atomic: clarify that failing conditional RMW operations are not 'writes') - rust-lang#138013 (Add post-merge analysis CI workflow) - rust-lang#138033 (rustdoc: Add attribute-related tests for rustdoc JSON.) - rust-lang#138137 (setTargetTriple now accepts Triple rather than string) - rust-lang#138173 (Delay bug for negative auto trait rather than ICEing) - rust-lang#138184 (Allow anyone to relabel `CI-spurious-*`) - rust-lang#138187 (remove clones) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of rust-lang#137606 - davidtwco:next-edition, r=traviscross,ehuss add a "future" edition This idea has been discussed previously [on Zulip](https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/Continuous.20edition-like.20changes.3F/near/432559262) (though what I've implemented isn't exactly the "next"/"future" editions proposed in that message, just the "future" edition). I've found myself prototyping changes that involve edition migrations and wanting to target an upcoming edition for those migrations, but none exists. This should be permanently unstable and not removed.
There should be an RFC drafted that spells out the process around this, for example:
Started a Zulip topic: #edition>'future' edition policy RFC |
This idea has been discussed previously on Zulip (though what I've implemented isn't exactly the "next"/"future" editions proposed in that message, just the "future" edition). I've found myself prototyping changes that involve edition migrations and wanting to target an upcoming edition for those migrations, but none exists. This should be permanently unstable and not removed.