# 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