---
# System prepended metadata

title: Rust Edition 2024

---

# 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