From 65331f9afd0bfe37d49ef8c885881b2d9aa61340 Mon Sep 17 00:00:00 2001 From: Aaron Turon Date: Mon, 26 Jun 2017 14:02:42 -0700 Subject: [PATCH 01/16] RFC: Rust epochs --- resources/epochs.png | Bin 0 -> 96427 bytes text/0000-epochs.md | 492 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 492 insertions(+) create mode 100644 resources/epochs.png create mode 100644 text/0000-epochs.md diff --git a/resources/epochs.png b/resources/epochs.png new file mode 100644 index 0000000000000000000000000000000000000000..46993f5d027023695ad399ccf3d05389ef994b80 GIT binary patch literal 96427 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 Q!Jn&_bySNl-umPJ0f;*Z0ssI2 literal 0 HcmV?d00001 diff --git a/text/0000-epochs.md b/text/0000-epochs.md new file mode 100644 index 00000000000..a76ca3a81c5 --- /dev/null +++ b/text/0000-epochs.md @@ -0,0 +1,492 @@ +- Feature Name: N/A +- Start Date: 2017-06-26 +- RFC PR: (leave this empty) +- Rust Issue: (leave this empty) + +# Summary +[summary]: #summary + +There has been a long-standing question around Rust's evolution: will there ever +be a Rust 2.0, in the semver sense? + +This RFC gives the answer: certainly not in the foreseeable future, and probably +not ever. + +Instead, this RFC proposes *epochs*, a mechanism for language evolution without +breakage, which fits neatly into Rust's existing train and release channel +process. It's an attempt to provide the next stage of our core principle of +[stability without stagnation]. + +[stability without stagnation]: https://blog.rust-lang.org/2014/10/30/Stability.html + +# Motivation +[motivation]: #motivation + +## The status quo + +Today, Rust evolution happens steadily through a combination of several mechanisms: + +- **The nightly/stable release channel split**. Features that are still under + development are usable *only* on the nightly channel, preventing *de facto* + lock-in and thus leaving us free to iterate in ways that involve code breakage + before "stabilizing" the feature. + +- **The rapid (six week) release process**. Frequent releases on the stable + channel allow features to stabilize as they become ready, rather than as part + of a massive push toward an infrequent "feature-based" release. Consequently, + Rust evolves in steady, small increments. + +- **Deprecation**. Compiler support for deprecating language features and + library APIs makes it possible to nudge people toward newer idioms without + breaking existing code. + +All told, the tools work together quite nicely to allow Rust to change and grow +over time, while keeping old code working (with only occasional, very minor +adjustments to account for things like changes to type inference.) + +## What's missing + +So, what's the problem? + +There are two desires that the current process doesn't have a good story for: + +- **Changes that may require some breakage in corner cases**. The simplest + example is adding new keywords: the current implementation of `catch` uses the + syntax `do catch` because `catch` is not a keyword, and cannot be added even + as a contextual keyword without potential breakage. There are plenty of + examples of "superficial" breakage like this that do not fit into the current + evolution mechanisms. + +- **Lack of clear "chapters" in the evolutionary story**. A downside to rapid + releases is that, while the constant small changes eventually add up to large + shifts in idioms, there's not an agreed upon line of demarcation between these + major shifts. That is, we don't have a coherent way to talk about these + shifts, nor to explain the "big steps" Rust is taking when we talk to those + outside the Rust community. If you think about the combination of `?` syntax, + ATCs, `impl Trait`, and specialization all becoming available, for example, + it's very helpful to have an umbrella moniker like "Rust 2018" to refer to + that encompasses them all, and the new idioms they lead to. + +At the same time, the commitment to stability and rapid releases has been an +incredible boon for Rust, and we don't want to give up those existing mechanisms. + +This RFC proposes *epochs* as a mechanism we can layer on top of our existing +release process, keeping its guarantees while addressing its gaps. + +# Detailed design +[design]: #detailed-design + +## The basic idea + +At heart, the epoch idea is pretty simple: + +- An *epoch* represents a major shift in Rust features and idioms. + +- Epochs are named by the year in which they are introduced, but we do not + expect a new epoch every year. (At the outset, one epoch every two years is + more likely; see the next section for more.) + +- Each **crate** declares an epoch in its `Cargo.toml` (or, if not, is assumed + to have epoch 2015, coinciding with Rust 1.0): `epoch = "2018"`. Thus, new + epochs are *opt in*, and the dependencies of a crate may use older or newer + epochs than the crate itself. + +To be crystal clear: Rust compilers are expected to support multiple epochs, and +a crate dependency graph may involve several different epochs +simultaneously. Thus, **epochs do not split the ecosystem nor do they break +existing code**. + +Furthermore: + +- Prior to a new epoch, the current epoch will gain a set of deprecations over time. +- When cutting a new epoch, existing deprecations may turn into hard errors, and + the epoch may take advantage of that fact to repurpose existing usage, + e.g. introducing a new keyword. **This is the only kind of change a new epoch + can make**. + +Code that compiles without warnings on the previous epoch (under the latest +compiler release) will compile without warnings or errors on the next epoch +(modulo +the +[usual caveats](https://github.com/rust-lang/rfcs/blob/master/text/1122-language-semver.md) about +type inference changes and so on). Alternatively, you can continue working with +the previous epoch on new compiler releases indefinitely, but your code may not +have access to new features that require new keywords and the like. + +## Epoch timing, stabilizations, and the roadmap process + +While this RFC will focus largely on the mechanics around deprecation, a key +point is that epochs also give a *name* to large idiom shifts, recognizing that +a significant, coherent set of new features have stabilized and should change +the way you write code and construct APIs. + +The proposal is much akin to C++ standards, which are tied to particular years +(e.g. C++11, C++14). Each of these versions represents major enhancements to the +language and changes to idioms. Compilers generally take flags to let you select +*which* standard you wish to compile against. Many other languages (like Java) +take a similar approach. + +To some degree, you can understand these as "marketing" releases; they bundle +together a set of changes into a coherent package that's easy to talk about. But +the benefits go beyond marketing: it becomes much easier, on a blog post, to +give context about *which era* of the language you're using without specifying a +particular compiler version. + +In the Rust world, we want to layer this kind of narrative on top of our +existing release and roadmap process: + +- As today, each year has a [roadmap setting out that year's vision]. Some + years---like 2017---the roadmap is mostly about laying down major new + groundwork. Some years, however, they roadmap explicitly proposes to declare a + new epoch during the year. + +- Epoch years are focused primarily on *stabilization* and *polish*. We are + trying to put together and ship a coherent product, complete with + documentation and a well-aligned ecosystem. These goals will provide a + rallying point for the whole community, to put our best foot forward as we + publish a significant new version of the project. + +[roadmap laying out that year's vision]: https://github.com/rust-lang/rfcs/pull/1728 + +You can see this process graphically below: + + + +The diagram shows every other compiler release due to space constraints. The +releases in red, bold text represent the compiler supporting a new epoch. + +Vitally, the rapid release process---including stabilization---continues just as +today. In particular, **epoch releases are *not* feature-based**; there is no +commitment to ship a particular set of features with the first compiler version +supporting a new epoch, and features that miss that original release will +continually have additional chances to stabilize afterward, still within that +epoch. On the other hand, when we declare an epoch year in the roadmap, we will +likely have a pretty decent chance of what's *likely* to ship as stable in the +first epoch release. + +### Epoch previews + +To make this work, we need one additional concept: epoch *previews*, denoted in +the figure as green, italic compiler releases. + +The problem is that for changes that rely on a new epoch, such as introducing a +new keyword, we cannot stabilize them within the existing epoch as-is; that +would be a breaking change. On the other hand, we *want* to stabilize them as +they become ready, rather than tying all of the stabilizations to a high-stakes +epoch release. + +We thread the needle by providing an *epoch preview* at some point prior to the +new epoch being shipped: `epoch = "2018-preview"`. This preview includes *all* +of the hard errors that will be introduced in the new epoch, but not yet all of +the stabilizations. It is usable from the stable channel. + +There are a few reasons to provide such a preview: + +- Most importantly, it clears the way to shipping features for the next epoch on + the stable channel as they become ready, even if they require some existing + usages to become errors. Again, keyword introduction is a simple example: the + `2018-preview` epoch can begin by making it a hard error to use `catch` as an + identifier (which is allowed today), and then later stabilizing the new + `catch` feature when it is ready. By "locking in" the hard errors up front, + however, **the preview of the epoch is guaranteed to be stable**: once code + compiles on the preview epoch, it will continue to do so as further features + stabilize. + +- The preview epoch also gives a clear picture of exactly what deprecations will + become errors in the next epoch, providing a nice way to future-proof your + code for upgrading to the epoch when available. + +Putting this all together, in an "epoch year" the roadmap will lay out an +expected set of deprecations-to-become-errors and potential features; early in +the year, an epoch preview will be released which makes all the slated +deprecations into errors. As the year progresses, features will continue +stabilize but some may only be available by opting into the preview epoch (since +they rely on e.g. new keywords). Finally, when we're ready to ship the full new +product, we enable the new epoch and deprecate the preview version (which will +behave identically to it). + +There are some alternative ways to achieve similar ends, but with significant +downsides; these are explored in the Alternatives section. + +## Constraints on epoch changes + +We have already constrained epochal changes to essentially removing deprecations +(and thus making way for new features). But we want to further constrain them, +for two reasons: + +- **Limiting technical debt**. The compiler retains compatibility for old + epochs, and thus must have distinct "modes" for dealing with them. We need to + strongly limit the amount and complexity of code needed for these modes, or + the compiler will become very difficult to maintain. + +- **Limiting deep conceptual changes**. Just as we want to keep the compiler + maintainable, so too do we want to keep the conceptual model sustainable. That + is, if we make truly radical changes in a new epoch, it will be very difficult + for people to reason about code involving different epochs, or to remember the + precise differences. + +As such, the RFC proposes to limit epochal changes to be "superficial", +i.e. occurring purely in the early front-end stages of the compiler. More +concretely: + +- We identify "core Rust" as being, roughly, MIR and the core trait system. + - Over time, we'll want to make this definition more precise, but this is best + done in an iterative fashion rather than specified completely up front. +- Epochs can only change the front-end translation into core Rust. + +Hence, **the compiler supports only a single version of core Rust**; all the +"epoch modes" boil down to keeping around multiple desugarings into this core +Rust, which greatly limits the complexity and technical debt involved. Similar, +core Rust encompasses the core *conceptual* model of the language, and this +constraint guarantees that, even when working with multiple epochs, those core +concepts remain fixed. + +Incidentally, these constraints also mean that epochal changes should be +amenable to a `rustfix` tool that automatically, and perfectly, upgrades code to +a new epoch. It's an open question whether we want to *require* such a tool +before introducing a new epoch. + +### What epochs can do + +Given those basics, let's look in more detail at a few examples of the kinds of +changes epochs enable. + +#### Example: new keywords + +We've taken as a running example introducing new keywords, which sometimes +cannot be done backwards compatibly (because a contextual keyword isn't +possible). Let's see how this works out for the case of `catch`. + +- First, we deprecate uses of `catch` as identifiers, preparing it to become a new keyword. +- We may, as today, implement the new `catch` feature using a temporary syntax + for nightly (like `do catch`). +- When the next epoch preview is released, opting into it makes `catch` into a + keyword, regardless of whether the `catch` feature has been implemented. +- The `catch` syntax can be hooked into an implementation usable on nightly with + the preview epoch. +- When we're confident in the `catch` feature on nightly, we can stabilize it + *onto the preview epoch*. It cannot be stabilized onto the current epoch, + since it requires a new keyword. +- At some point, the new epoch is fully shipped, removing the need for the preview epoch. +- `catch` is now a part of Rust. + +#### Example: repurposing corner cases + +A similar story plays out for more complex modifications that repurpose existing +usages. For example, some suggested module system improvements (not yet in RFC) +deduce the module hierarchy from the filesystem. But there is a corner case +today of providing both a `lib.rs` and a `bin.rs` directly at the top level, +which doesn't play well with the new feature. + +Using epochs, we can deprecate such usage (in favor of the `bin` directory), +then make it an error on the preview epoch. The module system change could then +be made available (and ultimately stabilized) within the preview epoch, before +shipping on the next epoch. + +#### Example: repurposing syntax + +A more radical example: changing the syntax for trait objects and `impl +Trait`. In particular, we have +sometimes [discussed](https://github.com/rust-lang/rfcs/pull/1603): + +- Using `dyn Trait` for trait objects (e.g. `Box>`) +- Repurposing "bare `Trait` to use instead of `impl Trait`, so you can write `fn + foo() -> Iterator` instead of `fn foo -> impl Iterator` + +Suppose we wanted to carry out such a change. We could do it over multiple steps: + +- First, introduce and stabilize `dyn Trait`. +- Deprecate bare `Trait` syntax in favor of `dyn Trait`. +- In a preview epoch, make it an error to use bare `Trait` syntax. +- Ship the new epoch, and wait until bare `Trait` syntax is obscure. +- Re-introduce bare `Trait` syntax, stabilize it, and deprecate `impl Trait` in + favor of it. + +Of course, this RFC isn't suggesting that such a course of action is a *good* +one, just that it is *possible* to do without breakage. + +#### Example: type inference changes + +There are a number of details about type inference that seem suboptimal: + +- Currently multi-parameter traits like `AsRef` will infer the value of one + parameter on the basis of the other. We would at least like an opt-out, but + employing it for `AsRef` is backwards-incompatible. +- Coercions don’t always trigger when we wish they would, but altering the rules + may cause other programs to stop compiling. +- In trait selection, where-clauses take precedence over impls; changing this is backwards-incompatible. + +We may or may not be able to change these details on the existing epoch. With +enough effort, we could probably deprecate cases where type inference rules +might change and request explicit type annotations, and then—in the new +epoch—tweak those rules. + +### What epochs can't do + +There are also changes that epochs don't help with, due to the constraints we +impose. These limitations are extremely important for keeping the compiler +maintainable, the language understandable, and the ecosystem compatible. + +#### Example: changes to coherence rules + +Trait coherence rules, like the "orphan" rule, provide a kind of protocol about +which crates can provide which `impl`s. It's not possible to change protocol +incompatibly, because existing code will assume the current protocol and provide +impls accordingly, and there's no way to work around that fact via deprecation. + +More generally, this means that epochs can only be used to make changes to the +language that are applicable *crate-locally*; they cannot impose new +requirements or semantics on external crates, since we want to retain +compatibility with the existing ecosystem. + +#### Example: `Error` trait downcasting + +See [rust-lang/rust#35943](https://github.com/mozilla/rust/issues/35943). Due to +a silly oversight, you can’t currently downcast the “cause” of an error to +introspect what it is. We can’t make the trait have stricter requirements; it +would break existing impls. And there's no way to do so only in a newer epoch, +because we must be compatible with the older one, meaning that we cannot rely on +downcasting. + +This is essentially another example of a non-crate-local change. + +## The full mechanics + +We'll wrap up with the full details of the mechanisms at play. + +- `rustc` will take a new flag, `--epoch`, which can specify the epoch to + use. If this flag is left off, epoch 2015 is assumed. + - This flag should not affect the behavior of the core trait system or passes at the MIR level. +- `Cargo.toml` can include an `epoch` value, which is used to pass to `rustc`. +- `cargo new` will produce a `Cargo.toml` with the latest `epoch` value, + including `-preview` epochs when applicable. + +# How We Teach This +[how-we-teach-this]: #how-we-teach-this + +First and foremost, if we accept this RFC, we should publicize the plan widely, +including on the main Rust blog, in a style simlar to [previous posts] about our +release policy. This will require extremely careful messaging, to make clear +that epochs are *not* about breaking Rust code, but instead about providing +compatibility indefinitely while allowing for more forms of evolution than +today. + +In addition, the book should talk about the basics from a user perspective, +including: + +- The fact that, if you do nothing, your code should continue to compile (with + minimum hassle) when upgrading the compiler. +- If you resolve deprecations as they occur, moving to a new epoch should also + require minimum hassle. +- Best practices about upgrading epochs (TBD). + +[previous posts]: https://blog.rust-lang.org/2014/10/30/Stability.html + +# Drawbacks +[drawbacks]: #drawbacks + +There are several drawbacks to this proposal: + +- Most importantly, it risks muddying our story about stability, which we've + worked very hard to message clearly. + + - To mitigate this, we need to put front and center that, **if you do nothing, + updating to a new `rustc` should not be a hassle**, and **staying on an old + epoch doesn't cut you off from the ecosystem**. + +- It adds a degree of complication to an evolution story that is already + somewhat complex (with release channels and rapid releases). + + - On the other hand, epoch releases can provide greater clarity about major + steps in Rust evolution, for those who are not following development + closely. + +- New epochs can invalidate existing blog posts and documentation, a problem we + suffered a lot around the 1.0 release + + - However, this situation already obtains in the sense of changing idioms; a + blog post using `try!` these days already feels like it's using "old + Rust". Notably, though, the code still compiles on current Rust. + + - A saving grace is that, with epochs, it's much more likely that a post will + mention what epoch is being used, for context. Moreover, with sufficient + work on error messages, it seems plausible to detect that code was intended + for an earlier epoch and explain the situation. + +These downsides are most problematic in cases that involve "breakage" if they +were done without opt in. They indicate that, even if we do adopt epochs, we +should use them judiciously. + +# Alternatives +[alternatives]: #alternatives + +## Within the basic epoch structure + +Sticking with the basic idea of epochs, there are a couple alternative setups, +that avoid "preview" epochs. + +- Rather than locking in a set of deprecations in a preview epoch, we could + provide "stable channel feature gates", allowing users to opt in to features + of the next epoch in a fine-grained way, which may introduce new errors. + When the new epoch is released, one would then upgrade to it and remove all of the gates. + + - The main downside is lack of clarity about what the current "stable Rust" + is; each combination of gates gives you a slightly different language. While + this fine-grained variation is acceptable for nightly, since it's meant for + experimentation, it cuts against some of the overall goals of this proposal + to introduce such fragmentation on the stable channel. + +- We could stabilize features using undesirable syntax at first, making way for + better syntax only when the new epoch is released, then deprecate the "bad" + syntax in favor of the "good" syntax. + + - For `catch`, this would look like: + - Stabilize `do catch`. + - Deprecate `catch` as an identifier. + - Ship new epoch, which makes `catch` a keyword. + - Stabilize `catch` as a syntax for the `catch` feature, and deprecate `do catch` in favor of it. + - This approach involves significantly more churn than the one proposed in the RFC. + +- Finally, we could just wait to stabilize features like `catch` until the + moment the epoch is released. + + - This approach seems likely to introduce all the downsides of "feature-based" + releases, making the epoch release extremely high stakes, and preventing + usage of "ready to go" feature on the stable channel until the epoch is + shipped. + +## Alternatives to epochs + +The larger alternatives include, of course, not trying to solve the problems +laid out in the motivation, and instead finding creative alternatives. + +- For cases like `catch` that require a new keyword, it's not clear how to do +this without ending up with suboptimal syntax. + +The other main alternative is to issue major releases in the semver sense: Rust +2.0. This strategy could potentially be coupled with a `rustfix`, depending on +what kinds of changes we want to allow. Downsides: + +- Lack of clarity around ecosystem compatibility. If we allow both 1.0 and 2.0 + crates to interoperate, we arrive at something like this RFC. If we don't, we + risk splitting the ecosystem, which is extremely dangerous. + +- Likely significant blowback based on abandoning stability as a core principle + of Rust. Even if we provide a perfect `rustfix`, the message is significantly muddied. + +- Much greater temptation to make sweeping changes, and continuous litigation + over what those changes should be. + +# Unresolved questions +[unresolved]: #unresolved-questions + +- It's not clear what the story should be for the books and other + documentation. Should we gate shipping a new epoch on having a fully updated + book? The preview epoch---and the fact that everything is shipped on stable + prior to releasing the epoch---would make that plausible. + +- Do we want to require a `rustfix` for all epoch changes? + +- Will we ever consider dropping support for very old epochs? Given the + constraints in this RFC, it seems unlikely to ever be worth it. From eecde9cbd17b689dd65cf8e59c8d185760eada25 Mon Sep 17 00:00:00 2001 From: Aaron Turon Date: Mon, 26 Jun 2017 16:35:52 -0700 Subject: [PATCH 02/16] Expand summary --- text/0000-epochs.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/text/0000-epochs.md b/text/0000-epochs.md index a76ca3a81c5..84e31976497 100644 --- a/text/0000-epochs.md +++ b/text/0000-epochs.md @@ -15,7 +15,15 @@ not ever. Instead, this RFC proposes *epochs*, a mechanism for language evolution without breakage, which fits neatly into Rust's existing train and release channel process. It's an attempt to provide the next stage of our core principle of -[stability without stagnation]. +[stability without stagnation], inspired in part by similar mechanisms in +languages like C++ and Java. + +With epochs, it becomes possible to do things like introduce new keywords, +without breaking existing code or splitting the ecosystem. Each crate specifies +the epoch it fits within (a bit like "C++11" or "C++14"), and the compiler can +cope with multiple epochs being used throughout a dependency graph. Thus, we +retain our stability guarantees, while making it possible to evolve the language +in some new ways. [stability without stagnation]: https://blog.rust-lang.org/2014/10/30/Stability.html From d3a0dd6d54ec8eb3894b39ccb0cb9b72ea228af9 Mon Sep 17 00:00:00 2001 From: Aaron Turon Date: Mon, 26 Jun 2017 16:38:58 -0700 Subject: [PATCH 03/16] Strengthen summary --- text/0000-epochs.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/text/0000-epochs.md b/text/0000-epochs.md index 84e31976497..f45b0e16fe0 100644 --- a/text/0000-epochs.md +++ b/text/0000-epochs.md @@ -22,8 +22,9 @@ With epochs, it becomes possible to do things like introduce new keywords, without breaking existing code or splitting the ecosystem. Each crate specifies the epoch it fits within (a bit like "C++11" or "C++14"), and the compiler can cope with multiple epochs being used throughout a dependency graph. Thus, we -retain our stability guarantees, while making it possible to evolve the language -in some new ways. +continue to guarantee that your code will always continue to compile on the +latest stable release (modulo the [usual caveats]), while making it possible to +evolve the language in some new ways. [stability without stagnation]: https://blog.rust-lang.org/2014/10/30/Stability.html @@ -114,12 +115,12 @@ Furthermore: Code that compiles without warnings on the previous epoch (under the latest compiler release) will compile without warnings or errors on the next epoch -(modulo -the -[usual caveats](https://github.com/rust-lang/rfcs/blob/master/text/1122-language-semver.md) about -type inference changes and so on). Alternatively, you can continue working with -the previous epoch on new compiler releases indefinitely, but your code may not -have access to new features that require new keywords and the like. +(modulo the [usual caveats] about type inference changes and so +on). Alternatively, you can continue working with the previous epoch on new +compiler releases indefinitely, but your code may not have access to new +features that require new keywords and the like. + +[usual caveats]: https://github.com/rust-lang/rfcs/blob/master/text/1122-language-semver.md ## Epoch timing, stabilizations, and the roadmap process From 66b0d41bf95177d3908faca441338644a51f098f Mon Sep 17 00:00:00 2001 From: Aaron Turon Date: Mon, 26 Jun 2017 16:44:48 -0700 Subject: [PATCH 04/16] More approachable wording --- text/0000-epochs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text/0000-epochs.md b/text/0000-epochs.md index f45b0e16fe0..aec6b155157 100644 --- a/text/0000-epochs.md +++ b/text/0000-epochs.md @@ -87,7 +87,7 @@ release process, keeping its guarantees while addressing its gaps. ## The basic idea -At heart, the epoch idea is pretty simple: +Here's the core idea: - An *epoch* represents a major shift in Rust features and idioms. From 41d8c18c60ea45a620ff10e4ea6cda6a88282562 Mon Sep 17 00:00:00 2001 From: Aaron Turon Date: Mon, 26 Jun 2017 16:47:03 -0700 Subject: [PATCH 05/16] Remove some emphasis --- text/0000-epochs.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/text/0000-epochs.md b/text/0000-epochs.md index aec6b155157..fac81c81f98 100644 --- a/text/0000-epochs.md +++ b/text/0000-epochs.md @@ -110,8 +110,8 @@ Furthermore: - Prior to a new epoch, the current epoch will gain a set of deprecations over time. - When cutting a new epoch, existing deprecations may turn into hard errors, and the epoch may take advantage of that fact to repurpose existing usage, - e.g. introducing a new keyword. **This is the only kind of change a new epoch - can make**. + e.g. introducing a new keyword. This is the only kind of change a new epoch + can make. Code that compiles without warnings on the previous epoch (under the latest compiler release) will compile without warnings or errors on the next epoch From 3e097577a60042d3f60d10bdafa7f1840afc7ef3 Mon Sep 17 00:00:00 2001 From: Aaron Turon Date: Mon, 26 Jun 2017 16:48:49 -0700 Subject: [PATCH 06/16] Examples disclaimer --- text/0000-epochs.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/text/0000-epochs.md b/text/0000-epochs.md index fac81c81f98..e526b60b7d4 100644 --- a/text/0000-epochs.md +++ b/text/0000-epochs.md @@ -258,7 +258,8 @@ before introducing a new epoch. ### What epochs can do Given those basics, let's look in more detail at a few examples of the kinds of -changes epochs enable. +changes epochs enable. These are just examples---this RFC doesn't entail any +commitment to these language changes. #### Example: new keywords From 688ac4778e4335f49e45c96a44f1457be484bf65 Mon Sep 17 00:00:00 2001 From: Aaron Turon Date: Mon, 26 Jun 2017 17:11:50 -0700 Subject: [PATCH 07/16] Flesh out catch exampe more --- text/0000-epochs.md | 54 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/text/0000-epochs.md b/text/0000-epochs.md index e526b60b7d4..fbc426e0911 100644 --- a/text/0000-epochs.md +++ b/text/0000-epochs.md @@ -21,10 +21,10 @@ languages like C++ and Java. With epochs, it becomes possible to do things like introduce new keywords, without breaking existing code or splitting the ecosystem. Each crate specifies the epoch it fits within (a bit like "C++11" or "C++14"), and the compiler can -cope with multiple epochs being used throughout a dependency graph. Thus, we +cope with multiple epochs being used throughout a dependency graph. Thus we continue to guarantee that your code will always continue to compile on the latest stable release (modulo the [usual caveats]), while making it possible to -evolve the language in some new ways. +evolve the language in some new ways via explicit opt-in. [stability without stagnation]: https://blog.rust-lang.org/2014/10/30/Stability.html @@ -265,21 +265,61 @@ commitment to these language changes. We've taken as a running example introducing new keywords, which sometimes cannot be done backwards compatibly (because a contextual keyword isn't -possible). Let's see how this works out for the case of `catch`. +possible). Let's see how this works out for the case of `catch`, assuming that +we're currently in epoch 2015. - First, we deprecate uses of `catch` as identifiers, preparing it to become a new keyword. - We may, as today, implement the new `catch` feature using a temporary syntax for nightly (like `do catch`). -- When the next epoch preview is released, opting into it makes `catch` into a - keyword, regardless of whether the `catch` feature has been implemented. +- When epoch `2018-preview` is released, opting into it makes `catch` into a + keyword, regardless of whether the `catch` feature has been implemented. This + means that opting in may require some adjustment to your code. - The `catch` syntax can be hooked into an implementation usable on nightly with the preview epoch. - When we're confident in the `catch` feature on nightly, we can stabilize it - *onto the preview epoch*. It cannot be stabilized onto the current epoch, + *onto the stable channel for users opting into `2018-preview`*. It cannot be stabilized onto the epoch `2015`, since it requires a new keyword. -- At some point, the new epoch is fully shipped, removing the need for the preview epoch. +- At some point, epoch `2018` is fully shipped, meaning that `2018-preview` + becomes a deprecated alias for `2018`. - `catch` is now a part of Rust. +To make this even more concrete, let's imagine the following (aligned with the diagram above): + +| Rust version | Latest available epoch | Status of `catch` in epoch 2015 | Status of `catch` in latest epoch +| ------------ | ---------------------- | -- | -- | +| 1.15 | 2015 | Valid identifier | Valid identifier +| 1.21 | 2015 | Valid identifier; deprecated | Valid identifier; deprecated +| 1.23 | 2018-preview | Valid identifier; deprecated | Keyword +| 1.27 | 2018 | Valid identifier; deprecated | Keyword + +Now, suppose you have the following code: + +``` +Cargo.toml: + +epoch = "2015" +``` + +```rust +// main.rs: + +fn main() { + let catch = "gotcha"; + println!("{}", catch); +} +``` + +- This code will compile **as-is** on *all* Rust versions. On versions 1.21 and +above, it will yield a warning, saying that `catch` is deprecated as an +identifier. + +- On version 1.23, if you change `Cargo.toml` to use epoch `2018-preview`, the + code will fail to compile due to `catch` being a keyword. Similarly for epoch + `2018` on version 1.27. + +- However, if you leave it at epoch `2015`, you can upgrade to Rust 1.27 **and + use libraries that opt in to the `2018` epoch** with no problem. + #### Example: repurposing corner cases A similar story plays out for more complex modifications that repurpose existing From 61180682cc6ab5ed7794e72d7acc8562ece2c9dd Mon Sep 17 00:00:00 2001 From: Aaron Turon Date: Mon, 3 Jul 2017 15:03:33 -0700 Subject: [PATCH 08/16] Revisions per Niko --- resources/epochs.png | Bin 96427 -> 133486 bytes text/0000-epochs.md | 73 ++++++++++++++++++++++--------------------- 2 files changed, 37 insertions(+), 36 deletions(-) diff --git a/resources/epochs.png b/resources/epochs.png index 46993f5d027023695ad399ccf3d05389ef994b80..d45c43a5860b8054d177049e4056a097ed1eac35 100644 GIT binary patch literal 133486 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�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 H*MI#FGQMFY literal 96427 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 Q!Jn&_bySNl-umPJ0f;*Z0ssI2 diff --git a/text/0000-epochs.md b/text/0000-epochs.md index fbc426e0911..48329a9adab 100644 --- a/text/0000-epochs.md +++ b/text/0000-epochs.md @@ -7,7 +7,7 @@ [summary]: #summary There has been a long-standing question around Rust's evolution: will there ever -be a Rust 2.0, in the semver sense? +be a Rust 2.0 in the semver sense? This RFC gives the answer: certainly not in the foreseeable future, and probably not ever. @@ -18,13 +18,13 @@ process. It's an attempt to provide the next stage of our core principle of [stability without stagnation], inspired in part by similar mechanisms in languages like C++ and Java. -With epochs, it becomes possible to do things like introduce new keywords, +With epochs, it becomes possible to do things like introduce new keywords without breaking existing code or splitting the ecosystem. Each crate specifies the epoch it fits within (a bit like "C++11" or "C++14"), and the compiler can cope with multiple epochs being used throughout a dependency graph. Thus we -continue to guarantee that your code will always continue to compile on the -latest stable release (modulo the [usual caveats]), while making it possible to -evolve the language in some new ways via explicit opt-in. +still guarantee that your code will keep compiling on the latest stable release +(modulo the [usual caveats]), while making it possible to evolve the language in +some new ways via explicit opt-in. [stability without stagnation]: https://blog.rust-lang.org/2014/10/30/Stability.html @@ -69,12 +69,12 @@ There are two desires that the current process doesn't have a good story for: - **Lack of clear "chapters" in the evolutionary story**. A downside to rapid releases is that, while the constant small changes eventually add up to large shifts in idioms, there's not an agreed upon line of demarcation between these - major shifts. That is, we don't have a coherent way to talk about these - shifts, nor to explain the "big steps" Rust is taking when we talk to those - outside the Rust community. If you think about the combination of `?` syntax, - ATCs, `impl Trait`, and specialization all becoming available, for example, - it's very helpful to have an umbrella moniker like "Rust 2018" to refer to - that encompasses them all, and the new idioms they lead to. + major shifts. That is, we don't have a simple way to talk about these shifts, + nor to explain the "big steps" Rust is taking when we talk to those outside + the Rust community. If you think about the combination of `?` syntax, ATCs, + `impl Trait`, and specialization all becoming available, for example, it's + helpful to have an umbrella moniker like "Rust 2018" to refer to that + encompasses them all, and the new idioms they lead to. At the same time, the commitment to stability and rapid releases has been an incredible boon for Rust, and we don't want to give up those existing mechanisms. @@ -87,13 +87,12 @@ release process, keeping its guarantees while addressing its gaps. ## The basic idea -Here's the core idea: +- An *epoch* represents a multi-year accumulation of features, improvements, and + idiom shifts for Rust. It covers the language, core libraries, core tooling, + and core documentation. -- An *epoch* represents a major shift in Rust features and idioms. - -- Epochs are named by the year in which they are introduced, but we do not - expect a new epoch every year. (At the outset, one epoch every two years is - more likely; see the next section for more.) +- Epochs are named by the year in which they are introduced, which we expect to + happen every two or three years. - Each **crate** declares an epoch in its `Cargo.toml` (or, if not, is assumed to have epoch 2015, coinciding with Rust 1.0): `epoch = "2018"`. Thus, new @@ -107,7 +106,7 @@ existing code**. Furthermore: -- Prior to a new epoch, the current epoch will gain a set of deprecations over time. +- Prior to a new epoch, the current epoch will gain deprecations over time. - When cutting a new epoch, existing deprecations may turn into hard errors, and the epoch may take advantage of that fact to repurpose existing usage, e.g. introducing a new keyword. This is the only kind of change a new epoch @@ -126,7 +125,7 @@ features that require new keywords and the like. While this RFC will focus largely on the mechanics around deprecation, a key point is that epochs also give a *name* to large idiom shifts, recognizing that -a significant, coherent set of new features have stabilized and should change +a significant set of new features have stabilized and should change the way you write code and construct APIs. The proposal is much akin to C++ standards, which are tied to particular years @@ -136,10 +135,10 @@ language and changes to idioms. Compilers generally take flags to let you select take a similar approach. To some degree, you can understand these as "marketing" releases; they bundle -together a set of changes into a coherent package that's easy to talk about. But -the benefits go beyond marketing: it becomes much easier, on a blog post, to -give context about *which era* of the language you're using without specifying a -particular compiler version. +together a set of changes into a (hopefully coherent) package that's easy to +talk about. But the benefits go beyond marketing: for example, it becomes much +easier for a blog post to give context about *which era* of the language you're +using without specifying a particular compiler version. In the Rust world, we want to layer this kind of narrative on top of our existing release and roadmap process: @@ -175,18 +174,19 @@ first epoch release. ### Epoch previews -To make this work, we need one additional concept: epoch *previews*, denoted in -the figure as green, italic compiler releases. +To provide the clarity discussed above, and to allow us to stabilize +improvements as they're ready, we'll introduce one more concept: epoch +*previews*, denoted in the figure as green, italic compiler releases. The problem is that for changes that rely on a new epoch, such as introducing a new keyword, we cannot stabilize them within the existing epoch as-is; that would be a breaking change. On the other hand, we *want* to stabilize them as they become ready, rather than tying all of the stabilizations to a high-stakes -epoch release. +epoch release. And finally, we want to bundle them all together under a new moniker. We thread the needle by providing an *epoch preview* at some point prior to the -new epoch being shipped: `epoch = "2018-preview"`. This preview includes *all* -of the hard errors that will be introduced in the new epoch, but not yet all of +new epoch being shipped: `epoch = "2015-next"`. This preview includes *all* +of the hard errors that will be introduced in the next epoch, but not yet all of the stabilizations. It is usable from the stable channel. There are a few reasons to provide such a preview: @@ -194,7 +194,7 @@ There are a few reasons to provide such a preview: - Most importantly, it clears the way to shipping features for the next epoch on the stable channel as they become ready, even if they require some existing usages to become errors. Again, keyword introduction is a simple example: the - `2018-preview` epoch can begin by making it a hard error to use `catch` as an + `2015-next` epoch can begin by making it a hard error to use `catch` as an identifier (which is allowed today), and then later stabilizing the new `catch` feature when it is ready. By "locking in" the hard errors up front, however, **the preview of the epoch is guaranteed to be stable**: once code @@ -212,7 +212,7 @@ deprecations into errors. As the year progresses, features will continue stabilize but some may only be available by opting into the preview epoch (since they rely on e.g. new keywords). Finally, when we're ready to ship the full new product, we enable the new epoch and deprecate the preview version (which will -behave identically to it). +just be an alias for it). There are some alternative ways to achieve similar ends, but with significant downsides; these are explored in the Alternatives section. @@ -271,15 +271,15 @@ we're currently in epoch 2015. - First, we deprecate uses of `catch` as identifiers, preparing it to become a new keyword. - We may, as today, implement the new `catch` feature using a temporary syntax for nightly (like `do catch`). -- When epoch `2018-preview` is released, opting into it makes `catch` into a +- When epoch `2015-next` is released, opting into it makes `catch` into a keyword, regardless of whether the `catch` feature has been implemented. This means that opting in may require some adjustment to your code. - The `catch` syntax can be hooked into an implementation usable on nightly with the preview epoch. - When we're confident in the `catch` feature on nightly, we can stabilize it - *onto the stable channel for users opting into `2018-preview`*. It cannot be stabilized onto the epoch `2015`, + *onto the stable channel for users opting into `2015-next`*. It cannot be stabilized onto the epoch `2015`, since it requires a new keyword. -- At some point, epoch `2018` is fully shipped, meaning that `2018-preview` +- At some point, epoch `2018` is fully shipped, meaning that `2015-next` becomes a deprecated alias for `2018`. - `catch` is now a part of Rust. @@ -289,7 +289,7 @@ To make this even more concrete, let's imagine the following (aligned with the d | ------------ | ---------------------- | -- | -- | | 1.15 | 2015 | Valid identifier | Valid identifier | 1.21 | 2015 | Valid identifier; deprecated | Valid identifier; deprecated -| 1.23 | 2018-preview | Valid identifier; deprecated | Keyword +| 1.23 | 2015-next | Valid identifier; deprecated | Keyword | 1.27 | 2018 | Valid identifier; deprecated | Keyword Now, suppose you have the following code: @@ -313,7 +313,7 @@ fn main() { above, it will yield a warning, saying that `catch` is deprecated as an identifier. -- On version 1.23, if you change `Cargo.toml` to use epoch `2018-preview`, the +- On version 1.23, if you change `Cargo.toml` to use epoch `2015-next`, the code will fail to compile due to `catch` being a keyword. Similarly for epoch `2018` on version 1.27. @@ -406,9 +406,10 @@ This is essentially another example of a non-crate-local change. We'll wrap up with the full details of the mechanisms at play. - `rustc` will take a new flag, `--epoch`, which can specify the epoch to - use. If this flag is left off, epoch 2015 is assumed. + use. This flag will default to the current epoch. - This flag should not affect the behavior of the core trait system or passes at the MIR level. - `Cargo.toml` can include an `epoch` value, which is used to pass to `rustc`. + - If left off, it will assume epoch 2015. - `cargo new` will produce a `Cargo.toml` with the latest `epoch` value, including `-preview` epochs when applicable. From 3a5f5b68cee9d229d21f0232a3ecafdc2b173cdb Mon Sep 17 00:00:00 2001 From: Aaron Turon Date: Mon, 3 Jul 2017 16:01:45 -0700 Subject: [PATCH 09/16] Move rustc behavior to unresolved questions --- text/0000-epochs.md | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/text/0000-epochs.md b/text/0000-epochs.md index 48329a9adab..1e65ab80771 100644 --- a/text/0000-epochs.md +++ b/text/0000-epochs.md @@ -6,25 +6,13 @@ # Summary [summary]: #summary -There has been a long-standing question around Rust's evolution: will there ever -be a Rust 2.0 in the semver sense? - -This RFC gives the answer: certainly not in the foreseeable future, and probably -not ever. - -Instead, this RFC proposes *epochs*, a mechanism for language evolution without -breakage, which fits neatly into Rust's existing train and release channel -process. It's an attempt to provide the next stage of our core principle of -[stability without stagnation], inspired in part by similar mechanisms in -languages like C++ and Java. - -With epochs, it becomes possible to do things like introduce new keywords -without breaking existing code or splitting the ecosystem. Each crate specifies -the epoch it fits within (a bit like "C++11" or "C++14"), and the compiler can -cope with multiple epochs being used throughout a dependency graph. Thus we -still guarantee that your code will keep compiling on the latest stable release -(modulo the [usual caveats]), while making it possible to evolve the language in -some new ways via explicit opt-in. +There has been a long-standing question around Rust's evolution: will there ever be a Rust 2.0 in the semver sense? + +This RFC gives the answer: certainly not in the foreseeable future, and probably not ever. + +Instead, this RFC proposes *epochs*, a mechanism for language evolution without breakage, which fits neatly into Rust's existing train and release channel process. It's an attempt to provide the next stage of our core principle of [stability without stagnation], inspired in part by similar mechanisms in languages like C++ and Java. + +With epochs, it becomes possible to do things like introduce new keywords without breaking existing code or splitting the ecosystem. Each crate specifies the epoch it fits within (a bit like "C++11" or "C++14"), and the compiler can cope with multiple epochs being used throughout a dependency graph. Thus we still guarantee that your code will keep compiling on the latest stable release (modulo the [usual caveats]), while making it possible to evolve the language in some new ways via explicit opt-in. [stability without stagnation]: https://blog.rust-lang.org/2014/10/30/Stability.html @@ -406,12 +394,12 @@ This is essentially another example of a non-crate-local change. We'll wrap up with the full details of the mechanisms at play. - `rustc` will take a new flag, `--epoch`, which can specify the epoch to - use. This flag will default to the current epoch. + use. This flag will default to epoch 2015. - This flag should not affect the behavior of the core trait system or passes at the MIR level. - `Cargo.toml` can include an `epoch` value, which is used to pass to `rustc`. - If left off, it will assume epoch 2015. - `cargo new` will produce a `Cargo.toml` with the latest `epoch` value, - including `-preview` epochs when applicable. + including preview epochs when applicable. # How We Teach This [how-we-teach-this]: #how-we-teach-this @@ -541,3 +529,5 @@ what kinds of changes we want to allow. Downsides: - Will we ever consider dropping support for very old epochs? Given the constraints in this RFC, it seems unlikely to ever be worth it. + +- Should `rustc` default to the latest epoch instead? From 283337eabc853fe511cc421b13adce48ef58d76b Mon Sep 17 00:00:00 2001 From: Aaron Turon Date: Mon, 3 Jul 2017 16:23:40 -0700 Subject: [PATCH 10/16] Clarify warning guarantee --- text/0000-epochs.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/text/0000-epochs.md b/text/0000-epochs.md index 1e65ab80771..12a9e3522b8 100644 --- a/text/0000-epochs.md +++ b/text/0000-epochs.md @@ -101,11 +101,11 @@ Furthermore: can make. Code that compiles without warnings on the previous epoch (under the latest -compiler release) will compile without warnings or errors on the next epoch -(modulo the [usual caveats] about type inference changes and so -on). Alternatively, you can continue working with the previous epoch on new -compiler releases indefinitely, but your code may not have access to new -features that require new keywords and the like. +compiler release) will compile without errors on the next epoch (modulo the +[usual caveats] about type inference changes and so on). Alternatively, you can +continue working with the previous epoch on new compiler releases indefinitely, +but your code may not have access to new features that require new keywords and +the like. [usual caveats]: https://github.com/rust-lang/rfcs/blob/master/text/1122-language-semver.md From ef002296c31b8ef1854d237dd92c26b0df5f4665 Mon Sep 17 00:00:00 2001 From: Aaron Turon Date: Mon, 31 Jul 2017 10:10:08 -0700 Subject: [PATCH 11/16] Change to 'checkpoint' naming, and make numerous clarifications --- resources/epochs.png | Bin 133486 -> 0 bytes text/0000-checkpoints.md | 551 +++++++++++++++++++++++++++++++++++++++ text/0000-epochs.md | 533 ------------------------------------- 3 files changed, 551 insertions(+), 533 deletions(-) delete mode 100644 resources/epochs.png create mode 100644 text/0000-checkpoints.md delete mode 100644 text/0000-epochs.md diff --git a/resources/epochs.png b/resources/epochs.png deleted file mode 100644 index d45c43a5860b8054d177049e4056a097ed1eac35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133486 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�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 H*MI#FGQMFY diff --git a/text/0000-checkpoints.md b/text/0000-checkpoints.md new file mode 100644 index 00000000000..eed22e4d930 --- /dev/null +++ b/text/0000-checkpoints.md @@ -0,0 +1,551 @@ +- Feature Name: N/A +- Start Date: 2017-06-26 +- RFC PR: (leave this empty) +- Rust Issue: (leave this empty) + +# Summary +[summary]: #summary + +Rust's ecosystem, tooling, documentation, and compiler are constantly improving. To make it easier to follow development, and to provide a clear, coherent "rallying point" for this work, this RFC proposes that we declare a *checkpoint* every two or three years. Checkpoints are designated by the year in which they occur, and represent a release in which several elements come together: + +- A significant, coherent set of new features and APIs have been stabilized since the previous checkpoint. +- Error messages and other important aspects of the user experience around these features are fully polished. +- Tooling (IDEs, rustfmt, Clippy, etc) has been updated to work properly with these new features. +- There is a guide to the new features, explaining why they're important and how they should influence the way you write Rust code. +- The book has been updated to cover the new features. + - Note that this is already [required](https://github.com/rust-lang/rfcs/pull/1636) prior to stabilization, but in general these additions are put in an appendix; updating the book itself requires *significant* work, because new features can change the book in deep and cross-cutting ways. We don't block stabilization on that. +- The standard library and other core ecosystem crates have been updated to use the new features as appropriate. +- A new edition of the Rust Cookbook has been prepared, providing an updated set of guidance for which crates to use for various tasks. + +Sometimes a feature we want to make available in a new checkpoint would require backwards-incompatible changes, like introducing a new keyword. In that case, the feature is only available by explicitly opting in to the new checkpoint. Existing code continues to compile, and crates can freely mix dependencies using different checkpoints. + +# Motivation +[motivation]: #motivation + +## The status quo + +Today, Rust evolution happens steadily through a combination of several mechanisms: + +- **The nightly/stable release channel split**. Features that are still under + development are usable *only* on the nightly channel, preventing *de facto* + lock-in and thus leaving us free to iterate in ways that involve code breakage + before "stabilizing" the feature. + +- **The rapid (six week) release process**. Frequent releases on the stable + channel allow features to stabilize as they become ready, rather than as part + of a massive push toward an infrequent "feature-based" release. Consequently, + Rust evolves in steady, small increments. + +- **Deprecation**. Compiler support for deprecating language features and + library APIs makes it possible to nudge people toward newer idioms without + breaking existing code. + +All told, the tools work together quite nicely to allow Rust to change and grow +over time, while keeping old code working (with only occasional, very minor +adjustments to account for things like changes to type inference.) + +## What's missing + +So, what's the problem? + +There are a few desires that the current process doesn't have a good story for: + +- **Lack of clear "chapters" in the evolutionary story**. A downside to rapid + releases is that, while the constant small changes eventually add up to large + shifts in idioms, there's not an agreed upon line of demarcation between these + major shifts. Nor is there a clear point at which tooling, books, and other + artifacts are all fully updated and in sync around a given set of + features. This is not a huge problem for those following Rust development + carefully (e.g., readers of this RFC!), but many users and potential users + don't. Providing greater clarity and coherence around the "chapters" of Rust + evolution will make it easier to provide an overall narrative arc, and to + refer easily to large sets of changes. + +- **Lack of community rallying points**. The six week release process tends to + make each individual release a somewhat ho hum affair. On the one hand, that's + the whole point--we want to avoid marathon marches toward huge, feature-based + releases, and instead ship things in increments as they become ready. But in + doing so, we lose an opportunity to, every so often, come together as an + entire community and produce a "major release" that is polished, coherent, and + meaningful in a way that each six week increment is not. The [roadmap process] + does provide some of this flavor, but it's hard to beat the power of working + together toward a point-in-time release. The challenge is doing so *without* + losing the benefits of our incremental working style. + +- **Changes that may require some breakage in corner cases**. The simplest + example is adding new keywords: the current implementation of `catch` uses the + syntax `do catch` because `catch` is not a keyword, and cannot be added even + as a contextual keyword without potential breakage. There are plenty of + examples of "superficial" breakage like this that do not fit well into the + current evolution mechanisms. + +[roadmap process]: https://github.com/rust-lang/rfcs/pull/1728 + +At the same time, the commitment to stability and rapid releases has been an +incredible boon for Rust, and we don't want to give up those existing mechanisms +or their benefits. + +This RFC proposes *checkpoint* as a mechanism we can layer on top of our existing +release process, keeping its guarantees while addressing its gaps. + +# Detailed design +[design]: #detailed-design + +## The basic idea + +To make it easier to follow Rust's evolution, and to provide a clear, coherent +"rallying point" for the community, the project declares a *checkpoint* every +two or three years. Checkpoints are designated by the year in which they occur, +and represent a release in which several elements come together: + +- A significant, coherent set of new features and APIs have been stabilized since the previous checkpoint. +- Error messages and other important aspects of the user experience around these features are fully polished. +- Tooling (IDEs, rustfmt, Clippy, etc) has been updated to work properly with these new features. +- There is a guide to the new features, explaining why they're important and how they should influence the way you write Rust code. +- The book has been updated to cover the new features. + - Note that this is already [required](https://github.com/rust-lang/rfcs/pull/1636) prior to stabilization, but in general these additions are put in an appendix; updating the book itself requires *significant* work, because new features can change the book in deep and cross-cutting ways. We don't block stabilization on that. +- The standard library and other core ecosystem crates have been updated to use the new features as appropriate. +- A new edition of the Rust Cookbook has been prepared, providing an updated set of guidance for which crates to use for various tasks. + +The precise list of elements going into a checkpoint is expected to evolve over +time, as the Rust project and ecosystem grow. + +Sometimes a feature we want to make available in a new checkpoint would require +backwards-incompatible changes, like introducing a new keyword. In that case, +the feature is only available by explicitly opting in to the new +checkpoint. Each **crate** can declare a checkpoint in its `Cargo.toml` like +`checkpoint = "2018"`; otherwise it is assumed to have checkpoint 2015, +coinciding with Rust 1.0. Thus, new checkpoints are *opt in*, and the +dependencies of a crate may use older or newer checkpoints than the crate +itself. + +To be crystal clear: Rust compilers must support *all* extant checkpoints, and +a crate dependency graph may involve several different checkpoints +simultaneously. Thus, **checkpoints do not split the ecosystem nor do they break +existing code**. + +Furthermore: + +- As with today, each new version of the compiler may gain stabilizations and deprecations. +- When opting in to a new checkpoint, existing deprecations may turn into hard + errors, and the compiler may take advantage of that fact to repurpose existing + usage, e.g. by introducing a new keyword. This is the only kind of change a + checkpoint opt-in can make. + +Thus, code that compiles without warnings on the previous checkpoint (under the latest +compiler release) will compile without errors on the next checkpoint (modulo the +[usual caveats] about type inference changes and so on). + +[usual caveats]: https://github.com/rust-lang/rfcs/blob/master/text/1122-language-semver.md + +Alternatively, you can continue working with the previous checkpoint on new +compiler releases indefinitely, but your code may not have access to new +features that require new keywords and the like. New features that *are* +backwards compatible, however, will be available on older checkpoints. + +## Checkpoint timing, stabilizations, and the roadmap process + +As mentioned above, we want to retain our rapid release model, in which new +features and other improvements are shipped on the stable release channel as +soon as they are ready. So, to be clear, **we do not hold features back until +the next checkpoint**. + +Rather, checkpoints, as their name suggests, represent a point of *global +coherence*, where documentation, tooling, the compiler, and core libraries are +all fully aligned on a new set of (already stabilized!) features and other +changes. This alignment can happen incrementally, but a checkpoint signals that +it *has* happened. + +At the same time, checkpoints serve as a rallying point for making sure this +alignment work gets done in a timely fashion--and helping set scope as +needed. To make this work, we use the roadmap process: + +- As today, each year has a [roadmap setting out that year's vision]. Some + years---like 2017---the roadmap is mostly about laying down major new + groundwork. Some years, however, they roadmap explicitly proposes to produce a + new checkpoint during the year. + +- Checkpoint years are focused primarily on *stabilization*, *polish*, and + *coherence*, rather than brand new ideas. We are trying to put together and + ship a coherent product, complete with documentation and a well-aligned + ecosystem. These goals will provide a rallying point for the whole community, + to put our best foot forward as we publish a significant new version of the + project. + +[roadmap laying out that year's vision]: https://github.com/rust-lang/rfcs/pull/1728 + +In short, checkpoints are striking a delicate balance: they're not a cutoff for +stabilization, which continues every six weeks, but they still provide a strong +impetus for coming together as a community and putting together a polished product. + +### The preview period + +There's an important tension around stabilization and checkpoints: + +- We want to enable new features, including those that require a checkpoint + opt-in, to be available on the stable channel as they become ready. + + - That means that we must enable some form of the opt in before the checkpoint + is fully ready to ship. + +- We want to retain our promise that code compiling on stable will continue to + do so with new versions of the compiler, with minimum hassle. + + - That means that, once *any* form of the opt in is shipped, it cannot introduce *new* hard errors. + +Thus, at some point within a checkpoint year, we will enable the opt-in on the +stable release channel, which must include *all* of the hard errors that will be +introduced in the next checkpoint, but not yet all of the stabilizations (or +other artifacts that go into the full checkpoint release). This is the *preview +period* for the checkpoint, which ends when a release is produced that +synchronizes all of the elements that go into a checkpoint and the checkpoint is +formally announced. + +## Constraints on opt-in changes + +We have already constrained checkpoint changes to essentially removing deprecations +(and thus making way for new features). But we want to further constrain them, +for two reasons: + +- **Limiting technical debt**. The compiler retains compatibility for old + checkpoints, and thus must have distinct "modes" for dealing with them. We need to + strongly limit the amount and complexity of code needed for these modes, or + the compiler will become very difficult to maintain. + +- **Limiting deep conceptual changes**. Just as we want to keep the compiler + maintainable, so too do we want to keep the conceptual model sustainable. That + is, if we make truly radical changes in a new checkpoint, it will be very + difficult for people to reason about code involving different checkpoints, or + to remember the precise differences. + +As such, the RFC proposes to limit checkpoints changes to be relatively +"superficial", i.e. occurring purely in the early front-end stages of the +compiler. More concretely: + +- We identify "core Rust" as being, roughly, MIR and the core trait system. + - Over time, we'll want to make this definition more precise, but this is best + done in an iterative fashion rather than specified completely up front. +- Checkpoints can only change the front-end translation into core Rust. + +Hence, **the compiler supports only a single version of core Rust**; all the +"checkpoint modes" boil down to keeping around multiple desugarings into this core +Rust, which greatly limits the complexity and technical debt involved. Similar, +core Rust encompasses the core *conceptual* model of the language, and this +constraint guarantees that, even when working with multiple checkpoints, those core +concepts remain fixed. + +Incidentally, these constraints also mean that checkpoint changes should be +amenable to a `rustfix` tool that automatically, and perfectly, upgrades code to +a new checkpoint. It's an open question whether we want to *require* such a tool +before introducing a new checkpoints. + +### What checkpoint opt-ins can do + +Given those basics, let's look in more detail at a few examples of the kinds of +changes checkpoint opt-ins enable. **These are just examples---this RFC doesn't +entail any commitment to these language changes**. + +#### Example: new keywords + +We've taken as a running example introducing new keywords, which sometimes +cannot be done backwards compatibly (because a contextual keyword isn't +possible). Let's see how this works out for the case of `catch`, assuming that +we're currently in checkpoint 2015. + +- First, we deprecate uses of `catch` as identifiers, preparing it to become a new keyword. +- We may, as today, implement the new `catch` feature using a temporary syntax + for nightly (like `do catch`). +- When the checkpoint opt-in for `2018` is released, opting into it makes `catch` into a + keyword, regardless of whether the `catch` feature has been implemented. This + means that opting in may require some adjustment to your code. +- The `catch` syntax can be hooked into an implementation usable on nightly within the `2018` checkpoint. +- When we're confident in the `catch` feature on nightly, we can stabilize it + *onto the stable channel for users opting into `2018`*. It cannot be stabilized onto the `2015` checkpoint, + since it requires a new keyword. +- `catch` is now a part of Rust, but may not be *fully* integrated into e.g. the book, IDEs, etc. +- At some point, checkpoint `2018` is fully shipped, and `catch` is now fully + incorporated into tooling, documentation, and core libraries. + +To make this even more concrete, let's imagine the following (aligned with the diagram above): + +| Rust version | Latest available checkpoint | Status of `catch` in `2015` | Status of `catch` in latest checkpoint +| ------------ | ---------------------- | -- | -- | +| 1.15 | 2015 | Valid identifier | Valid identifier +| 1.21 | 2015 | Valid identifier; deprecated | Valid identifier; deprecated +| 1.23 | 2018 (preview period) | Valid identifier; deprecated | Keyword, unimplemented +| 1.25 | 2018 (preview period) | Valid identifier; deprecated | Keyword, implemented +| 1.27 | 2018 (final) | Valid identifier; deprecated | Keyword, implemented + +Now, suppose you have the following code: + +``` +Cargo.toml: + +checkpoint = "2015" +``` + +```rust +// main.rs: + +fn main() { + let catch = "gotcha"; + println!("{}", catch); +} +``` + +- This code will compile **as-is** on *all* Rust versions. On versions 1.21 and +above, it will yield a warning, saying that `catch` is deprecated as an +identifier. + +- On version 1.23, if you change `Cargo.toml` to use `2018`, the + code will fail to compile due to `catch` being a keyword. + +- However, if you leave it at `2015`, you can upgrade to Rust 1.27 **and + use libraries that opt in to the `2018` checkpoint** with no problem. + +#### Example: repurposing corner cases + +A similar story plays out for more complex modifications that repurpose existing +usages. For example, some suggested module system improvements (not yet in RFC) +deduce the module hierarchy from the filesystem. But there is a corner case +today of providing both a `lib.rs` and a `bin.rs` directly at the top level, +which doesn't play well with the new feature. + +Using checkpoints, we can deprecate such usage (in favor of the `bin` directory), +then make it an error during the preview period. The module system change could then +be made available (and ultimately stabilized) within the preview period, before +fully shipping on the next checkpoint. + +#### Example: repurposing syntax + +A more radical example: changing the syntax for trait objects and `impl +Trait`. In particular, we have +sometimes [discussed](https://github.com/rust-lang/rfcs/pull/1603): + +- Using `dyn Trait` for trait objects (e.g. `Box>`) +- Repurposing "bare `Trait` to use instead of `impl Trait`, so you can write `fn + foo() -> Iterator` instead of `fn foo -> impl Iterator` + +Suppose we wanted to carry out such a change. We could do it over multiple steps: + +- First, introduce and stabilize `dyn Trait`. +- Deprecate bare `Trait` syntax in favor of `dyn Trait`. +- In a checkpoint preview period, make it an error to use bare `Trait` syntax. +- Ship the new checkpoint, and wait until bare `Trait` syntax is obscure. +- Re-introduce bare `Trait` syntax, stabilize it, and deprecate `impl Trait` in + favor of it. + +Of course, this RFC isn't suggesting that such a course of action is a *good* +one, just that it is *possible* to do without breakage. The policy around such +changes is left as an open question. + +#### Example: type inference changes + +There are a number of details about type inference that seem suboptimal: + +- Currently multi-parameter traits like `AsRef` will infer the value of one + parameter on the basis of the other. We would at least like an opt-out, but + employing it for `AsRef` is backwards-incompatible. +- Coercions don’t always trigger when we wish they would, but altering the rules + may cause other programs to stop compiling. +- In trait selection, where-clauses take precedence over impls; changing this is backwards-incompatible. + +We may or may not be able to change these details on the existing checkpoint. With +enough effort, we could probably deprecate cases where type inference rules +might change and request explicit type annotations, and then—in the new +checkpoint—tweak those rules. + +### What checkpoint opt-ins can't do + +There are also changes that checkpoints don't help with, due to the constraints +we impose. These limitations are extremely important for keeping the compiler +maintainable, the language understandable, and the ecosystem compatible. + +#### Example: changes to coherence rules + +Trait coherence rules, like the "orphan" rule, provide a kind of protocol about +which crates can provide which `impl`s. It's not possible to change protocol +incompatibly, because existing code will assume the current protocol and provide +impls accordingly, and there's no way to work around that fact via deprecation. + +More generally, this means that checkpoints can only be used to make changes to the +language that are applicable *crate-locally*; they cannot impose new +requirements or semantics on external crates, since we want to retain +compatibility with the existing ecosystem. + +#### Example: `Error` trait downcasting + +See [rust-lang/rust#35943](https://github.com/mozilla/rust/issues/35943). Due to +a silly oversight, you can’t currently downcast the “cause” of an error to +introspect what it is. We can’t make the trait have stricter requirements; it +would break existing impls. And there's no way to do so only in a newer checkpoint, +because we must be compatible with the older one, meaning that we cannot rely on +downcasting. + +This is essentially another example of a non-crate-local change. + +More generally, breaking changes to the standard library are not possible. + +## The full mechanics + +We'll wrap up with the full details of the mechanisms at play. + +- `rustc` will take a new flag, `--checkpoint`, which can specify the checkpoint to + use. This flag will default to checkpoint 2015. + - This flag should not affect the behavior of the core trait system or passes at the MIR level. +- `Cargo.toml` can include an `checkpoint` value, which is used to pass to `rustc`. + - If left off, it will assume checkpoint 2015. +- `cargo new` will produce a `Cargo.toml` with the latest `checkpoint` value + (including a checkpoint currently in its preview period). + +# How We Teach This +[how-we-teach-this]: #how-we-teach-this + +First and foremost, if we accept this RFC, we should publicize the plan widely, +including on the main Rust blog, in a style simlar to [previous posts] about our +release policy. This will require extremely careful messaging, to make clear +that checkpoints are *not* about breaking Rust code, but instead *primarily* +about putting together a globally coherent, polished product on a regular basis, +while providing some opt-in ways to allow for evolution not possible today. + +In addition, the book should talk about the basics from a user perspective, +including: + +- The fact that, if you do nothing, your code should continue to compile (with + minimum hassle) when upgrading the compiler. +- If you resolve deprecations as they occur, moving to a new checkpoint should also + require minimum hassle. +- Best practices about upgrading checkpoints (TBD). + +[previous posts]: https://blog.rust-lang.org/2014/10/30/Stability.html + +# Drawbacks +[drawbacks]: #drawbacks + +There are several drawbacks to this proposal: + +- Most importantly, it risks muddying our story about stability, which we've + worked very hard to message clearly. + + - To mitigate this, we need to put front and center that, **if you do nothing, + updating to a new `rustc` should not be a hassle**, and **staying on an old + checkpoint doesn't cut you off from the ecosystem**. + +- It adds a degree of complication to an evolution story that is already + somewhat complex (with release channels and rapid releases). + + - On the other hand, checkpoint releases provide greater clarity about major + steps in Rust evolution, for those who are not following development + closely. + +- New checkpoints can invalidate existing blog posts and documentation, a problem we + suffered a lot around the 1.0 release + + - However, this situation already obtains in the sense of changing idioms; a + blog post using `try!` these days already feels like it's using "old + Rust". Notably, though, the code still compiles on current Rust. + + - A saving grace is that, with checkpoints, it's more likely that a post will + mention what checkpoint is being used, for context. Moreover, with sufficient + work on error messages, it seems plausible to detect that code was intended + for an earlier checkpoints and explain the situation. + +These downsides are most problematic in cases that involve "breakage" if they +were done without opt in. They indicate that, even if we do adopt checkpoints, we +should use them judiciously. + +# Alternatives +[alternatives]: #alternatives + +## Within the basic checkpoint structure + +There was a significant amount of discussion on the RFC thread about using "2.0" +rather than "2018". It's difficult to concisely summarize this discussion, but +in a nutshell, some feel that 2.0 (with a guarantee of backwards compatibility) +is more honest and easier to understand, while others worry that it will be +misconstrued no matter how much we caveat it, and that we cannot risk Rust being +perceived as unstable or risky. + + - The "checkpoint" terminology and current framing arose from this discussion, + as a way of clarifying what we intend -- i.e., that the concept is + *primarily* about putting together a coherent package -- and as a heads up + that the model is different from that of other languages. + +Sticking with the basic idea of checkpoints, there are a couple alternative setups +that avoid "preview" checkpoints: + +- Rather than locking in a set of deprecations up front, we could provide + "stable channel feature gates", allowing users to opt in to features of the + next checkpoint in a fine-grained way, which may introduce new errors. When + the new checkpoint is released, one would then upgrade to it and remove all of + the gates. + + - The main downside is lack of clarity about what the current "stable Rust" + is; each combination of gates gives you a slightly different language. While + this fine-grained variation is acceptable for nightly, since it's meant for + experimentation, it cuts against some of the overall goals of this proposal + to introduce such fragmentation on the stable channel. There's risk that + people would use a mixture of gates in perpetuity, essentially picking their + preferred dialect of the language. + + - It's feasible to introduce such a fine-grained scheme later on, if it proves + necessary. Given the risks involved, it seems best to start with a + coarse-grained flag at the outset. + +- We could stabilize features using undesirable syntax at first, making way for + better syntax only when the new checkpoint is released, then deprecate the "bad" + syntax in favor of the "good" syntax. + + - For `catch`, this would look like: + - Stabilize `do catch`. + - Deprecate `catch` as an identifier. + - Ship new checkpoint, which makes `catch` a keyword. + - Stabilize `catch` as a syntax for the `catch` feature, and deprecate `do catch` in favor of it. + - This approach involves significantly more churn than the one proposed in the RFC. + +- Finally, we could just wait to stabilize features like `catch` until the + moment the checkpoint is released. + + - This approach seems likely to introduce all the downsides of "feature-based" + releases, making the checkpoint release extremely high stakes, and preventing + usage of "ready to go" feature on the stable channel until the checkpoint is + shipped. + +## Alternatives to checkpoints + +The larger alternatives include, of course, not trying to solve the problems +laid out in the motivation, and instead finding creative alternatives. + +- For cases like `catch` that require a new keyword, it's not clear how to do +this without ending up with suboptimal syntax. + +The other main alternative is to issue major releases in the semver sense: Rust +2.0. This strategy could potentially be coupled with a `rustfix`, depending on +what kinds of changes we want to allow. Downsides: + +- Lack of clarity around ecosystem compatibility. If we allow both 1.0 and 2.0 + crates to interoperate, we arrive at something like this RFC. If we don't, we + risk splitting the ecosystem, which is extremely dangerous. + +- Likely significant blowback based on abandoning stability as a core principle + of Rust. Even if we provide a perfect `rustfix`, the message is significantly muddied. + +- Much greater temptation to make sweeping changes, and continuous litigation + over what those changes should be. + +# Unresolved questions +[unresolved]: #unresolved-questions + +- What impact is there, if any, on breakage permitted today for bug fixing or + soundness holes? In many cases these are more disruptive than introducing a + new keyword. + +- Is "checkpoint" the right key in Cargo.toml? Would it be more clear to just say `rust = "2018"`? + +- Do we want to require a `rustfix` for all checkpoint changes? + +- Will we ever consider dropping support for very old checkpoints? Given the + constraints in this RFC, it seems unlikely to ever be worth it. + +- Should `rustc` default to the latest checkpoint instead? diff --git a/text/0000-epochs.md b/text/0000-epochs.md deleted file mode 100644 index 12a9e3522b8..00000000000 --- a/text/0000-epochs.md +++ /dev/null @@ -1,533 +0,0 @@ -- Feature Name: N/A -- Start Date: 2017-06-26 -- RFC PR: (leave this empty) -- Rust Issue: (leave this empty) - -# Summary -[summary]: #summary - -There has been a long-standing question around Rust's evolution: will there ever be a Rust 2.0 in the semver sense? - -This RFC gives the answer: certainly not in the foreseeable future, and probably not ever. - -Instead, this RFC proposes *epochs*, a mechanism for language evolution without breakage, which fits neatly into Rust's existing train and release channel process. It's an attempt to provide the next stage of our core principle of [stability without stagnation], inspired in part by similar mechanisms in languages like C++ and Java. - -With epochs, it becomes possible to do things like introduce new keywords without breaking existing code or splitting the ecosystem. Each crate specifies the epoch it fits within (a bit like "C++11" or "C++14"), and the compiler can cope with multiple epochs being used throughout a dependency graph. Thus we still guarantee that your code will keep compiling on the latest stable release (modulo the [usual caveats]), while making it possible to evolve the language in some new ways via explicit opt-in. - -[stability without stagnation]: https://blog.rust-lang.org/2014/10/30/Stability.html - -# Motivation -[motivation]: #motivation - -## The status quo - -Today, Rust evolution happens steadily through a combination of several mechanisms: - -- **The nightly/stable release channel split**. Features that are still under - development are usable *only* on the nightly channel, preventing *de facto* - lock-in and thus leaving us free to iterate in ways that involve code breakage - before "stabilizing" the feature. - -- **The rapid (six week) release process**. Frequent releases on the stable - channel allow features to stabilize as they become ready, rather than as part - of a massive push toward an infrequent "feature-based" release. Consequently, - Rust evolves in steady, small increments. - -- **Deprecation**. Compiler support for deprecating language features and - library APIs makes it possible to nudge people toward newer idioms without - breaking existing code. - -All told, the tools work together quite nicely to allow Rust to change and grow -over time, while keeping old code working (with only occasional, very minor -adjustments to account for things like changes to type inference.) - -## What's missing - -So, what's the problem? - -There are two desires that the current process doesn't have a good story for: - -- **Changes that may require some breakage in corner cases**. The simplest - example is adding new keywords: the current implementation of `catch` uses the - syntax `do catch` because `catch` is not a keyword, and cannot be added even - as a contextual keyword without potential breakage. There are plenty of - examples of "superficial" breakage like this that do not fit into the current - evolution mechanisms. - -- **Lack of clear "chapters" in the evolutionary story**. A downside to rapid - releases is that, while the constant small changes eventually add up to large - shifts in idioms, there's not an agreed upon line of demarcation between these - major shifts. That is, we don't have a simple way to talk about these shifts, - nor to explain the "big steps" Rust is taking when we talk to those outside - the Rust community. If you think about the combination of `?` syntax, ATCs, - `impl Trait`, and specialization all becoming available, for example, it's - helpful to have an umbrella moniker like "Rust 2018" to refer to that - encompasses them all, and the new idioms they lead to. - -At the same time, the commitment to stability and rapid releases has been an -incredible boon for Rust, and we don't want to give up those existing mechanisms. - -This RFC proposes *epochs* as a mechanism we can layer on top of our existing -release process, keeping its guarantees while addressing its gaps. - -# Detailed design -[design]: #detailed-design - -## The basic idea - -- An *epoch* represents a multi-year accumulation of features, improvements, and - idiom shifts for Rust. It covers the language, core libraries, core tooling, - and core documentation. - -- Epochs are named by the year in which they are introduced, which we expect to - happen every two or three years. - -- Each **crate** declares an epoch in its `Cargo.toml` (or, if not, is assumed - to have epoch 2015, coinciding with Rust 1.0): `epoch = "2018"`. Thus, new - epochs are *opt in*, and the dependencies of a crate may use older or newer - epochs than the crate itself. - -To be crystal clear: Rust compilers are expected to support multiple epochs, and -a crate dependency graph may involve several different epochs -simultaneously. Thus, **epochs do not split the ecosystem nor do they break -existing code**. - -Furthermore: - -- Prior to a new epoch, the current epoch will gain deprecations over time. -- When cutting a new epoch, existing deprecations may turn into hard errors, and - the epoch may take advantage of that fact to repurpose existing usage, - e.g. introducing a new keyword. This is the only kind of change a new epoch - can make. - -Code that compiles without warnings on the previous epoch (under the latest -compiler release) will compile without errors on the next epoch (modulo the -[usual caveats] about type inference changes and so on). Alternatively, you can -continue working with the previous epoch on new compiler releases indefinitely, -but your code may not have access to new features that require new keywords and -the like. - -[usual caveats]: https://github.com/rust-lang/rfcs/blob/master/text/1122-language-semver.md - -## Epoch timing, stabilizations, and the roadmap process - -While this RFC will focus largely on the mechanics around deprecation, a key -point is that epochs also give a *name* to large idiom shifts, recognizing that -a significant set of new features have stabilized and should change -the way you write code and construct APIs. - -The proposal is much akin to C++ standards, which are tied to particular years -(e.g. C++11, C++14). Each of these versions represents major enhancements to the -language and changes to idioms. Compilers generally take flags to let you select -*which* standard you wish to compile against. Many other languages (like Java) -take a similar approach. - -To some degree, you can understand these as "marketing" releases; they bundle -together a set of changes into a (hopefully coherent) package that's easy to -talk about. But the benefits go beyond marketing: for example, it becomes much -easier for a blog post to give context about *which era* of the language you're -using without specifying a particular compiler version. - -In the Rust world, we want to layer this kind of narrative on top of our -existing release and roadmap process: - -- As today, each year has a [roadmap setting out that year's vision]. Some - years---like 2017---the roadmap is mostly about laying down major new - groundwork. Some years, however, they roadmap explicitly proposes to declare a - new epoch during the year. - -- Epoch years are focused primarily on *stabilization* and *polish*. We are - trying to put together and ship a coherent product, complete with - documentation and a well-aligned ecosystem. These goals will provide a - rallying point for the whole community, to put our best foot forward as we - publish a significant new version of the project. - -[roadmap laying out that year's vision]: https://github.com/rust-lang/rfcs/pull/1728 - -You can see this process graphically below: - - - -The diagram shows every other compiler release due to space constraints. The -releases in red, bold text represent the compiler supporting a new epoch. - -Vitally, the rapid release process---including stabilization---continues just as -today. In particular, **epoch releases are *not* feature-based**; there is no -commitment to ship a particular set of features with the first compiler version -supporting a new epoch, and features that miss that original release will -continually have additional chances to stabilize afterward, still within that -epoch. On the other hand, when we declare an epoch year in the roadmap, we will -likely have a pretty decent chance of what's *likely* to ship as stable in the -first epoch release. - -### Epoch previews - -To provide the clarity discussed above, and to allow us to stabilize -improvements as they're ready, we'll introduce one more concept: epoch -*previews*, denoted in the figure as green, italic compiler releases. - -The problem is that for changes that rely on a new epoch, such as introducing a -new keyword, we cannot stabilize them within the existing epoch as-is; that -would be a breaking change. On the other hand, we *want* to stabilize them as -they become ready, rather than tying all of the stabilizations to a high-stakes -epoch release. And finally, we want to bundle them all together under a new moniker. - -We thread the needle by providing an *epoch preview* at some point prior to the -new epoch being shipped: `epoch = "2015-next"`. This preview includes *all* -of the hard errors that will be introduced in the next epoch, but not yet all of -the stabilizations. It is usable from the stable channel. - -There are a few reasons to provide such a preview: - -- Most importantly, it clears the way to shipping features for the next epoch on - the stable channel as they become ready, even if they require some existing - usages to become errors. Again, keyword introduction is a simple example: the - `2015-next` epoch can begin by making it a hard error to use `catch` as an - identifier (which is allowed today), and then later stabilizing the new - `catch` feature when it is ready. By "locking in" the hard errors up front, - however, **the preview of the epoch is guaranteed to be stable**: once code - compiles on the preview epoch, it will continue to do so as further features - stabilize. - -- The preview epoch also gives a clear picture of exactly what deprecations will - become errors in the next epoch, providing a nice way to future-proof your - code for upgrading to the epoch when available. - -Putting this all together, in an "epoch year" the roadmap will lay out an -expected set of deprecations-to-become-errors and potential features; early in -the year, an epoch preview will be released which makes all the slated -deprecations into errors. As the year progresses, features will continue -stabilize but some may only be available by opting into the preview epoch (since -they rely on e.g. new keywords). Finally, when we're ready to ship the full new -product, we enable the new epoch and deprecate the preview version (which will -just be an alias for it). - -There are some alternative ways to achieve similar ends, but with significant -downsides; these are explored in the Alternatives section. - -## Constraints on epoch changes - -We have already constrained epochal changes to essentially removing deprecations -(and thus making way for new features). But we want to further constrain them, -for two reasons: - -- **Limiting technical debt**. The compiler retains compatibility for old - epochs, and thus must have distinct "modes" for dealing with them. We need to - strongly limit the amount and complexity of code needed for these modes, or - the compiler will become very difficult to maintain. - -- **Limiting deep conceptual changes**. Just as we want to keep the compiler - maintainable, so too do we want to keep the conceptual model sustainable. That - is, if we make truly radical changes in a new epoch, it will be very difficult - for people to reason about code involving different epochs, or to remember the - precise differences. - -As such, the RFC proposes to limit epochal changes to be "superficial", -i.e. occurring purely in the early front-end stages of the compiler. More -concretely: - -- We identify "core Rust" as being, roughly, MIR and the core trait system. - - Over time, we'll want to make this definition more precise, but this is best - done in an iterative fashion rather than specified completely up front. -- Epochs can only change the front-end translation into core Rust. - -Hence, **the compiler supports only a single version of core Rust**; all the -"epoch modes" boil down to keeping around multiple desugarings into this core -Rust, which greatly limits the complexity and technical debt involved. Similar, -core Rust encompasses the core *conceptual* model of the language, and this -constraint guarantees that, even when working with multiple epochs, those core -concepts remain fixed. - -Incidentally, these constraints also mean that epochal changes should be -amenable to a `rustfix` tool that automatically, and perfectly, upgrades code to -a new epoch. It's an open question whether we want to *require* such a tool -before introducing a new epoch. - -### What epochs can do - -Given those basics, let's look in more detail at a few examples of the kinds of -changes epochs enable. These are just examples---this RFC doesn't entail any -commitment to these language changes. - -#### Example: new keywords - -We've taken as a running example introducing new keywords, which sometimes -cannot be done backwards compatibly (because a contextual keyword isn't -possible). Let's see how this works out for the case of `catch`, assuming that -we're currently in epoch 2015. - -- First, we deprecate uses of `catch` as identifiers, preparing it to become a new keyword. -- We may, as today, implement the new `catch` feature using a temporary syntax - for nightly (like `do catch`). -- When epoch `2015-next` is released, opting into it makes `catch` into a - keyword, regardless of whether the `catch` feature has been implemented. This - means that opting in may require some adjustment to your code. -- The `catch` syntax can be hooked into an implementation usable on nightly with - the preview epoch. -- When we're confident in the `catch` feature on nightly, we can stabilize it - *onto the stable channel for users opting into `2015-next`*. It cannot be stabilized onto the epoch `2015`, - since it requires a new keyword. -- At some point, epoch `2018` is fully shipped, meaning that `2015-next` - becomes a deprecated alias for `2018`. -- `catch` is now a part of Rust. - -To make this even more concrete, let's imagine the following (aligned with the diagram above): - -| Rust version | Latest available epoch | Status of `catch` in epoch 2015 | Status of `catch` in latest epoch -| ------------ | ---------------------- | -- | -- | -| 1.15 | 2015 | Valid identifier | Valid identifier -| 1.21 | 2015 | Valid identifier; deprecated | Valid identifier; deprecated -| 1.23 | 2015-next | Valid identifier; deprecated | Keyword -| 1.27 | 2018 | Valid identifier; deprecated | Keyword - -Now, suppose you have the following code: - -``` -Cargo.toml: - -epoch = "2015" -``` - -```rust -// main.rs: - -fn main() { - let catch = "gotcha"; - println!("{}", catch); -} -``` - -- This code will compile **as-is** on *all* Rust versions. On versions 1.21 and -above, it will yield a warning, saying that `catch` is deprecated as an -identifier. - -- On version 1.23, if you change `Cargo.toml` to use epoch `2015-next`, the - code will fail to compile due to `catch` being a keyword. Similarly for epoch - `2018` on version 1.27. - -- However, if you leave it at epoch `2015`, you can upgrade to Rust 1.27 **and - use libraries that opt in to the `2018` epoch** with no problem. - -#### Example: repurposing corner cases - -A similar story plays out for more complex modifications that repurpose existing -usages. For example, some suggested module system improvements (not yet in RFC) -deduce the module hierarchy from the filesystem. But there is a corner case -today of providing both a `lib.rs` and a `bin.rs` directly at the top level, -which doesn't play well with the new feature. - -Using epochs, we can deprecate such usage (in favor of the `bin` directory), -then make it an error on the preview epoch. The module system change could then -be made available (and ultimately stabilized) within the preview epoch, before -shipping on the next epoch. - -#### Example: repurposing syntax - -A more radical example: changing the syntax for trait objects and `impl -Trait`. In particular, we have -sometimes [discussed](https://github.com/rust-lang/rfcs/pull/1603): - -- Using `dyn Trait` for trait objects (e.g. `Box>`) -- Repurposing "bare `Trait` to use instead of `impl Trait`, so you can write `fn - foo() -> Iterator` instead of `fn foo -> impl Iterator` - -Suppose we wanted to carry out such a change. We could do it over multiple steps: - -- First, introduce and stabilize `dyn Trait`. -- Deprecate bare `Trait` syntax in favor of `dyn Trait`. -- In a preview epoch, make it an error to use bare `Trait` syntax. -- Ship the new epoch, and wait until bare `Trait` syntax is obscure. -- Re-introduce bare `Trait` syntax, stabilize it, and deprecate `impl Trait` in - favor of it. - -Of course, this RFC isn't suggesting that such a course of action is a *good* -one, just that it is *possible* to do without breakage. - -#### Example: type inference changes - -There are a number of details about type inference that seem suboptimal: - -- Currently multi-parameter traits like `AsRef` will infer the value of one - parameter on the basis of the other. We would at least like an opt-out, but - employing it for `AsRef` is backwards-incompatible. -- Coercions don’t always trigger when we wish they would, but altering the rules - may cause other programs to stop compiling. -- In trait selection, where-clauses take precedence over impls; changing this is backwards-incompatible. - -We may or may not be able to change these details on the existing epoch. With -enough effort, we could probably deprecate cases where type inference rules -might change and request explicit type annotations, and then—in the new -epoch—tweak those rules. - -### What epochs can't do - -There are also changes that epochs don't help with, due to the constraints we -impose. These limitations are extremely important for keeping the compiler -maintainable, the language understandable, and the ecosystem compatible. - -#### Example: changes to coherence rules - -Trait coherence rules, like the "orphan" rule, provide a kind of protocol about -which crates can provide which `impl`s. It's not possible to change protocol -incompatibly, because existing code will assume the current protocol and provide -impls accordingly, and there's no way to work around that fact via deprecation. - -More generally, this means that epochs can only be used to make changes to the -language that are applicable *crate-locally*; they cannot impose new -requirements or semantics on external crates, since we want to retain -compatibility with the existing ecosystem. - -#### Example: `Error` trait downcasting - -See [rust-lang/rust#35943](https://github.com/mozilla/rust/issues/35943). Due to -a silly oversight, you can’t currently downcast the “cause” of an error to -introspect what it is. We can’t make the trait have stricter requirements; it -would break existing impls. And there's no way to do so only in a newer epoch, -because we must be compatible with the older one, meaning that we cannot rely on -downcasting. - -This is essentially another example of a non-crate-local change. - -## The full mechanics - -We'll wrap up with the full details of the mechanisms at play. - -- `rustc` will take a new flag, `--epoch`, which can specify the epoch to - use. This flag will default to epoch 2015. - - This flag should not affect the behavior of the core trait system or passes at the MIR level. -- `Cargo.toml` can include an `epoch` value, which is used to pass to `rustc`. - - If left off, it will assume epoch 2015. -- `cargo new` will produce a `Cargo.toml` with the latest `epoch` value, - including preview epochs when applicable. - -# How We Teach This -[how-we-teach-this]: #how-we-teach-this - -First and foremost, if we accept this RFC, we should publicize the plan widely, -including on the main Rust blog, in a style simlar to [previous posts] about our -release policy. This will require extremely careful messaging, to make clear -that epochs are *not* about breaking Rust code, but instead about providing -compatibility indefinitely while allowing for more forms of evolution than -today. - -In addition, the book should talk about the basics from a user perspective, -including: - -- The fact that, if you do nothing, your code should continue to compile (with - minimum hassle) when upgrading the compiler. -- If you resolve deprecations as they occur, moving to a new epoch should also - require minimum hassle. -- Best practices about upgrading epochs (TBD). - -[previous posts]: https://blog.rust-lang.org/2014/10/30/Stability.html - -# Drawbacks -[drawbacks]: #drawbacks - -There are several drawbacks to this proposal: - -- Most importantly, it risks muddying our story about stability, which we've - worked very hard to message clearly. - - - To mitigate this, we need to put front and center that, **if you do nothing, - updating to a new `rustc` should not be a hassle**, and **staying on an old - epoch doesn't cut you off from the ecosystem**. - -- It adds a degree of complication to an evolution story that is already - somewhat complex (with release channels and rapid releases). - - - On the other hand, epoch releases can provide greater clarity about major - steps in Rust evolution, for those who are not following development - closely. - -- New epochs can invalidate existing blog posts and documentation, a problem we - suffered a lot around the 1.0 release - - - However, this situation already obtains in the sense of changing idioms; a - blog post using `try!` these days already feels like it's using "old - Rust". Notably, though, the code still compiles on current Rust. - - - A saving grace is that, with epochs, it's much more likely that a post will - mention what epoch is being used, for context. Moreover, with sufficient - work on error messages, it seems plausible to detect that code was intended - for an earlier epoch and explain the situation. - -These downsides are most problematic in cases that involve "breakage" if they -were done without opt in. They indicate that, even if we do adopt epochs, we -should use them judiciously. - -# Alternatives -[alternatives]: #alternatives - -## Within the basic epoch structure - -Sticking with the basic idea of epochs, there are a couple alternative setups, -that avoid "preview" epochs. - -- Rather than locking in a set of deprecations in a preview epoch, we could - provide "stable channel feature gates", allowing users to opt in to features - of the next epoch in a fine-grained way, which may introduce new errors. - When the new epoch is released, one would then upgrade to it and remove all of the gates. - - - The main downside is lack of clarity about what the current "stable Rust" - is; each combination of gates gives you a slightly different language. While - this fine-grained variation is acceptable for nightly, since it's meant for - experimentation, it cuts against some of the overall goals of this proposal - to introduce such fragmentation on the stable channel. - -- We could stabilize features using undesirable syntax at first, making way for - better syntax only when the new epoch is released, then deprecate the "bad" - syntax in favor of the "good" syntax. - - - For `catch`, this would look like: - - Stabilize `do catch`. - - Deprecate `catch` as an identifier. - - Ship new epoch, which makes `catch` a keyword. - - Stabilize `catch` as a syntax for the `catch` feature, and deprecate `do catch` in favor of it. - - This approach involves significantly more churn than the one proposed in the RFC. - -- Finally, we could just wait to stabilize features like `catch` until the - moment the epoch is released. - - - This approach seems likely to introduce all the downsides of "feature-based" - releases, making the epoch release extremely high stakes, and preventing - usage of "ready to go" feature on the stable channel until the epoch is - shipped. - -## Alternatives to epochs - -The larger alternatives include, of course, not trying to solve the problems -laid out in the motivation, and instead finding creative alternatives. - -- For cases like `catch` that require a new keyword, it's not clear how to do -this without ending up with suboptimal syntax. - -The other main alternative is to issue major releases in the semver sense: Rust -2.0. This strategy could potentially be coupled with a `rustfix`, depending on -what kinds of changes we want to allow. Downsides: - -- Lack of clarity around ecosystem compatibility. If we allow both 1.0 and 2.0 - crates to interoperate, we arrive at something like this RFC. If we don't, we - risk splitting the ecosystem, which is extremely dangerous. - -- Likely significant blowback based on abandoning stability as a core principle - of Rust. Even if we provide a perfect `rustfix`, the message is significantly muddied. - -- Much greater temptation to make sweeping changes, and continuous litigation - over what those changes should be. - -# Unresolved questions -[unresolved]: #unresolved-questions - -- It's not clear what the story should be for the books and other - documentation. Should we gate shipping a new epoch on having a fully updated - book? The preview epoch---and the fact that everything is shipped on stable - prior to releasing the epoch---would make that plausible. - -- Do we want to require a `rustfix` for all epoch changes? - -- Will we ever consider dropping support for very old epochs? Given the - constraints in this RFC, it seems unlikely to ever be worth it. - -- Should `rustc` default to the latest epoch instead? From 4389246c3de40e8bfd91c628745ad5bcc019c56a Mon Sep 17 00:00:00 2001 From: Aaron Turon Date: Tue, 1 Aug 2017 12:49:42 -0700 Subject: [PATCH 12/16] Add unresolved question for macros --- text/0000-checkpoints.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/text/0000-checkpoints.md b/text/0000-checkpoints.md index eed22e4d930..b7261dbfd06 100644 --- a/text/0000-checkpoints.md +++ b/text/0000-checkpoints.md @@ -549,3 +549,6 @@ what kinds of changes we want to allow. Downsides: constraints in this RFC, it seems unlikely to ever be worth it. - Should `rustc` default to the latest checkpoint instead? + +- How do we handle macros, particularly procedural macros, that may mix source + from multiple checkpoints? From c52ee24f268b27f0691774d9287453c35e45acd6 Mon Sep 17 00:00:00 2001 From: Aaron Turon Date: Thu, 31 Aug 2017 15:26:46 -0700 Subject: [PATCH 13/16] Update to 'epoch' wording; flesh out policy --- text/0000-checkpoints.md | 290 ++++++++++++++++++++++----------------- 1 file changed, 164 insertions(+), 126 deletions(-) diff --git a/text/0000-checkpoints.md b/text/0000-checkpoints.md index b7261dbfd06..a6497a7d85b 100644 --- a/text/0000-checkpoints.md +++ b/text/0000-checkpoints.md @@ -6,9 +6,9 @@ # Summary [summary]: #summary -Rust's ecosystem, tooling, documentation, and compiler are constantly improving. To make it easier to follow development, and to provide a clear, coherent "rallying point" for this work, this RFC proposes that we declare a *checkpoint* every two or three years. Checkpoints are designated by the year in which they occur, and represent a release in which several elements come together: +Rust's ecosystem, tooling, documentation, and compiler are constantly improving. To make it easier to follow development, and to provide a clear, coherent "rallying point" for this work, this RFC proposes that we declare a *epoch* every two or three years. Epochs are designated by the year in which they occur, and represent a release in which several elements come together: -- A significant, coherent set of new features and APIs have been stabilized since the previous checkpoint. +- A significant, coherent set of new features and APIs have been stabilized since the previous epoch. - Error messages and other important aspects of the user experience around these features are fully polished. - Tooling (IDEs, rustfmt, Clippy, etc) has been updated to work properly with these new features. - There is a guide to the new features, explaining why they're important and how they should influence the way you write Rust code. @@ -17,7 +17,7 @@ Rust's ecosystem, tooling, documentation, and compiler are constantly improving. - The standard library and other core ecosystem crates have been updated to use the new features as appropriate. - A new edition of the Rust Cookbook has been prepared, providing an updated set of guidance for which crates to use for various tasks. -Sometimes a feature we want to make available in a new checkpoint would require backwards-incompatible changes, like introducing a new keyword. In that case, the feature is only available by explicitly opting in to the new checkpoint. Existing code continues to compile, and crates can freely mix dependencies using different checkpoints. +Sometimes a feature we want to make available in a new epoch would require backwards-incompatible changes, like introducing a new keyword. In that case, the feature is only available by explicitly opting in to the new epoch. Existing code continues to compile, and crates can freely mix dependencies using different epochs. # Motivation [motivation]: #motivation @@ -85,7 +85,7 @@ At the same time, the commitment to stability and rapid releases has been an incredible boon for Rust, and we don't want to give up those existing mechanisms or their benefits. -This RFC proposes *checkpoint* as a mechanism we can layer on top of our existing +This RFC proposes *epochs* as a mechanism we can layer on top of our existing release process, keeping its guarantees while addressing its gaps. # Detailed design @@ -94,11 +94,11 @@ release process, keeping its guarantees while addressing its gaps. ## The basic idea To make it easier to follow Rust's evolution, and to provide a clear, coherent -"rallying point" for the community, the project declares a *checkpoint* every -two or three years. Checkpoints are designated by the year in which they occur, +"rallying point" for the community, the project declares a *epoch* every +two or three years. Epochs are designated by the year in which they occur, and represent a release in which several elements come together: -- A significant, coherent set of new features and APIs have been stabilized since the previous checkpoint. +- A significant, coherent set of new features and APIs have been stabilized since the previous epoch. - Error messages and other important aspects of the user experience around these features are fully polished. - Tooling (IDEs, rustfmt, Clippy, etc) has been updated to work properly with these new features. - There is a guide to the new features, explaining why they're important and how they should influence the way you write Rust code. @@ -107,65 +107,65 @@ and represent a release in which several elements come together: - The standard library and other core ecosystem crates have been updated to use the new features as appropriate. - A new edition of the Rust Cookbook has been prepared, providing an updated set of guidance for which crates to use for various tasks. -The precise list of elements going into a checkpoint is expected to evolve over +The precise list of elements going into a epoch is expected to evolve over time, as the Rust project and ecosystem grow. -Sometimes a feature we want to make available in a new checkpoint would require +Sometimes a feature we want to make available in a new epoch would require backwards-incompatible changes, like introducing a new keyword. In that case, the feature is only available by explicitly opting in to the new -checkpoint. Each **crate** can declare a checkpoint in its `Cargo.toml` like -`checkpoint = "2018"`; otherwise it is assumed to have checkpoint 2015, -coinciding with Rust 1.0. Thus, new checkpoints are *opt in*, and the -dependencies of a crate may use older or newer checkpoints than the crate +epoch. Each **crate** can declare a epoch in its `Cargo.toml` like +`epoch = "2019"`; otherwise it is assumed to have epoch 2015, +coinciding with Rust 1.0. Thus, new epochs are *opt in*, and the +dependencies of a crate may use older or newer epochs than the crate itself. -To be crystal clear: Rust compilers must support *all* extant checkpoints, and -a crate dependency graph may involve several different checkpoints -simultaneously. Thus, **checkpoints do not split the ecosystem nor do they break +To be crystal clear: Rust compilers must support *all* extant epochs, and +a crate dependency graph may involve several different epochs +simultaneously. Thus, **epochs do not split the ecosystem nor do they break existing code**. Furthermore: - As with today, each new version of the compiler may gain stabilizations and deprecations. -- When opting in to a new checkpoint, existing deprecations may turn into hard +- When opting in to a new epoch, existing deprecations *may* turn into hard errors, and the compiler may take advantage of that fact to repurpose existing - usage, e.g. by introducing a new keyword. This is the only kind of change a - checkpoint opt-in can make. + usage, e.g. by introducing a new keyword. **This is the only kind of *breaking* change a + epoch opt-in can make.** -Thus, code that compiles without warnings on the previous checkpoint (under the latest -compiler release) will compile without errors on the next checkpoint (modulo the +Thus, code that compiles without warnings on the previous epoch (under the latest +compiler release) will compile without errors on the next epoch (modulo the [usual caveats] about type inference changes and so on). [usual caveats]: https://github.com/rust-lang/rfcs/blob/master/text/1122-language-semver.md -Alternatively, you can continue working with the previous checkpoint on new +Alternatively, you can continue working with the previous epoch on new compiler releases indefinitely, but your code may not have access to new features that require new keywords and the like. New features that *are* -backwards compatible, however, will be available on older checkpoints. +backwards compatible, however, will be available on older epochs. -## Checkpoint timing, stabilizations, and the roadmap process +## Epoch timing, stabilizations, and the roadmap process As mentioned above, we want to retain our rapid release model, in which new features and other improvements are shipped on the stable release channel as soon as they are ready. So, to be clear, **we do not hold features back until -the next checkpoint**. +the next epoch**. -Rather, checkpoints, as their name suggests, represent a point of *global +Rather, epochs, as their name suggests, represent a point of *global coherence*, where documentation, tooling, the compiler, and core libraries are all fully aligned on a new set of (already stabilized!) features and other -changes. This alignment can happen incrementally, but a checkpoint signals that +changes. This alignment can happen incrementally, but a epoch signals that it *has* happened. -At the same time, checkpoints serve as a rallying point for making sure this +At the same time, epochs serve as a rallying point for making sure this alignment work gets done in a timely fashion--and helping set scope as needed. To make this work, we use the roadmap process: - As today, each year has a [roadmap setting out that year's vision]. Some years---like 2017---the roadmap is mostly about laying down major new groundwork. Some years, however, they roadmap explicitly proposes to produce a - new checkpoint during the year. + new epoch during the year. -- Checkpoint years are focused primarily on *stabilization*, *polish*, and +- Epoch years are focused primarily on *stabilization*, *polish*, and *coherence*, rather than brand new ideas. We are trying to put together and ship a coherent product, complete with documentation and a well-aligned ecosystem. These goals will provide a rallying point for the whole community, @@ -174,18 +174,18 @@ needed. To make this work, we use the roadmap process: [roadmap laying out that year's vision]: https://github.com/rust-lang/rfcs/pull/1728 -In short, checkpoints are striking a delicate balance: they're not a cutoff for +In short, epochs are striking a delicate balance: they're not a cutoff for stabilization, which continues every six weeks, but they still provide a strong impetus for coming together as a community and putting together a polished product. ### The preview period -There's an important tension around stabilization and checkpoints: +There's an important tension around stabilization and epochs: -- We want to enable new features, including those that require a checkpoint +- We want to enable new features, including those that require a epoch opt-in, to be available on the stable channel as they become ready. - - That means that we must enable some form of the opt in before the checkpoint + - That means that we must enable some form of the opt in before the epoch is fully ready to ship. - We want to retain our promise that code compiling on stable will continue to @@ -193,56 +193,94 @@ There's an important tension around stabilization and checkpoints: - That means that, once *any* form of the opt in is shipped, it cannot introduce *new* hard errors. -Thus, at some point within a checkpoint year, we will enable the opt-in on the +Thus, at some point within a epoch year, we will enable the opt-in on the stable release channel, which must include *all* of the hard errors that will be -introduced in the next checkpoint, but not yet all of the stabilizations (or -other artifacts that go into the full checkpoint release). This is the *preview -period* for the checkpoint, which ends when a release is produced that -synchronizes all of the elements that go into a checkpoint and the checkpoint is +introduced in the next epoch, but not yet all of the stabilizations (or +other artifacts that go into the full epoch release). This is the *preview +period* for the epoch, which ends when a release is produced that +synchronizes all of the elements that go into a epoch and the epoch is formally announced. -## Constraints on opt-in changes +## A broad policy on epoch changes -We have already constrained checkpoint changes to essentially removing deprecations -(and thus making way for new features). But we want to further constrain them, -for two reasons: +There are numerous reasons to limit the scope of changes for new epochs, among them: + +- **Limiting churn**. Even if you aren't *forced* to update your code, even if + there are automated tools to do so, churn is still a pain for existing + users. It also invalidates, or at least makes harder to use, existing content + on the internet, like StackOverflow answers and blog posts. And finally, it + plays against the important and hard work we've done to make Rust stable in + both reality and perception. In short, while epochs avoid *ecosystem* splits + and make churn opt-in, they do not eliminate *all* drawbacks. - **Limiting technical debt**. The compiler retains compatibility for old - checkpoints, and thus must have distinct "modes" for dealing with them. We need to + epochs, and thus must have distinct "modes" for dealing with them. We need to strongly limit the amount and complexity of code needed for these modes, or the compiler will become very difficult to maintain. - **Limiting deep conceptual changes**. Just as we want to keep the compiler maintainable, so too do we want to keep the conceptual model sustainable. That - is, if we make truly radical changes in a new checkpoint, it will be very - difficult for people to reason about code involving different checkpoints, or + is, if we make truly radical changes in a new epoch, it will be very + difficult for people to reason about code involving different epochs, or to remember the precise differences. -As such, the RFC proposes to limit checkpoints changes to be relatively -"superficial", i.e. occurring purely in the early front-end stages of the -compiler. More concretely: +These lead to some hard and soft constraints. + +### Hard constraints + +**TL;DR: Warning-free code on epoch N should compile on epoch N+1 and have the +same behavior.** + +There are only two things a new epoch can do that a normal release cannot: + +- Change an existing deprecation into a hard error. + - This option is only available when the deprecation is expected to hit a + relatively small percentage of code. +- Change an existing deprecation to *deny* by default, and leverage the + corresponding lint setting to produce error messages *as if* the feature were + removed entirely. + +The second option is to be preferred whenever possible. Note that warning-free +code in one epoch might produce warnings in the next epoch, but it should still +compile successfully. + +The Rust compiler supports multiple epochs, but **must only support a single +version of "core Rust"**. We identify "core Rust" as being, roughly, MIR and the +core trait system; this specification will be made more precise over time. The +implication is that the "epoch modes" boil down to keeping around multiple +desugarings into this core Rust, which greatly limits the complexity and +technical debt involved. Similar, core Rust encompasses the core *conceptual* +model of the language, and this constraint guarantees that, even when working +with multiple epochs, those core concepts remain fixed. + +### Soft constraints + +**TL;DR: *Most* code *with* warnings on epoch N should, after running `rustfix`, +compile on epoch N+1 and have the same behavior.** + +The core epoch design avoids an ecosystem split, which is very important. But +it's *also* important that upgrading your own code to a new epoch is minimally +disruptive. The basic principle is that **changes that cannot be automated must +be required only in a small minority of crates, and even there not require +extensive work**. This principle applies not just to epochs, but also to cases +where we'd like to make a widespread deprecation. -- We identify "core Rust" as being, roughly, MIR and the core trait system. - - Over time, we'll want to make this definition more precise, but this is best - done in an iterative fashion rather than specified completely up front. -- Checkpoints can only change the front-end translation into core Rust. +Note that a `rustfix` tool will never be perfect, because of conditional +compilation and code generation. So it's important that, in the cases it +inevitably fails, the manual fixes are not too onerous. -Hence, **the compiler supports only a single version of core Rust**; all the -"checkpoint modes" boil down to keeping around multiple desugarings into this core -Rust, which greatly limits the complexity and technical debt involved. Similar, -core Rust encompasses the core *conceptual* model of the language, and this -constraint guarantees that, even when working with multiple checkpoints, those core -concepts remain fixed. +In addition, migrations that affect a large percentage of code must be "small +tweaks" (e.g. clarifying syntax), and as above, must keep the old form intact +(though they can enact a deny-by-default lint on it). -Incidentally, these constraints also mean that checkpoint changes should be -amenable to a `rustfix` tool that automatically, and perfectly, upgrades code to -a new checkpoint. It's an open question whether we want to *require* such a tool -before introducing a new checkpoints. +These are "soft constraints" because they use terms like "small minority" and +"small tweaks", which are open for interpretation. More broadly, the more +disruption involved, the higher the bar for the change. -### What checkpoint opt-ins can do +### Positive examples: What epoch opt-ins can do -Given those basics, let's look in more detail at a few examples of the kinds of -changes checkpoint opt-ins enable. **These are just examples---this RFC doesn't +Given those principles, let's look in more detail at a few examples of the kinds of +changes epoch opt-ins enable. **These are just examples---this RFC doesn't entail any commitment to these language changes**. #### Example: new keywords @@ -250,38 +288,38 @@ entail any commitment to these language changes**. We've taken as a running example introducing new keywords, which sometimes cannot be done backwards compatibly (because a contextual keyword isn't possible). Let's see how this works out for the case of `catch`, assuming that -we're currently in checkpoint 2015. +we're currently in epoch 2015. - First, we deprecate uses of `catch` as identifiers, preparing it to become a new keyword. - We may, as today, implement the new `catch` feature using a temporary syntax for nightly (like `do catch`). -- When the checkpoint opt-in for `2018` is released, opting into it makes `catch` into a +- When the epoch opt-in for `2019` is released, opting into it makes `catch` into a keyword, regardless of whether the `catch` feature has been implemented. This means that opting in may require some adjustment to your code. -- The `catch` syntax can be hooked into an implementation usable on nightly within the `2018` checkpoint. +- The `catch` syntax can be hooked into an implementation usable on nightly within the `2019` epoch. - When we're confident in the `catch` feature on nightly, we can stabilize it - *onto the stable channel for users opting into `2018`*. It cannot be stabilized onto the `2015` checkpoint, + *onto the stable channel for users opting into `2019`*. It cannot be stabilized onto the `2015` epoch, since it requires a new keyword. - `catch` is now a part of Rust, but may not be *fully* integrated into e.g. the book, IDEs, etc. -- At some point, checkpoint `2018` is fully shipped, and `catch` is now fully +- At some point, epoch `2019` is fully shipped, and `catch` is now fully incorporated into tooling, documentation, and core libraries. To make this even more concrete, let's imagine the following (aligned with the diagram above): -| Rust version | Latest available checkpoint | Status of `catch` in `2015` | Status of `catch` in latest checkpoint +| Rust version | Latest available epoch | Status of `catch` in `2015` | Status of `catch` in latest epoch | ------------ | ---------------------- | -- | -- | | 1.15 | 2015 | Valid identifier | Valid identifier | 1.21 | 2015 | Valid identifier; deprecated | Valid identifier; deprecated -| 1.23 | 2018 (preview period) | Valid identifier; deprecated | Keyword, unimplemented -| 1.25 | 2018 (preview period) | Valid identifier; deprecated | Keyword, implemented -| 1.27 | 2018 (final) | Valid identifier; deprecated | Keyword, implemented +| 1.23 | 2019 (preview period) | Valid identifier; deprecated | Keyword, unimplemented +| 1.25 | 2019 (preview period) | Valid identifier; deprecated | Keyword, implemented +| 1.27 | 2019 (final) | Valid identifier; deprecated | Keyword, implemented Now, suppose you have the following code: ``` Cargo.toml: -checkpoint = "2015" +epoch = "2015" ``` ```rust @@ -297,24 +335,24 @@ fn main() { above, it will yield a warning, saying that `catch` is deprecated as an identifier. -- On version 1.23, if you change `Cargo.toml` to use `2018`, the +- On version 1.23, if you change `Cargo.toml` to use `2019`, the code will fail to compile due to `catch` being a keyword. - However, if you leave it at `2015`, you can upgrade to Rust 1.27 **and - use libraries that opt in to the `2018` checkpoint** with no problem. + use libraries that opt in to the `2019` epoch** with no problem. #### Example: repurposing corner cases A similar story plays out for more complex modifications that repurpose existing -usages. For example, some suggested module system improvements (not yet in RFC) -deduce the module hierarchy from the filesystem. But there is a corner case -today of providing both a `lib.rs` and a `bin.rs` directly at the top level, -which doesn't play well with the new feature. +usages. For example, some suggested module system improvements deduce the module +hierarchy from the filesystem. But there is a corner case today of providing +both a `lib.rs` and a `bin.rs` directly at the top level, which doesn't play +well with the new feature. -Using checkpoints, we can deprecate such usage (in favor of the `bin` directory), +Using epochs, we can deprecate such usage (in favor of the `bin` directory), then make it an error during the preview period. The module system change could then be made available (and ultimately stabilized) within the preview period, before -fully shipping on the next checkpoint. +fully shipping on the next epoch. #### Example: repurposing syntax @@ -331,8 +369,8 @@ Suppose we wanted to carry out such a change. We could do it over multiple steps - First, introduce and stabilize `dyn Trait`. - Deprecate bare `Trait` syntax in favor of `dyn Trait`. -- In a checkpoint preview period, make it an error to use bare `Trait` syntax. -- Ship the new checkpoint, and wait until bare `Trait` syntax is obscure. +- In a epoch preview period, make it an error to use bare `Trait` syntax. +- Ship the new epoch, and wait until bare `Trait` syntax is obscure. - Re-introduce bare `Trait` syntax, stabilize it, and deprecate `impl Trait` in favor of it. @@ -351,14 +389,14 @@ There are a number of details about type inference that seem suboptimal: may cause other programs to stop compiling. - In trait selection, where-clauses take precedence over impls; changing this is backwards-incompatible. -We may or may not be able to change these details on the existing checkpoint. With +We may or may not be able to change these details on the existing epoch. With enough effort, we could probably deprecate cases where type inference rules might change and request explicit type annotations, and then—in the new -checkpoint—tweak those rules. +epoch—tweak those rules. -### What checkpoint opt-ins can't do +### Negative examples: What epoch opt-ins can't do -There are also changes that checkpoints don't help with, due to the constraints +There are also changes that epochs don't help with, due to the constraints we impose. These limitations are extremely important for keeping the compiler maintainable, the language understandable, and the ecosystem compatible. @@ -369,7 +407,7 @@ which crates can provide which `impl`s. It's not possible to change protocol incompatibly, because existing code will assume the current protocol and provide impls accordingly, and there's no way to work around that fact via deprecation. -More generally, this means that checkpoints can only be used to make changes to the +More generally, this means that epochs can only be used to make changes to the language that are applicable *crate-locally*; they cannot impose new requirements or semantics on external crates, since we want to retain compatibility with the existing ecosystem. @@ -379,7 +417,7 @@ compatibility with the existing ecosystem. See [rust-lang/rust#35943](https://github.com/mozilla/rust/issues/35943). Due to a silly oversight, you can’t currently downcast the “cause” of an error to introspect what it is. We can’t make the trait have stricter requirements; it -would break existing impls. And there's no way to do so only in a newer checkpoint, +would break existing impls. And there's no way to do so only in a newer epoch, because we must be compatible with the older one, meaning that we cannot rely on downcasting. @@ -391,13 +429,13 @@ More generally, breaking changes to the standard library are not possible. We'll wrap up with the full details of the mechanisms at play. -- `rustc` will take a new flag, `--checkpoint`, which can specify the checkpoint to - use. This flag will default to checkpoint 2015. +- `rustc` will take a new flag, `--epoch`, which can specify the epoch to + use. This flag will default to epoch 2015. - This flag should not affect the behavior of the core trait system or passes at the MIR level. -- `Cargo.toml` can include an `checkpoint` value, which is used to pass to `rustc`. - - If left off, it will assume checkpoint 2015. -- `cargo new` will produce a `Cargo.toml` with the latest `checkpoint` value - (including a checkpoint currently in its preview period). +- `Cargo.toml` can include an `epoch` value, which is used to pass to `rustc`. + - If left off, it will assume epoch 2015. +- `cargo new` will produce a `Cargo.toml` with the latest `epoch` value + (including a epoch currently in its preview period). # How We Teach This [how-we-teach-this]: #how-we-teach-this @@ -405,7 +443,7 @@ We'll wrap up with the full details of the mechanisms at play. First and foremost, if we accept this RFC, we should publicize the plan widely, including on the main Rust blog, in a style simlar to [previous posts] about our release policy. This will require extremely careful messaging, to make clear -that checkpoints are *not* about breaking Rust code, but instead *primarily* +that epochs are *not* about breaking Rust code, but instead *primarily* about putting together a globally coherent, polished product on a regular basis, while providing some opt-in ways to allow for evolution not possible today. @@ -414,9 +452,9 @@ including: - The fact that, if you do nothing, your code should continue to compile (with minimum hassle) when upgrading the compiler. -- If you resolve deprecations as they occur, moving to a new checkpoint should also +- If you resolve deprecations as they occur, moving to a new epoch should also require minimum hassle. -- Best practices about upgrading checkpoints (TBD). +- Best practices about upgrading epochs (TBD). [previous posts]: https://blog.rust-lang.org/2014/10/30/Stability.html @@ -430,55 +468,55 @@ There are several drawbacks to this proposal: - To mitigate this, we need to put front and center that, **if you do nothing, updating to a new `rustc` should not be a hassle**, and **staying on an old - checkpoint doesn't cut you off from the ecosystem**. + epoch doesn't cut you off from the ecosystem**. - It adds a degree of complication to an evolution story that is already somewhat complex (with release channels and rapid releases). - - On the other hand, checkpoint releases provide greater clarity about major + - On the other hand, epoch releases provide greater clarity about major steps in Rust evolution, for those who are not following development closely. -- New checkpoints can invalidate existing blog posts and documentation, a problem we +- New epochs can invalidate existing blog posts and documentation, a problem we suffered a lot around the 1.0 release - However, this situation already obtains in the sense of changing idioms; a blog post using `try!` these days already feels like it's using "old Rust". Notably, though, the code still compiles on current Rust. - - A saving grace is that, with checkpoints, it's more likely that a post will - mention what checkpoint is being used, for context. Moreover, with sufficient + - A saving grace is that, with epochs, it's more likely that a post will + mention what epoch is being used, for context. Moreover, with sufficient work on error messages, it seems plausible to detect that code was intended - for an earlier checkpoints and explain the situation. + for an earlier epochs and explain the situation. These downsides are most problematic in cases that involve "breakage" if they -were done without opt in. They indicate that, even if we do adopt checkpoints, we +were done without opt in. They indicate that, even if we do adopt epochs, we should use them judiciously. # Alternatives [alternatives]: #alternatives -## Within the basic checkpoint structure +## Within the basic epoch structure There was a significant amount of discussion on the RFC thread about using "2.0" -rather than "2018". It's difficult to concisely summarize this discussion, but +rather than "2019". It's difficult to concisely summarize this discussion, but in a nutshell, some feel that 2.0 (with a guarantee of backwards compatibility) is more honest and easier to understand, while others worry that it will be misconstrued no matter how much we caveat it, and that we cannot risk Rust being perceived as unstable or risky. - - The "checkpoint" terminology and current framing arose from this discussion, + - The "epoch" terminology and current framing arose from this discussion, as a way of clarifying what we intend -- i.e., that the concept is *primarily* about putting together a coherent package -- and as a heads up that the model is different from that of other languages. -Sticking with the basic idea of checkpoints, there are a couple alternative setups -that avoid "preview" checkpoints: +Sticking with the basic idea of epochs, there are a couple alternative setups +that avoid "preview" epochs: - Rather than locking in a set of deprecations up front, we could provide "stable channel feature gates", allowing users to opt in to features of the - next checkpoint in a fine-grained way, which may introduce new errors. When - the new checkpoint is released, one would then upgrade to it and remove all of + next epoch in a fine-grained way, which may introduce new errors. When + the new epoch is released, one would then upgrade to it and remove all of the gates. - The main downside is lack of clarity about what the current "stable Rust" @@ -494,25 +532,25 @@ that avoid "preview" checkpoints: coarse-grained flag at the outset. - We could stabilize features using undesirable syntax at first, making way for - better syntax only when the new checkpoint is released, then deprecate the "bad" + better syntax only when the new epoch is released, then deprecate the "bad" syntax in favor of the "good" syntax. - For `catch`, this would look like: - Stabilize `do catch`. - Deprecate `catch` as an identifier. - - Ship new checkpoint, which makes `catch` a keyword. + - Ship new epoch, which makes `catch` a keyword. - Stabilize `catch` as a syntax for the `catch` feature, and deprecate `do catch` in favor of it. - This approach involves significantly more churn than the one proposed in the RFC. - Finally, we could just wait to stabilize features like `catch` until the - moment the checkpoint is released. + moment the epoch is released. - This approach seems likely to introduce all the downsides of "feature-based" - releases, making the checkpoint release extremely high stakes, and preventing - usage of "ready to go" feature on the stable channel until the checkpoint is + releases, making the epoch release extremely high stakes, and preventing + usage of "ready to go" feature on the stable channel until the epoch is shipped. -## Alternatives to checkpoints +## Alternatives to epochs The larger alternatives include, of course, not trying to solve the problems laid out in the motivation, and instead finding creative alternatives. @@ -541,14 +579,14 @@ what kinds of changes we want to allow. Downsides: soundness holes? In many cases these are more disruptive than introducing a new keyword. -- Is "checkpoint" the right key in Cargo.toml? Would it be more clear to just say `rust = "2018"`? +- Is "epoch" the right key in Cargo.toml? Would it be more clear to just say `rust = "2019"`? -- Do we want to require a `rustfix` for all checkpoint changes? +- Do we want to require a `rustfix` for all epoch changes? -- Will we ever consider dropping support for very old checkpoints? Given the +- Will we ever consider dropping support for very old epochs? Given the constraints in this RFC, it seems unlikely to ever be worth it. -- Should `rustc` default to the latest checkpoint instead? +- Should `rustc` default to the latest epoch instead? - How do we handle macros, particularly procedural macros, that may mix source - from multiple checkpoints? + from multiple epochs? From 614c7247f5be1606f82886a28c2ea8d59b53630e Mon Sep 17 00:00:00 2001 From: Aaron Turon Date: Thu, 31 Aug 2017 15:37:43 -0700 Subject: [PATCH 14/16] a -> an --- text/0000-checkpoints.md | 87 +++++++++++----------------------------- 1 file changed, 24 insertions(+), 63 deletions(-) diff --git a/text/0000-checkpoints.md b/text/0000-checkpoints.md index a6497a7d85b..99d5fde0651 100644 --- a/text/0000-checkpoints.md +++ b/text/0000-checkpoints.md @@ -107,13 +107,13 @@ and represent a release in which several elements come together: - The standard library and other core ecosystem crates have been updated to use the new features as appropriate. - A new edition of the Rust Cookbook has been prepared, providing an updated set of guidance for which crates to use for various tasks. -The precise list of elements going into a epoch is expected to evolve over +The precise list of elements going into an epoch is expected to evolve over time, as the Rust project and ecosystem grow. Sometimes a feature we want to make available in a new epoch would require backwards-incompatible changes, like introducing a new keyword. In that case, the feature is only available by explicitly opting in to the new -epoch. Each **crate** can declare a epoch in its `Cargo.toml` like +epoch. Each **crate** can declare an epoch in its `Cargo.toml` like `epoch = "2019"`; otherwise it is assumed to have epoch 2015, coinciding with Rust 1.0. Thus, new epochs are *opt in*, and the dependencies of a crate may use older or newer epochs than the crate @@ -153,7 +153,7 @@ the next epoch**. Rather, epochs, as their name suggests, represent a point of *global coherence*, where documentation, tooling, the compiler, and core libraries are all fully aligned on a new set of (already stabilized!) features and other -changes. This alignment can happen incrementally, but a epoch signals that +changes. This alignment can happen incrementally, but an epoch signals that it *has* happened. At the same time, epochs serve as a rallying point for making sure this @@ -182,7 +182,7 @@ impetus for coming together as a community and putting together a polished produ There's an important tension around stabilization and epochs: -- We want to enable new features, including those that require a epoch +- We want to enable new features, including those that require an epoch opt-in, to be available on the stable channel as they become ready. - That means that we must enable some form of the opt in before the epoch @@ -193,36 +193,23 @@ There's an important tension around stabilization and epochs: - That means that, once *any* form of the opt in is shipped, it cannot introduce *new* hard errors. -Thus, at some point within a epoch year, we will enable the opt-in on the +Thus, at some point within an epoch year, we will enable the opt-in on the stable release channel, which must include *all* of the hard errors that will be introduced in the next epoch, but not yet all of the stabilizations (or other artifacts that go into the full epoch release). This is the *preview period* for the epoch, which ends when a release is produced that -synchronizes all of the elements that go into a epoch and the epoch is +synchronizes all of the elements that go into an epoch and the epoch is formally announced. ## A broad policy on epoch changes There are numerous reasons to limit the scope of changes for new epochs, among them: -- **Limiting churn**. Even if you aren't *forced* to update your code, even if - there are automated tools to do so, churn is still a pain for existing - users. It also invalidates, or at least makes harder to use, existing content - on the internet, like StackOverflow answers and blog posts. And finally, it - plays against the important and hard work we've done to make Rust stable in - both reality and perception. In short, while epochs avoid *ecosystem* splits - and make churn opt-in, they do not eliminate *all* drawbacks. - -- **Limiting technical debt**. The compiler retains compatibility for old - epochs, and thus must have distinct "modes" for dealing with them. We need to - strongly limit the amount and complexity of code needed for these modes, or - the compiler will become very difficult to maintain. - -- **Limiting deep conceptual changes**. Just as we want to keep the compiler - maintainable, so too do we want to keep the conceptual model sustainable. That - is, if we make truly radical changes in a new epoch, it will be very - difficult for people to reason about code involving different epochs, or - to remember the precise differences. +- **Limiting churn**. Even if you aren't *forced* to update your code, even if there are automated tools to do so, churn is still a pain for existing users. It also invalidates, or at least makes harder to use, existing content on the internet, like StackOverflow answers and blog posts. And finally, it plays against the important and hard work we've done to make Rust stable in both reality and perception. In short, while epochs avoid *ecosystem* splits and make churn opt-in, they do not eliminate *all* drawbacks. + +- **Limiting technical debt**. The compiler retains compatibility for old epochs, and thus must have distinct "modes" for dealing with them. We need to strongly limit the amount and complexity of code needed for these modes, or the compiler will become very difficult to maintain. + +- **Limiting deep conceptual changes**. Just as we want to keep the compiler maintainable, so too do we want to keep the conceptual model sustainable. That is, if we make truly radical changes in a new epoch, it will be very difficult for people to reason about code involving different epochs, or to remember the precise differences. These lead to some hard and soft constraints. @@ -234,48 +221,24 @@ same behavior.** There are only two things a new epoch can do that a normal release cannot: - Change an existing deprecation into a hard error. - - This option is only available when the deprecation is expected to hit a - relatively small percentage of code. -- Change an existing deprecation to *deny* by default, and leverage the - corresponding lint setting to produce error messages *as if* the feature were - removed entirely. - -The second option is to be preferred whenever possible. Note that warning-free -code in one epoch might produce warnings in the next epoch, but it should still -compile successfully. - -The Rust compiler supports multiple epochs, but **must only support a single -version of "core Rust"**. We identify "core Rust" as being, roughly, MIR and the -core trait system; this specification will be made more precise over time. The -implication is that the "epoch modes" boil down to keeping around multiple -desugarings into this core Rust, which greatly limits the complexity and -technical debt involved. Similar, core Rust encompasses the core *conceptual* -model of the language, and this constraint guarantees that, even when working -with multiple epochs, those core concepts remain fixed. + - This option is only available when the deprecation is expected to hit a relatively small percentage of code. +- Change an existing deprecation to *deny* by default, and leverage the corresponding lint setting to produce error messages *as if* the feature were removed entirely. + +The second option is to be preferred whenever possible. Note that warning-free code in one epoch might produce warnings in the next epoch, but it should still compile successfully. + +The Rust compiler supports multiple epochs, but **must only support a single version of "core Rust"**. We identify "core Rust" as being, roughly, MIR and the core trait system; this specification will be made more precise over time. The implication is that the "epoch modes" boil down to keeping around multiple desugarings into this core Rust, which greatly limits the complexity and technical debt involved. Similar, core Rust encompasses the core *conceptual* model of the language, and this constraint guarantees that, even when working with multiple epochs, those core concepts remain fixed. ### Soft constraints -**TL;DR: *Most* code *with* warnings on epoch N should, after running `rustfix`, -compile on epoch N+1 and have the same behavior.** +**TL;DR: *Most* code *with* warnings on epoch N should, after running `rustfix`, compile on epoch N+1 and have the same behavior.** -The core epoch design avoids an ecosystem split, which is very important. But -it's *also* important that upgrading your own code to a new epoch is minimally -disruptive. The basic principle is that **changes that cannot be automated must -be required only in a small minority of crates, and even there not require -extensive work**. This principle applies not just to epochs, but also to cases -where we'd like to make a widespread deprecation. +The core epoch design avoids an ecosystem split, which is very important. But it's *also* important that upgrading your own code to a new epoch is minimally disruptive. The basic principle is that **changes that cannot be automated must be required only in a small minority of crates, and even there not require extensive work**. This principle applies not just to epochs, but also to cases where we'd like to make a widespread deprecation. -Note that a `rustfix` tool will never be perfect, because of conditional -compilation and code generation. So it's important that, in the cases it -inevitably fails, the manual fixes are not too onerous. +Note that a `rustfix` tool will never be perfect, because of conditional compilation and code generation. So it's important that, in the cases it inevitably fails, the manual fixes are not too onerous. -In addition, migrations that affect a large percentage of code must be "small -tweaks" (e.g. clarifying syntax), and as above, must keep the old form intact -(though they can enact a deny-by-default lint on it). +In addition, migrations that affect a large percentage of code must be "small tweaks" (e.g. clarifying syntax), and as above, must keep the old form intact (though they can enact a deny-by-default lint on it). -These are "soft constraints" because they use terms like "small minority" and -"small tweaks", which are open for interpretation. More broadly, the more -disruption involved, the higher the bar for the change. +These are "soft constraints" because they use terms like "small minority" and "small tweaks", which are open for interpretation. More broadly, the more disruption involved, the higher the bar for the change. ### Positive examples: What epoch opt-ins can do @@ -369,7 +332,7 @@ Suppose we wanted to carry out such a change. We could do it over multiple steps - First, introduce and stabilize `dyn Trait`. - Deprecate bare `Trait` syntax in favor of `dyn Trait`. -- In a epoch preview period, make it an error to use bare `Trait` syntax. +- In an epoch preview period, make it an error to use bare `Trait` syntax. - Ship the new epoch, and wait until bare `Trait` syntax is obscure. - Re-introduce bare `Trait` syntax, stabilize it, and deprecate `impl Trait` in favor of it. @@ -435,7 +398,7 @@ We'll wrap up with the full details of the mechanisms at play. - `Cargo.toml` can include an `epoch` value, which is used to pass to `rustc`. - If left off, it will assume epoch 2015. - `cargo new` will produce a `Cargo.toml` with the latest `epoch` value - (including a epoch currently in its preview period). + (including an epoch currently in its preview period). # How We Teach This [how-we-teach-this]: #how-we-teach-this @@ -581,8 +544,6 @@ what kinds of changes we want to allow. Downsides: - Is "epoch" the right key in Cargo.toml? Would it be more clear to just say `rust = "2019"`? -- Do we want to require a `rustfix` for all epoch changes? - - Will we ever consider dropping support for very old epochs? Given the constraints in this RFC, it seems unlikely to ever be worth it. From 82c6c4028c31cdc470e896cec76a2cb2c645bcc8 Mon Sep 17 00:00:00 2001 From: Aaron Turon Date: Fri, 1 Sep 2017 07:24:42 -0700 Subject: [PATCH 15/16] Minor fixes --- text/{0000-checkpoints.md => 0000-epochs.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename text/{0000-checkpoints.md => 0000-epochs.md} (99%) diff --git a/text/0000-checkpoints.md b/text/0000-epochs.md similarity index 99% rename from text/0000-checkpoints.md rename to text/0000-epochs.md index 99d5fde0651..a513524d34d 100644 --- a/text/0000-checkpoints.md +++ b/text/0000-epochs.md @@ -215,7 +215,7 @@ These lead to some hard and soft constraints. ### Hard constraints -**TL;DR: Warning-free code on epoch N should compile on epoch N+1 and have the +**TL;DR: Warning-free code on epoch N must compile on epoch N+1 and have the same behavior.** There are only two things a new epoch can do that a normal release cannot: From dcc83769270b508553ad5ba3fef53e7a74f97e3d Mon Sep 17 00:00:00 2001 From: Aaron Turon Date: Thu, 14 Sep 2017 16:23:21 -0700 Subject: [PATCH 16/16] RFC 2052: Evolving Rust through Epochs --- text/{0000-epochs.md => 2052-epochs.md} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename text/{0000-epochs.md => 2052-epochs.md} (99%) diff --git a/text/0000-epochs.md b/text/2052-epochs.md similarity index 99% rename from text/0000-epochs.md rename to text/2052-epochs.md index a513524d34d..cafbbbd295c 100644 --- a/text/0000-epochs.md +++ b/text/2052-epochs.md @@ -1,7 +1,7 @@ - Feature Name: N/A - Start Date: 2017-06-26 -- RFC PR: (leave this empty) -- Rust Issue: (leave this empty) +- RFC PR: https://github.com/rust-lang/rfcs/pull/2052 +- Rust Issue: N/A # Summary [summary]: #summary