Skip to content
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

Rust 2024 Edition #117

Open
nikomatsakis opened this issue Jul 22, 2024 · 5 comments
Open

Rust 2024 Edition #117

nikomatsakis opened this issue Jul 22, 2024 · 5 comments

Comments

@nikomatsakis
Copy link
Contributor

nikomatsakis commented Jul 22, 2024

Metadata
Owner(s) @traviscross
Team(s) lang, leadership-council, types
Goal document 2024h2/Rust-2024-Edition
Tracked issues rust-lang/rust label:A-edition-2024 label:C-tracking-issue -label:t-libs

Summary

Feature complete status for Rust 2024, with final release to occur in early 2025.

For details, see the tracking issue:

@nikomatsakis
Copy link
Contributor Author

This issue is intended for status updates only.

For general questions or comments, please contact the owner(s) directly.

@traviscross
Copy link
Contributor

The edition is on track to ship on schedule:

Date Version Edition stage
2024-09-05 Release v1.81 Checking off items...
2024-10-11 Branch v1.83 Go / no go on all items
2024-10-17 Release v1.82 Rust 2024 nightly beta
2024-11-22 Branch v1.84 Prepare to stabilize...
2024-11-28 Release v1.83 Stabilize Rust 2024 on master
2025-01-03 Branch v1.85 Cut Rust 2024 to beta
2025-01-09 Release v1.84 Announce Rust 2024 is pending!
2025-02-20 Release v1.85 Release Rust 2024

All lang priority items have landed and are fully ready for Rust 2024:

Nine other items are fully ready for Rust 2024:

There are currently 10 items that are close to ready, often with only documentation remaining.

There are currently 6 items that still need implementation work. Some of these are rather close to ready also.

There will be items that are currently tracked for the edition that will not make it. That's OK, and we still plan to ship the edition on time and without those items.

Overall, the edition work is going well. We have good communication with each of the item owners and with the relevant teams.

For more details, see the tracking issue for the Rust 2024 edition:

@traviscross
Copy link
Contributor

The Rust 2024 edition is on track to ship on schedule:

Date Version Edition stage
2024-11-22 Branch v1.84 Prepare to stabilize...
2024-11-28 Release v1.83 Stabilize Rust 2024 on master
2025-01-03 Branch v1.85 Cut Rust 2024 to beta
2025-01-09 Release v1.84 Announce Rust 2024 is pending!
2025-02-20 Release v1.85 Release Rust 2024

Our motivating priorities in managing this edition have been to:

  • Make this edition a success.
  • Do so without requiring heroics from anyone.

We're quite happy with how things have turned out. This is going to be big edition -- the largest since Rust 2015. There are a lot of new and exciting things in this edition. Moreover, these changes foreshadow and open the door to continuing work on the bright shiny future for Rust that we all want.

We've carefully managed all aspects of the process to ensure that the many items included in the edition are fully up to our high standards. And while many people have put in substantial and great work to make this edition happen, we've put together Rust 2024 without requiring the kind of high-stress singular personal heroics that have often been required to ship past editions.

We're especially happy that we've been able to do this without cutting many items from the edition, especially late in the game. People end up putting in a lot of work to get these items ready. Cutting them tends to waste this work and often leads to burnout. So we worked hard to avoid that, and are pleased to have done so.

All in all, that's what we call a successful edition.

Let's now review what will be part of Rust 2024.

All lang priority items have landed and are fully ready for Rust 2024:

The other lang items to be included in the edition are:

There are three changes to the standard library that are tied to the new edition:

There are two Cargo items that will be part of Rust 2024:

There is one exciting item for rustdoc that will greatly speed up doctests in Rust 2024:

This will be the first Rust edition that brings with it a new style edition to be applied by rustfmt. That new style edition includes:

At this point, setting aside rustfmt (where some work remains ongoing), there is only one remaining item where we're waiting for a PR to land in nightly (rust-lang/rust#131984). Once that happens, we'll begin the final set of quality assurance crater runs for the edition items and their migrations. When those are complete and triaged, which we expect to happen in the next two weeks, we'll announce the nightly beta for Rust 2024 and will solicit wider testing.

Rust 2024 will be stabilized in nightly in late November, and then will be cut to beta on 2025-01-03.

On 2025-02-20, we'll be releasing Rust 2024.

For more details about the edition items for Rust 2024, see the Edition Guide.

@traviscross
Copy link
Contributor

On Rust 2024, all is proceeding apace according to the last update. We've done an initial QA crater run. On the basis of analyzing that, many issues have been filed, and much work has been done by many people to resolve those. We'll be issuing a call for wider nightly testing of the edition soon.

@nikomatsakis
Copy link
Contributor Author

Quoting the blog post from @traviscross and @eholk announcing a Call for Testing for Rust 2024:


We've been hard at work on Rust 2024. We're thrilled about how it has turned out. It's going to be the largest edition since Rust 2015. It has a great many improvements that make the language more consistent and ergonomic, that further upon our relentless commitment to safety, and that will open the door to long-awaited features such as gen blocks, let chains, and the never (!) type. For more on the changes, see the nightly Edition Guide.

As planned, we recently merged the feature-complete Rust 2024 edition to the release train for Rust 1.85. It has now entered nightly beta1.

You can help right now to make this edition a success by testing Rust 2024 on your own projects using nightly Rust. Migrating your projects to the new edition is straightforward and mostly automated. Here's how:

  1. Install the most recent nightly with rustup update nightly.
  2. In your project, run cargo +nightly fix --edition.
  3. Edit Cargo.toml and change the edition field to say edition = "2024" and, if you have a rust-version specified, set rust-version = "1.85".
  4. Run cargo +nightly check to verify your project now works in the new edition.
  5. Run some tests, and try out the new features!

(More details on how to migrate can be found here and within each of the chapters describing the changes in Rust 2024.)

If you encounter any problems or see areas where we could make the experience better, tell us about it by filing an issue.

Coming next

Rust 2024 will enter the beta channel on 2025-01-09, and will be released to stable Rust with Rust 1.85 on 2025-02-20.

Footnotes

  1. That is, it's still in nightly (not in the beta channel), but the edition items are frozen in a way similar to it being in the beta channel, and as with any beta, we'd like wide testing.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants