2024 Edition Update

Mar. 22, 2024 · Eric Huss on behalf of Edition 2024 Project Group

This is a reminder to the teams working on the 2024 Edition that implementation work should be finished by the end of May. If you have any questions, please let us know on the #edition Zulip stream.

What we are tracking for the Edition

The following is a list of changes we are tracking for inclusion in the Edition. This list is not final, and may change in the future.

  • Change the unsafe_op_in_unsafe_fn lint to be warn-by-default. This is implemented, see docs.
  • Remove RustcEncodable & RustcDecodable from the 2024 prelude. This is waiting for the implementation to be approved, and for automatic migration. See #116016.
  • Include Future and IntoFuture in the 2024 prelude. This is implemented, and waiting for automatic migration support. See docs and #121042.
  • Reserve the gen keyword. This is waiting for final approval, and the implementation review. See RFC #3513.
  • RPIT lifetime capture. This is partially implemented, but is waiting on final design for precise capturing. See RFC #3498 and #117587.
  • Macro matcher fragment specifier policy. This is a policy change and does not have an implementation. See RFC #3531.
  • Disallow references to static mut. This is implemented, though there is uncertainty about how migration should work, how to communicate to users how to update their code, and whether or not this should cover hidden references. See docs and #114447.
  • New range types. This is waiting on the design considerations for migration. See RFC #3550.
  • Cargo: Remove implicit features. Development of this is underway. See RFC #3491.
  • Public/private dependencies. This is partially implemented, though there are some changes needed on the rules for determining visibility. See RFC #3516.
  • Rustfmt: Enable overflow_delimited_expr by default. This is not yet implemented. See #114764.

What is an Edition?

Editions are a mechanism to introduce changes that would otherwise be backwards incompatible while still retaining compatibility with older releases. Editions are opt-in and designed to allow projects on different Editions to remain compatible with one another. More information may be found in the Edition Guide.