"Epoch" vs "era"

I don’t like “era” because it’s such a commonly used word. If I heard “the Rust 2015 era” I’d never guess this had a technical meaning - it just sounds like you mean “the state of the Rust language and community in 2015” (and “a new Rust era” would just sound like someone’s excited about any big Rust news, e.g. a jump in adoption in industry. It definitely doesn’t have a connotation of a new compiler version). “Epoch” is at least unusual enough that it must mean something technical.

Aside: until I read all the discussion around the epochs suggestion it had never crossed my mind that “epoch” had any pronounciations other than “e-pock”!


generation, chapter, cycle…? “Rust Gen 2018”

It’s unfortunate that “epoch” has issues. Era is okay but I agree strongly with @theotherphil. To me, “2018 era” also sounds like it ends at the end of 2018; somewhat less so with “2018 epoch”. Maybe it needs to be a more single-ended period of time, like… embark, open, launch, idk. At the risk of being too negative, it could also mark the close of the previous epoch: deprecation, cut.

I also agree that it doesn’t matter a lot since people will talk about “Rust 2018”.

Aside: I want to suggest that Rust2018 or Rust18 might be more googlable than Rust 2018 (compare: C++11).

EDIT: “Rust 2018+ Era”?

1 Like

Edition, :heart: when a specific word is required, but mostly just Rust 2018, in common parlance.

Era refers to the times themselves (e.g. the Victorian era). Edition refers to the Rust programming language itself.

Era is usually used to describe long periods of time. I don’t think I’ve ever heard the term combined with a specific year before, i.e. The 2018 era.


"Era" sounds less like jargon to me as well, but I see that as negative: it makes it less obvious that we're using it as jargon! As others have said, I'd expect "Rust's 2018 era" to literally refer to the time around 2018, not any specific technical concept.

I like "edition"…


I personally prefer epoch to era. Era sounds like it is something that spans decades at least and has a very historical sound to me. I think epoch is fine and edition is fine too. People are probably going to say “Rust 2018” or “in the 2018 version”, like they do for C and C++, anyway.


Why is this important? Maybe internally, because we'll tend to talk about the set of specific upgraded warnings as being "on the 2018 [edition/epoch/whatever]," but in marketing it is the release the matters.

What's great about edition is that's essentially a synonym for version. That leads directly into the "so why isn't it a semver bump," and then we explain why not. Epoch and era sound like we've created a whole complicated new system for versioning unlike anything before, when in fact we're just doing what many other language implementations do. This seems like its tripping users up a lot.


@withoutboats’s comment is persuasive to me (I didn’t have any opinions either way beforehand), +1 for “edition”.

1 Like

Some way too nuanced thoughts on epoch vs era: to me (a non-native speaker that has not looked either of these words up yet), epoch evokes more of a notion of a clear starting point and going on from there, while era is more of a period with start and end dates, both of which may be more fuzzy than an epoch starting point would be.

In that sense, epoch would be better to define and put out a clear new product (which I think was one of the original goals) and would perhaps also make it clearer that old epochs will continue to be supported forever. Era perhaps makes it clearer that the era will in many ways wind down as the next era starts.

That said, I also really like the idea of using edition for this.

How about using “syntax” as in “the Rust 2018 syntax”?

This naming would make it obvious that only the syntax changes and there is full compatibility between crates or files written in different syntaxes.

As - as far as I understood - 2018 Rust could also remove deprecated stdlib methods, maybe “profile” would be better.

Profile doesn’t market well, though.

That's incorrect, because it would no longer be able to compile Rust 2015 code.

Technically, could an API not just have a #[discontinued_in(2018)] marker making it unavailable for use in later epochs?

It could, and in fact we do plan to lift the lint level on epoch boundaries (so these APIs would be deny by default), but it's unclear to me why we'd want to do something stronger than a lint.

@ag_dubs points out that these last few comments are veering away from the core bikeshed, sorry for steering in that direction!

Well, effectively, this is as good as removing them from the view of usage.

Which kind of supports my point: it's definitely not a "2018 syntax" only, but more of a "2018 profile".

I don't like both of those, though.

Now that people bring up “edition”, I think it fits a lot better than epoch or era. It does not imply lack of backwards-compatibility and seems consistent and easily understandable for other people. Also it seems to highlight that a certain edition will most likely have certain ergonomics or idioms that identify it, whereas epoch/era seems too general (think pre-1.0 era, pre-NLL era and similar).


Era definitely has better connotations. That being said, as someone else suggested, EDITION would be even better Some other alternatives.

  • Rust 2018 Edition
  • Rust 2018 Epoch
  • Rust 2018 Era
  • Rust 2018 Version
  • Rust 2018 Release
  • Rust 2018 General Availability (GA)
  • Rust 2018 Full Release (FR)
  • Rust 2018 Comprehensive Release (CR)
  • Rust 2018 Coordinated Release (CR)
  • Rust 2018 Coordinated General Release (CGR)
  • Rust 2018 Coordinated Release Edition (CRE)
  • Rust 2018 Coordinated Release Epoch (CRE)
  • Rust 2018 Coordinated Release Era (CRE)
  • Rust 2018 Coordinated Edition (CE)
  • Rust 2018 Coordinated Language Edition (CLE)
  • Rust 2018 Coordinated Language Edition Availability Release (CLEAR)

Of the above, I’d really like, CRE (Coordinated Release Edition). Or CE (Coordinated Edition) which harkens to CE (Common Era) which ties back nicely to the original Epoch/Era concept. Perhaps that last, “CLEAR”, could have some traction. Let’s talk about the Rust 2018 CLEAR?

The more I think about it, I think CLE is the best (which could be any of Coordinated Language Edition/Epoch/Era) as the community deems best. It makes it clear what it is, and, when using the acronym, if you follow proper writing style (which is to give the full expansion of the acronym as first introduction within a communication), you would have things like:


Rust 2018 Coordinated Language Edition (CLE) is now released. This CLE includes the following:

  • foo
  • bar
  • baz

The Rust 2018 CLE has been an a labor of love for the community…

You can download the latest releases here:

  • Windows: rust-2018-CLE.zip
  • Linux/Debian: rust-2018-CLE.deb
  • Redox: rust-2018-CLE.pkg


1 Like

Let’s not complicate this any further. This will result in people looking up CRE everytime which defeats the purpose of using the word


I must admit, Edition sounds semantically much better to me, though I was very much looking forward to an eventual “Epochalipse now!” headline in the news.

1 Like

That WOULD be Epoch!