This sounds like a good test case for Rust’s procedure on breaking changes. For example, your own RFC PR 1122 (which, of course, is still open), as currently written / as far as I can tell, doesn’t seem to list any categories of “underspecified language semantics” that would include lifetime defaults, so it would demand that such changes wait for 2.0 except in “rare cases” (is this rare?). But if it is to be done anyway, the question comes up of the “opt out” mechanism described therein only in broad strokes.
As an outsider my preferred approach toward compatibility would be relatively hardline. I’ve stated this in a few places so I’ll avoid being long, but something like:
- Crate metadata gets a Rust version field; default is current rustc version but release-quality crates expected to specify one explicitly
- Old version gets you the old behavior - forever. If C, C++, and Java can do it…
Even if that doesn’t happen, I think that (hypothetically) introducing this change without any opt-out or auto fix mechanism (for a relatively simple change like this, they’re basically equivalent), even this close after 1.0, would be a bad precedent. 1.0 was supposed to stop the breakage…