{"action":"created","issue":{"url":"https://api.github.com/repos/rust-lang/rfcs/issues/2052","repository_url":"https://api.github.com/repos/rust-lang/rfcs","labels_url":"https://api.github.com/repos/rust-lang/rfcs/issues/2052/labels{/name}","comments_url":"https://api.github.com/repos/rust-lang/rfcs/issues/2052/comments","events_url":"https://api.github.com/repos/rust-lang/rfcs/issues/2052/events","html_url":"https://github.com/rust-lang/rfcs/pull/2052","id":240272509,"number":2052,"title":"RFC: Evolving Rust through Epochs","user":{"login":"aturon","id":709807,"avatar_url":"https://avatars2.githubusercontent.com/u/709807?v=4","gravatar_id":"","url":"https://api.github.com/users/aturon","html_url":"https://github.com/aturon","followers_url":"https://api.github.com/users/aturon/followers","following_url":"https://api.github.com/users/aturon/following{/other_user}","gists_url":"https://api.github.com/users/aturon/gists{/gist_id}","starred_url":"https://api.github.com/users/aturon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aturon/subscriptions","organizations_url":"https://api.github.com/users/aturon/orgs","repos_url":"https://api.github.com/users/aturon/repos","events_url":"https://api.github.com/users/aturon/events{/privacy}","received_events_url":"https://api.github.com/users/aturon/received_events","type":"User","site_admin":false},"labels":[{"id":370757900,"url":"https://api.github.com/repos/rust-lang/rfcs/labels/T-core","name":"T-core","color":"bfd4f2","default":false}],"state":"open","locked":false,"assignee":{"login":"aturon","id":709807,"avatar_url":"https://avatars2.githubusercontent.com/u/709807?v=4","gravatar_id":"","url":"https://api.github.com/users/aturon","html_url":"https://github.com/aturon","followers_url":"https://api.github.com/users/aturon/followers","following_url":"https://api.github.com/users/aturon/following{/other_user}","gists_url":"https://api.github.com/users/aturon/gists{/gist_id}","starred_url":"https://api.github.com/users/aturon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aturon/subscriptions","organizations_url":"https://api.github.com/users/aturon/orgs","repos_url":"https://api.github.com/users/aturon/repos","events_url":"https://api.github.com/users/aturon/events{/privacy}","received_events_url":"https://api.github.com/users/aturon/received_events","type":"User","site_admin":false},"assignees":[{"login":"aturon","id":709807,"avatar_url":"https://avatars2.githubusercontent.com/u/709807?v=4","gravatar_id":"","url":"https://api.github.com/users/aturon","html_url":"https://github.com/aturon","followers_url":"https://api.github.com/users/aturon/followers","following_url":"https://api.github.com/users/aturon/following{/other_user}","gists_url":"https://api.github.com/users/aturon/gists{/gist_id}","starred_url":"https://api.github.com/users/aturon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aturon/subscriptions","organizations_url":"https://api.github.com/users/aturon/orgs","repos_url":"https://api.github.com/users/aturon/repos","events_url":"https://api.github.com/users/aturon/events{/privacy}","received_events_url":"https://api.github.com/users/aturon/received_events","type":"User","site_admin":false}],"milestone":null,"comments":314,"created_at":"2017-07-03T22:06:20Z","updated_at":"2017-07-19T15:01:19Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/rust-lang/rfcs/pulls/2052","html_url":"https://github.com/rust-lang/rfcs/pull/2052","diff_url":"https://github.com/rust-lang/rfcs/pull/2052.diff","patch_url":"https://github.com/rust-lang/rfcs/pull/2052.patch"},"body":"There has been a long-standing question around Rust's evolution: will there ever be a Rust 2.0 in the semver sense?\r\n\r\nThis RFC gives the answer: certainly not in the foreseeable future, and probably not ever.\r\n\r\nInstead, 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.\r\n\r\nWith 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.\r\n\r\n[stability without stagnation]: https://blog.rust-lang.org/2014/10/30/Stability.html\r\n[usual caveats]: https://github.com/rust-lang/rfcs/blob/master/text/1122-language-semver.md\r\n\r\n[Rendered](https://github.com/aturon/rfcs/blob/epochs/text/0000-epochs.md)\r\n\r\n**Update**: there's a [Request for Explanation podcast episode](https://request-for-explanation.github.io/podcast/ep2-stealing-chickens-on-the-internet/) about this RFC, which is a good way to quickly get up to speed!"},"comment":{"url":"https://api.github.com/repos/rust-lang/rfcs/issues/comments/316415673","html_url":"https://github.com/rust-lang/rfcs/pull/2052#issuecomment-316415673","issue_url":"https://api.github.com/repos/rust-lang/rfcs/issues/2052","id":316415673,"user":{"login":"DoumanAsh","id":5676053,"avatar_url":"https://avatars3.githubusercontent.com/u/5676053?v=4","gravatar_id":"","url":"https://api.github.com/users/DoumanAsh","html_url":"https://github.com/DoumanAsh","followers_url":"https://api.github.com/users/DoumanAsh/followers","following_url":"https://api.github.com/users/DoumanAsh/following{/other_user}","gists_url":"https://api.github.com/users/DoumanAsh/gists{/gist_id}","starred_url":"https://api.github.com/users/DoumanAsh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DoumanAsh/subscriptions","organizations_url":"https://api.github.com/users/DoumanAsh/orgs","repos_url":"https://api.github.com/users/DoumanAsh/repos","events_url":"https://api.github.com/users/DoumanAsh/events{/privacy}","received_events_url":"https://api.github.com/users/DoumanAsh/received_events","type":"User","site_admin":false},"created_at":"2017-07-19T15:01:19Z","updated_at":"2017-07-19T15:01:19Z","body":">I haven't completely thought through this, but perhaps one thing to consider is that if we don't release 2.0, we don't really need to communicate anything major\r\n\r\nThe idea of epoch is exactly to find a way to introduce something major(breaking change is a major even if you provide compatibility option)\r\nAnd I don't see why we shouldn't use major version step as it is intended for that purpose.\r\nIt is just practical to use semver(that already here) instead of introducing a new thing"}}
{"actor":{"display_login":"DoumanAsh"}}