{"action":"reopened","issue":{"url":"https://api.github.com/repos/rust-lang/rust/issues/18875","labels_url":"https://api.github.com/repos/rust-lang/rust/issues/18875/labels{/name}","comments_url":"https://api.github.com/repos/rust-lang/rust/issues/18875/comments","events_url":"https://api.github.com/repos/rust-lang/rust/issues/18875/events","html_url":"https://github.com/rust-lang/rust/issues/18875","id":48404772,"number":18875,"title":"Finalize unboxed closure feature gates for 1.0","user":{"login":"nikomatsakis","id":155238,"avatar_url":"https://avatars.githubusercontent.com/u/155238?v=3","gravatar_id":"","url":"https://api.github.com/users/nikomatsakis","html_url":"https://github.com/nikomatsakis","followers_url":"https://api.github.com/users/nikomatsakis/followers","following_url":"https://api.github.com/users/nikomatsakis/following{/other_user}","gists_url":"https://api.github.com/users/nikomatsakis/gists{/gist_id}","starred_url":"https://api.github.com/users/nikomatsakis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nikomatsakis/subscriptions","organizations_url":"https://api.github.com/users/nikomatsakis/orgs","repos_url":"https://api.github.com/users/nikomatsakis/repos","events_url":"https://api.github.com/users/nikomatsakis/events{/privacy}","received_events_url":"https://api.github.com/users/nikomatsakis/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/rust-lang/rust/labels/A-closures","name":"A-closures","color":"d7e102"},{"url":"https://api.github.com/repos/rust-lang/rust/labels/P-backcompat-lang","name":"P-backcompat-lang","color":"eb6420"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/rust-lang/rust/milestones/20","labels_url":"https://api.github.com/repos/rust-lang/rust/milestones/20/labels","id":452034,"number":20,"title":"1.0","description":"This will be the first major release of Rust, where we offer some guaranteed level of support and backwards compatibility.\r\n\r\nThe significant criteria for this release are:\r\n\r\n* Language backwards compatibility - All major features are in, and in their final form. Generally, the only new language features added after this milestone must be backwards compatible, or to fix soundness holes, though we do expect to have some leeway to make small incompatible fixes that have low impact on existing code bases.\r\n\r\n* Library stability - We have a system of measuring and ensuring the stability of API's, and a significant portion of the standard library is declared stable. Stable API's will not change. Large portions of the standard library need to be stable for 1.0, including primitive types, vectors, strings, option, numerics, collections, some I/O and concurrency.\r\n\r\n* User experience - The system is polished and the presentation is complete and professional. New users have a clear path to using and learning the system. This encompasses the web site, documentation, installation, and tooling.\r\n","creator":{"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},"open_issues":12,"closed_issues":326,"state":"open","created_at":"2013-10-10T18:48:33Z","updated_at":"2015-01-10T13:07:53Z","due_on":null,"closed_at":null},"comments":5,"created_at":"2014-11-11T16:40:53Z","updated_at":"2015-01-10T13:07:53Z","closed_at":null,"body":"We do not expect to completely \"unfeature-gate\" unboxed closures for 1.0. We wish to reserve the flexibility to change a few aspects:\r\n\r\n1. Move to variadic generics in place of auto-tupling.\r\n2. Change the `A` and `R` arguments from input types to (possibly) associated types.\r\n3. Improve the coherence story with respect to fn-trait hierarchy. (cc #18835)\r\n\r\nTo this end we will adjust the features to:\r\n\r\n- [ ] Disallow references to the `Fn*` traits using angle bracket notation\r\n- [x] Disallow user impls of the `Fn*` traits\r\n- [x] Disallow direct calls to `foo.call()`\r\n- [x] Disallow parenthetical notation (`Foo(A,B) -> C`) from being used with anything other than the `Fn*` traits\r\n\r\nIn short, we permit unboxed closures to be used as if they are a language builtin, but disallow (for now) a lot of the more generic uses. We should be able to drop this feature gate shortly after 1.0.\r\n\r\ncc @pcwalton"}}