{"action":"created","issue":{"url":"https://api.github.com/repos/rust-lang/rust/issues/21248","labels_url":"https://api.github.com/repos/rust-lang/rust/issues/21248/labels{/name}","comments_url":"https://api.github.com/repos/rust-lang/rust/issues/21248/comments","events_url":"https://api.github.com/repos/rust-lang/rust/issues/21248/events","html_url":"https://github.com/rust-lang/rust/pull/21248","id":54612283,"number":21248,"title":"Tie stability attributes to features","user":{"login":"brson","id":147214,"avatar_url":"https://avatars.githubusercontent.com/u/147214?v=3","gravatar_id":"","url":"https://api.github.com/users/brson","html_url":"https://github.com/brson","followers_url":"https://api.github.com/users/brson/followers","following_url":"https://api.github.com/users/brson/following{/other_user}","gists_url":"https://api.github.com/users/brson/gists{/gist_id}","starred_url":"https://api.github.com/users/brson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brson/subscriptions","organizations_url":"https://api.github.com/users/brson/orgs","repos_url":"https://api.github.com/users/brson/repos","events_url":"https://api.github.com/users/brson/events{/privacy}","received_events_url":"https://api.github.com/users/brson/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"alexcrichton","id":64996,"avatar_url":"https://avatars.githubusercontent.com/u/64996?v=3","gravatar_id":"","url":"https://api.github.com/users/alexcrichton","html_url":"https://github.com/alexcrichton","followers_url":"https://api.github.com/users/alexcrichton/followers","following_url":"https://api.github.com/users/alexcrichton/following{/other_user}","gists_url":"https://api.github.com/users/alexcrichton/gists{/gist_id}","starred_url":"https://api.github.com/users/alexcrichton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexcrichton/subscriptions","organizations_url":"https://api.github.com/users/alexcrichton/orgs","repos_url":"https://api.github.com/users/alexcrichton/repos","events_url":"https://api.github.com/users/alexcrichton/events{/privacy}","received_events_url":"https://api.github.com/users/alexcrichton/received_events","type":"User","site_admin":false},"milestone":null,"comments":35,"created_at":"2015-01-16T19:06:12Z","updated_at":"2015-01-27T23:06:09Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/rust-lang/rust/pulls/21248","html_url":"https://github.com/rust-lang/rust/pull/21248","diff_url":"https://github.com/rust-lang/rust/pull/21248.diff","patch_url":"https://github.com/rust-lang/rust/pull/21248.patch"},"body":"This implements the remaining bits of 'feature staging', as described in [RFC 507](https://github.com/rust-lang/rfcs/blob/master/text/0507-release-channels.md).\r\n\r\nThis is not quite done, but the substance of the work is complete so submitting for early review.\r\n\r\nKey changes:\r\n* `unstable`, `stable` and `deprecated` attributes all require 'feature' and 'since', and support an optional 'reason'.\r\n* The `unstable` lint is removed.\r\n* A new 'stability checking' pass warns when a used unstable library feature has not been activated with the `feature` attribute. At 1.0 beta this will become an error.\r\n* A new 'unused feature checking' pass emits a lint ('unused_feature', renamed from 'unknown_feature') for any features that were activated but not used.\r\n* A new tidy script `featureck.py` performs some global sanity checking, particularly that 'since' numbers agree, and also prints out a summary of features.\r\n\r\nDifferences from RFC:\r\n* As implemented `unstable` requires a `since` attribute. I do not know if this is useful. I included it in the original sed script and just left it.\r\n* RFC didn't specify the name of the optional 'reason' attribute.\r\n* This continues to use 'unstable', 'stable' and 'deprecated' names (the 'nice' names) instead of 'staged_unstable', but only activates them with the crate-level 'staged_api' attribute.\r\n\r\nI intend to update the RFC based on the outcome of this PR.\r\n\r\nIssues:\r\n* The unused feature check doesn't account for language features - i.e. you can activate a language feature, not use it, and not get the error.\r\n\r\nOpen questions:\r\n* All unstable and deprecated features are named 'unnamed_feature', which i picked just because it is uniquely greppable. This is the 'catch-all' feature. What should it be?\r\n* All stable features are named 'grandfathered'. What should this be?\r\n\r\nTODO:\r\n* Add check that all `deprecated` attributes are paired with a `stable` attribute in order to preserve the knowledge about when a feature became stable.\r\n* Update rustdoc in various ways.\r\n* Remove obsolete stability discussion from reference.\r\n* Add features for 'path', 'io', 'os', 'hash' and 'rand'.\r\n\r\ncc #20445 @alexcrichton @aturon "},"comment":{"url":"https://api.github.com/repos/rust-lang/rust/issues/comments/71747846","html_url":"https://github.com/rust-lang/rust/pull/21248#issuecomment-71747846","issue_url":"https://api.github.com/repos/rust-lang/rust/issues/21248","id":71747846,"user":{"login":"brson","id":147214,"avatar_url":"https://avatars.githubusercontent.com/u/147214?v=3","gravatar_id":"","url":"https://api.github.com/users/brson","html_url":"https://github.com/brson","followers_url":"https://api.github.com/users/brson/followers","following_url":"https://api.github.com/users/brson/following{/other_user}","gists_url":"https://api.github.com/users/brson/gists{/gist_id}","starred_url":"https://api.github.com/users/brson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brson/subscriptions","organizations_url":"https://api.github.com/users/brson/orgs","repos_url":"https://api.github.com/users/brson/repos","events_url":"https://api.github.com/users/brson/events{/privacy}","received_events_url":"https://api.github.com/users/brson/received_events","type":"User","site_admin":false},"created_at":"2015-01-27T23:06:09Z","updated_at":"2015-01-27T23:06:09Z","body":"@bors: r=alexcrichton 7122 p=22"}}