# Rust Edition 2024 ## :motorway: Milestones **September 2023:** - [x] Formally petition the Leadership Council to form the Edition 2024 Working Group - https://github.com/rust-lang/leadership-council/issues/55 - [x] Start Edition RFC - https://github.com/rust-lang/rfcs/pull/3501 **October 2023:** - [x] :calendar: Preliminary roadmap with rough dates. - [x] Merge Edition RFC - [x] Draft a blog post to call the community to action in proposing features for the 2024 edition - [x] Start adding preliminary support for Edition 2024 in all tools provided by the Rust project - [x] rustc: https://github.com/rust-lang/rust/pull/94461 - [x] cargo: https://github.com/rust-lang/cargo/pull/12771 - [x] rustfmt: https://github.com/rust-lang/rust/pull/94461 - They are in the process of adding the 2024 "style edition". https://github.com/rust-lang/rustfmt/pull/5787 and related PRs. - [x] clippy: https://github.com/rust-lang/rust/pull/94461 - [x] rust-analyzer: https://github.com/rust-lang/rust-analyzer/pull/16151 **November 2023:** - [x] :loudspeaker: Blog post letting people know about the edition and the schedule - [ ] :incoming_envelope: Ask teams to check this document and add things (or confirm that they will not be making any edition changes) - [ ] compiler - [ ] lang - [ ] libs - [ ] rustdoc - [x] cargo - [ ] style **December 2023:** - [x] Pre-RFCs should be posted. **January 2024:** - [ ] RFCs should be posted. **February 2024:** - [ ] :scroll: Final list of changes. All proposed changes have: - [ ] An approved RFC - [ ] Migration+idiom lint plan - [ ] Partial implementation or plan for implementation **March 2024:** **April 2024:** **May 2024:** - [ ] :computer: All proposed changes implemented and available in nightly. **June 2024:** - [ ] :warning: All lints implemented on nightly and tested on crater. **July 2024:** - [ ] :busts_in_silhouette: Announce start of public testing. **August 2024:** - [ ] :loudspeaker: Finish marketing materials, docs, etc. - [ ] Blog post(s) - [ ] Edition guide - [ ] :tada: Stabilize `--edition=2024` on nightly (1.82), any time between 2024-08-01 and 2024-08-31. **September 2024:** **October 2024:** - [ ] :checkered_flag: `--edition=2024` available on stable in Rust 1.82 on 2024-10-17. ## Tentative features of the new edition ## rustdoc - ~~[Turn INVALID_DOC_ATTRIBUTES lint into a hard error](https://github.com/rust-lang/rust/pull/111505)~~ - ~~[ ] proposed~~ Appears to no longer be an edition change. ### Libs - Include `Future` and `IntoFuture` in the 2024 prelude - [x] Proposed https://github.com/rust-lang/rfcs/pull/3509 - [x] Approved https://github.com/rust-lang/rfcs/pull/3509#issuecomment-1906495817 - [x] implemented https://github.com/rust-lang/rust/pull/121041 - [ ] autofixable ? https://github.com/rust-lang/rust/issues/121042#issuecomment-1942181209 - Nilstrieb working on this - [ ] documented https://doc.rust-lang.org/nightly/edition-guide/rust-2024/prelude.html (partially complete) - [Remove RustcEncodable & RustcDecodable from prelude in next edition](https://github.com/rust-lang/rust/pull/116016) - [x] proposed https://github.com/rust-lang/libs-team/issues/272 - [x] approved https://github.com/rust-lang/rust/pull/116016#issuecomment-1937145162 - [x] implemented https://github.com/rust-lang/rust/pull/116016 - [x] internal unstable bug: https://github.com/rust-lang/rust/issues/123156 - [ ] autofixable https://github.com/rust-lang/rust/pull/116016#issuecomment-1937153238 - [ ] documented https://github.com/rust-lang/edition-guide/pull/298 ### Lang https://github.com/rust-lang/lang-team/blob/HEAD/src/roadmaps/roadmap-2024.md https://github.com/rust-lang/lang-team/issues/209 https://github.com/rust-lang/rust/labels/lang-team-202x-edition https://github.com/orgs/rust-lang/projects/43/views/2 - Change unsafe_op_in_unsafe_fn to be warn-by-default - [x] proposed https://rust-lang.github.io/rfcs/2585-unsafe-block-in-unsafe-fn.html - [x] approved https://github.com/rust-lang/rust/issues/71668#issuecomment-1189396860 - [x] implemented https://github.com/rust-lang/rust/pull/112038 - [x] autofixable https://github.com/rust-lang/rust/pull/119948 - [ ] documented - [x] edition guide https://doc.rust-lang.org/nightly/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html - [ ] reference - [ ] Overlapping suggestions https://github.com/rust-lang/rust/issues/123304 - [ ] Crater run https://github.com/rust-lang/rust/pull/122960 - Reserve `gen` keyword. - [x] proposed https://github.com/rust-lang/rfcs/pull/3513 - [x] approved https://github.com/rust-lang/rfcs/pull/3513#issuecomment-1957166202 - [ ] Concerns over picking a different keyword instead of `gen`? https://github.com/rust-lang/rust/issues/117078 - [x] implemented https://github.com/rust-lang/rust/pull/116447 - [ ] autofixable https://github.com/rust-lang/rust/pull/123680 - [ ] documented - [ ] edition guide - [ ] reference - RPIT Lifetime Capture - [x] proposed https://github.com/rust-lang/rfcs/pull/3498 - [x] approved - [ ] implemented - [x] https://github.com/rust-lang/rust/pull/116952 - [ ] TAIT or precise capturing? https://github.com/rust-lang/rust/issues/117587 - @TC indicated that stabilizing TAIT is a prerequisite for providing a way to express precise capturing. [#63063](https://github.com/rust-lang/rust/issues/63063) - [ ] autofixable - [ ] documented - [ ] edition-guide - [ ] reference - Macro matcher fragment specifier policy - [x] approved https://rust-lang.github.io/rfcs/3531-macro-fragment-policy.html - ~~implemented / autofixable~~ N/A - [ ] docs (Add to edition-guide?) - Disallow reference to `static mut` - [x] approved https://github.com/rust-lang/rust/issues/114447#issuecomment-1707177536 - [x] implemented https://github.com/rust-lang/rust/pull/117556 - [ ] Should this also include "hidden" references? - https://github.com/rust-lang/rust/issues/123060 - https://github.com/rust-lang/rust/issues/114447#issuecomment-1837156804 - https://rust-lang.zulipchat.com/#narrow/stream/213817-t-lang/topic/static_mut_refs/near/427198395 - [ ] autofixable — current lint is maybe-incorrect, uncertain if there is a migration plan - https://github.com/rust-lang/rust/issues/123061 - [ ] documented - [ ] edition guide https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-reference.html (partially complete) - [ ] Get help: https://rust-lang.zulipchat.com/#narrow/stream/213817-t-lang/topic/static_mut_refs - https://github.com/rust-lang/rust/issues/123059 - [ ] reference - New range types - [x] proposed https://github.com/rust-lang/rfcs/pull/3550 - Crater data collected, waiting on lang? - [ ] approved https://github.com/rust-lang/rfcs/pull/3550#issuecomment-1908544755 - Temporary lifetimes in tail expressions - [ ] proposed - Unprefixed string literals - [x] proposed https://github.com/rust-lang/rfcs/pull/3593 - [x] approved https://github.com/rust-lang/rfcs/pull/3593#issuecomment-2017640953 - [ ] implemented - [ ] autofixable - [ ] documented - [ ] edition guide - [ ] reference - Unsafe attributes - [x] proposed https://github.com/rust-lang/rfcs/pull/3325 - [ ] approved https://github.com/rust-lang/rfcs/pull/3325#issuecomment-1396911253 - [ ] implemented - [ ] documented - Unsafe extern - [x] proposed https://github.com/rust-lang/rfcs/pull/3484 - [ ] approved https://github.com/rust-lang/rfcs/pull/3484#issuecomment-2023097397 - [ ] implemented - [ ] documented ### Cargo https://github.com/orgs/rust-lang/projects/30/views/1 - [Remove implicit features](https://github.com/rust-lang/cargo/issues/12826) - [x] proposed https://rust-lang.github.io/rfcs/3491-remove-implicit-features.html - [x] approved https://github.com/rust-lang/rfcs/pull/3491#issuecomment-1739937122 - [ ] implemented - https://github.com/rust-lang/cargo/pull/13621 - [ ] autofixable - [ ] documented - Public/private dependencies - [x] proposed https://rust-lang.github.io/rfcs/3516-public-private-dependencies.html - [x] approved https://github.com/rust-lang/rfcs/pull/3516#issuecomment-1777514797 - [ ] implemented Partially implemented, see tracking issue https://github.com/rust-lang/rust/issues/44663 - Waiting on rustc rework from davidtwco - [ ] autofixable - [ ] documented - MSRV-dependent resolver - [x] proposed https://rust-lang.github.io/rfcs/3537-msrv-resolver.html - [x] approved https://github.com/rust-lang/rfcs/pull/3537#issuecomment-1899285746 - [ ] implemented Under development, see tracking: https://github.com/rust-lang/cargo/issues/9930 - [ ] autofixable - [ ] documented ### Rustfmt - [ ] implement style edition - [ ] https://github.com/rust-lang/rustfmt/pull/5787 - [ ] https://github.com/rust-lang/rustfmt/pull/5854 - [ ] https://github.com/rust-lang/rustfmt/pull/5937 - [Enable overflow_delimited_expr by default](https://github.com/rust-lang/rust/pull/114764) - [x] proposed - [x] approved https://github.com/rust-lang/rust/pull/114764#issuecomment-1826417341 - [ ] implemented - [ ] Use version sort - [x] proposed - [x] approved https://github.com/rust-lang/rust/pull/115046 - [ ] implemented - [ ] Unicode-aware sort - [x] proposed - [x] approved https://github.com/rust-lang/rust/pull/115046 - [ ] Miscellaneous `rustfmt` bugfixes? - What is this? - [ ] proposed - [ ] approved https://github.com/rust-lang/rust/pull/113394