{"action":"created","comment":{"url":"https://api.github.com/repos/rust-lang/rfcs/pulls/comments/71221252","id":71221252,"diff_hunk":"@@ -0,0 +1,552 @@\n+- Feature Name: `rustc_macros`\n+- Start Date: 2016-07-14\n+- RFC PR: (leave this empty)\n+- Rust Issue: (leave this empty)\n+\n+# Summary\n+[summary]: #summary\n+\n+Extract a very small sliver of today's procedural macro system in the compiler,\n+just enough to get basic features like custom derive working, to have an\n+eventually stable API. Ensure that these features will not pose a maintenance\n+burden on the compiler but also don't try to provide enough features for the\n+\"perfect macro system\" at the same time. Overall, this should be considered an\n+incremental step towards an official \"macros 2.0\".\n+\n+# Motivation\n+[motivation]: #motivation\n+\n+Some large projects in the ecosystem today, such as [serde] and [diesel],\n+effectively require the nightly channel of the Rust compiler. Although most\n+projects have an alternative to work on stable Rust, this tends to be far less\n+ergonomic and comes with its own set of downsides, and empirically it has not\n+been enough to push the nightly users to stable as well.\n+\n+[serde]: https://github.com/serde-rs/serde\n+[diesel]: http://diesel.rs/\n+\n+These large projects, however, are often the face of Rust to external users.\n+Common knowledge is that fast serialization is done using serde, but to others\n+this just sounds likes \"fast Rust needs nightly\". Over time this persistent\n+thought process creates a culture of \"well to be serious you require nightly\"\n+and a general feeling that Rust is not \"production ready\".\n+\n+The good news, however, is that this class of projects which require nightly\n+Rust almost all require nightly for the reason of procedural macros. Even\n+better, the full functionality of procedural macros is rarely needed, only\n+custom derive! Even better, custom derive typically doesn't *require* the features\n+one would expect from a full-on macro system, such as hygiene and modularity,\n+that normal procedural macros typically do. The purpose of this RFC, as a\n+result, is to provide these crates a method of working on stable Rust with the\n+desired ergonomics one would have on nightly otherwise.\n+\n+Unfortunately today's procedural macros are not without their architectural\n+shortcomings as well. For example they're defined and imported with arcane\n+syntax and don't participate in hygiene very well. To address these issues,\n+there are a number of RFCs to develop a \"macros 2.0\" story:\n+\n+* [Changes to name resolution](https://github.com/rust-lang/rfcs/pull/1560)\n+* [Macro naming and modularisation](https://github.com/rust-lang/rfcs/pull/1561)\n+* [Procedural macros](https://github.com/rust-lang/rfcs/pull/1566)\n+* [Macros by example 2.0](https://github.com/rust-lang/rfcs/pull/1584)\n+\n+Many of these designs, however, will require a significant amount of work to not\n+only implement but also a significant amount of work to stabilize. The current\n+understanding is that these improvements are on the time scale of years, whereas\n+the problem of nightly Rust is today!\n+\n+As a result, it is an explicit non-goal of this RFC to architecturally improve\n+on the current procedural macro system. The drawbacks of today's procedural\n+macros will be the same as those proposed in this RFC. The major goal here is\n+to simply minimize the exposed surface area between procedural macros and the\n+compiler to ensure that the interface is well defined and can be stably\n+implemented in future versions of the compiler as well.\n+\n+Put another way, we currently have macros 1.0 unstable today, we're shooting\n+for macros 2.0 stable in the far future, but this RFC is striking a middle\n+ground at macros 1.1 today!\n+\n+# Detailed design\n+[design]: #detailed-design\n+\n+First, before looking how we're going to expose procedural macros, let's\n+take a detailed look at how they work today.\n+\n+### Today's procedural macros\n+\n+A procedural macro today is loaded into a crate with the `#![plugin(foo)]`\n+annotation at the crate root. This in turn looks for a crate named `foo` [via\n+the same crate loading mechanisms][loader] as `extern crate`, except [with the\n+restriction][host-restriction] that the target triple of the crate must be the\n+same as the target the compiler was compiled for. In other words, if you're on\n+x86 compiling to ARM, macros must also be compiled for x86.\n+\n+[loader]: https://github.com/rust-lang/rust/blob/78d49bfac2bbcd48de522199212a1209f498e834/src/librustc_metadata/creader.rs#L480\n+[host-restriction]: https://github.com/rust-lang/rust/blob/78d49bfac2bbcd48de522199212a1209f498e834/src/librustc_metadata/creader.rs#L494\n+\n+Once a crate is found, it's required to be a dynamic library as well, and once\n+that's all verified the compiler [opens it up with `dlopen`][dlopen] (or the\n+equivalent therein). After loading, the compiler will [look for a special\n+symbol][symbol] in the dynamic library, and then call it with a macro context.\n+\n+[dlopen]: https://github.com/rust-lang/rust/blob/78d49bfac2bbcd48de522199212a1209f498e834/src/librustc_plugin/load.rs#L124\n+[symbol]: https://github.com/rust-lang/rust/blob/78d49bfac2bbcd48de522199212a1209f498e834/src/librustc_plugin/load.rs#L136-L139\n+\n+So as we've seen macros are compiled as normal crates into dynamic libraries.\n+One function in the crate is tagged with `#[plugin_registrar]` which gets wired\n+up to this \"special symbol\" the compiler wants. When the function is called with\n+a macro context, it uses the passed in [plugin registry][registry] to register\n+custom macros, attributes, etc.\n+\n+[registry]: https://github.com/rust-lang/rust/blob/78d49bfac2bbcd48de522199212a1209f498e834/src/librustc_plugin/registry.rs#L30-L69\n+\n+After a macro is registered, the compiler will then continue the normal process\n+of expanding a crate. Whenever the compiler encounters this macro it will call\n+this registration with essentially and AST and morally gets back a different\n+AST to splice in or replace.\n+\n+### Today's drawbacks\n+\n+This expansion process suffers from many of the downsides mentioned in the\n+motivation section, such as a lack of hygiene, a lack of modularity, and the\n+inability to import macros as you would normally other functionality in the\n+module system.\n+\n+Additionally, though, it's essentially impossible to ever *stabilize* because\n+the interface to the compiler is... the compiler! We clearly want to make\n+changes to the compiler over time, so this isn't acceptable. To have a stable\n+interface we'll need to cut down this surface area *dramatically* to a curated\n+set of known-stable APIs.\n+\n+Somewhat more subtly, the technical ABI of procedural macros is also exposed\n+quite thinly today as well. The implementation detail of dynamic libraries, and\n+especially that both the compiler and the macro dynamically link to libraries\n+like libsyntax, cannot be changed. This precludes, for example, a completely\n+statically linked compiler (e.g. compiled for `x86_64-unknown-linux-musl`).\n+Another goal of this RFC will also be to hide as many of these technical\n+details as possible, allowing the compiler to flexibly change how it interfaces\n+to macros.\n+\n+## Macros 1.1\n+\n+Ok, with the background knowledge of what procedural macros are today, let's\n+take a look at how we can solve the major problems blocking its stabilization:\n+\n+* Sharing an API of the entire compiler\n+* Frozen interface between the compiler and macros\n+\n+### `librustc_macro`","path":"text/0000-macros-1.1.md","position":138,"original_position":138,"commit_id":"ea504d4ef90e1edbdb9a019c1016d9c39d84580a","original_commit_id":"e2981fca797bf27713f566a6d24320be53c65aa0","user":{"login":"eddyb","id":77424,"avatar_url":"https://avatars.githubusercontent.com/u/77424?v=3","gravatar_id":"","url":"https://api.github.com/users/eddyb","html_url":"https://github.com/eddyb","followers_url":"https://api.github.com/users/eddyb/followers","following_url":"https://api.github.com/users/eddyb/following{/other_user}","gists_url":"https://api.github.com/users/eddyb/gists{/gist_id}","starred_url":"https://api.github.com/users/eddyb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eddyb/subscriptions","organizations_url":"https://api.github.com/users/eddyb/orgs","repos_url":"https://api.github.com/users/eddyb/repos","events_url":"https://api.github.com/users/eddyb/events{/privacy}","received_events_url":"https://api.github.com/users/eddyb/received_events","type":"User","site_admin":false},"body":"This name is unfortunate, couldn't we use `libmacro`?","created_at":"2016-07-18T20:19:23Z","updated_at":"2016-07-18T20:19:23Z","html_url":"https://github.com/rust-lang/rfcs/pull/1681#discussion_r71221252","pull_request_url":"https://api.github.com/repos/rust-lang/rfcs/pulls/1681","_links":{"self":{"href":"https://api.github.com/repos/rust-lang/rfcs/pulls/comments/71221252"},"html":{"href":"https://github.com/rust-lang/rfcs/pull/1681#discussion_r71221252"},"pull_request":{"href":"https://api.github.com/repos/rust-lang/rfcs/pulls/1681"}}},"pull_request":{"url":"https://api.github.com/repos/rust-lang/rfcs/pulls/1681","id":77871118,"html_url":"https://github.com/rust-lang/rfcs/pull/1681","diff_url":"https://github.com/rust-lang/rfcs/pull/1681.diff","patch_url":"https://github.com/rust-lang/rfcs/pull/1681.patch","issue_url":"https://api.github.com/repos/rust-lang/rfcs/issues/1681","number":1681,"state":"open","locked":false,"title":"RFC: Macros 1.1","user":{"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},"body":"Extract a very small sliver of today's procedural macro system in the compiler,\r\njust enough to get basic features like custom derive working, to have an\r\neventually stable API. Ensure that these features will not pose a maintenance\r\nburden on the compiler but also don't try to provide enough features for the\r\n\"perfect macro system\" at the same time. Overall, this should be considered an\r\nincremental step towards an official \"plugins 2.0\".\r\n\r\n[Rendered](https://github.com/alexcrichton/rfcs/blob/macros-1.1/text/0000-macros-1.1.md)","created_at":"2016-07-18T20:12:47Z","updated_at":"2016-07-18T20:19:23Z","closed_at":null,"merged_at":null,"merge_commit_sha":"98bfd5089149a8ced2d7b297dab5f0bb7db67467","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},"assignees":[{"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,"commits_url":"https://api.github.com/repos/rust-lang/rfcs/pulls/1681/commits","review_comments_url":"https://api.github.com/repos/rust-lang/rfcs/pulls/1681/comments","review_comment_url":"https://api.github.com/repos/rust-lang/rfcs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rust-lang/rfcs/issues/1681/comments","statuses_url":"https://api.github.com/repos/rust-lang/rfcs/statuses/ea504d4ef90e1edbdb9a019c1016d9c39d84580a","head":{"label":"alexcrichton:macros-1.1","ref":"macros-1.1","sha":"ea504d4ef90e1edbdb9a019c1016d9c39d84580a","user":{"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},"repo":{"id":17584422,"name":"rfcs","full_name":"alexcrichton/rfcs","owner":{"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},"private":false,"html_url":"https://github.com/alexcrichton/rfcs","description":"RFCs for changes to Rust","fork":true,"url":"https://api.github.com/repos/alexcrichton/rfcs","forks_url":"https://api.github.com/repos/alexcrichton/rfcs/forks","keys_url":"https://api.github.com/repos/alexcrichton/rfcs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/alexcrichton/rfcs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/alexcrichton/rfcs/teams","hooks_url":"https://api.github.com/repos/alexcrichton/rfcs/hooks","issue_events_url":"https://api.github.com/repos/alexcrichton/rfcs/issues/events{/number}","events_url":"https://api.github.com/repos/alexcrichton/rfcs/events","assignees_url":"https://api.github.com/repos/alexcrichton/rfcs/assignees{/user}","branches_url":"https://api.github.com/repos/alexcrichton/rfcs/branches{/branch}","tags_url":"https://api.github.com/repos/alexcrichton/rfcs/tags","blobs_url":"https://api.github.com/repos/alexcrichton/rfcs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/alexcrichton/rfcs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/alexcrichton/rfcs/git/refs{/sha}","trees_url":"https://api.github.com/repos/alexcrichton/rfcs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/alexcrichton/rfcs/statuses/{sha}","languages_url":"https://api.github.com/repos/alexcrichton/rfcs/languages","stargazers_url":"https://api.github.com/repos/alexcrichton/rfcs/stargazers","contributors_url":"https://api.github.com/repos/alexcrichton/rfcs/contributors","subscribers_url":"https://api.github.com/repos/alexcrichton/rfcs/subscribers","subscription_url":"https://api.github.com/repos/alexcrichton/rfcs/subscription","commits_url":"https://api.github.com/repos/alexcrichton/rfcs/commits{/sha}","git_commits_url":"https://api.github.com/repos/alexcrichton/rfcs/git/commits{/sha}","comments_url":"https://api.github.com/repos/alexcrichton/rfcs/comments{/number}","issue_comment_url":"https://api.github.com/repos/alexcrichton/rfcs/issues/comments{/number}","contents_url":"https://api.github.com/repos/alexcrichton/rfcs/contents/{+path}","compare_url":"https://api.github.com/repos/alexcrichton/rfcs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/alexcrichton/rfcs/merges","archive_url":"https://api.github.com/repos/alexcrichton/rfcs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/alexcrichton/rfcs/downloads","issues_url":"https://api.github.com/repos/alexcrichton/rfcs/issues{/number}","pulls_url":"https://api.github.com/repos/alexcrichton/rfcs/pulls{/number}","milestones_url":"https://api.github.com/repos/alexcrichton/rfcs/milestones{/number}","notifications_url":"https://api.github.com/repos/alexcrichton/rfcs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/alexcrichton/rfcs/labels{/name}","releases_url":"https://api.github.com/repos/alexcrichton/rfcs/releases{/id}","deployments_url":"https://api.github.com/repos/alexcrichton/rfcs/deployments","created_at":"2014-03-10T06:59:41Z","updated_at":"2016-07-15T18:19:57Z","pushed_at":"2016-07-18T20:18:45Z","git_url":"git://github.com/alexcrichton/rfcs.git","ssh_url":"git@github.com:alexcrichton/rfcs.git","clone_url":"https://github.com/alexcrichton/rfcs.git","svn_url":"https://github.com/alexcrichton/rfcs","homepage":"","size":3092,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":1,"forks":3,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"rust-lang:master","ref":"master","sha":"4ad2de6426e0af679154f225d5995f6345773221","user":{"login":"rust-lang","id":5430905,"avatar_url":"https://avatars.githubusercontent.com/u/5430905?v=3","gravatar_id":"","url":"https://api.github.com/users/rust-lang","html_url":"https://github.com/rust-lang","followers_url":"https://api.github.com/users/rust-lang/followers","following_url":"https://api.github.com/users/rust-lang/following{/other_user}","gists_url":"https://api.github.com/users/rust-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/rust-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rust-lang/subscriptions","organizations_url":"https://api.github.com/users/rust-lang/orgs","repos_url":"https://api.github.com/users/rust-lang/repos","events_url":"https://api.github.com/users/rust-lang/events{/privacy}","received_events_url":"https://api.github.com/users/rust-lang/received_events","type":"Organization","site_admin":false},"repo":{"id":17527989,"name":"rfcs","full_name":"rust-lang/rfcs","owner":{"login":"rust-lang","id":5430905,"avatar_url":"https://avatars.githubusercontent.com/u/5430905?v=3","gravatar_id":"","url":"https://api.github.com/users/rust-lang","html_url":"https://github.com/rust-lang","followers_url":"https://api.github.com/users/rust-lang/followers","following_url":"https://api.github.com/users/rust-lang/following{/other_user}","gists_url":"https://api.github.com/users/rust-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/rust-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rust-lang/subscriptions","organizations_url":"https://api.github.com/users/rust-lang/orgs","repos_url":"https://api.github.com/users/rust-lang/repos","events_url":"https://api.github.com/users/rust-lang/events{/privacy}","received_events_url":"https://api.github.com/users/rust-lang/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rust-lang/rfcs","description":"RFCs for changes to Rust","fork":false,"url":"https://api.github.com/repos/rust-lang/rfcs","forks_url":"https://api.github.com/repos/rust-lang/rfcs/forks","keys_url":"https://api.github.com/repos/rust-lang/rfcs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rust-lang/rfcs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rust-lang/rfcs/teams","hooks_url":"https://api.github.com/repos/rust-lang/rfcs/hooks","issue_events_url":"https://api.github.com/repos/rust-lang/rfcs/issues/events{/number}","events_url":"https://api.github.com/repos/rust-lang/rfcs/events","assignees_url":"https://api.github.com/repos/rust-lang/rfcs/assignees{/user}","branches_url":"https://api.github.com/repos/rust-lang/rfcs/branches{/branch}","tags_url":"https://api.github.com/repos/rust-lang/rfcs/tags","blobs_url":"https://api.github.com/repos/rust-lang/rfcs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rust-lang/rfcs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rust-lang/rfcs/git/refs{/sha}","trees_url":"https://api.github.com/repos/rust-lang/rfcs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rust-lang/rfcs/statuses/{sha}","languages_url":"https://api.github.com/repos/rust-lang/rfcs/languages","stargazers_url":"https://api.github.com/repos/rust-lang/rfcs/stargazers","contributors_url":"https://api.github.com/repos/rust-lang/rfcs/contributors","subscribers_url":"https://api.github.com/repos/rust-lang/rfcs/subscribers","subscription_url":"https://api.github.com/repos/rust-lang/rfcs/subscription","commits_url":"https://api.github.com/repos/rust-lang/rfcs/commits{/sha}","git_commits_url":"https://api.github.com/repos/rust-lang/rfcs/git/commits{/sha}","comments_url":"https://api.github.com/repos/rust-lang/rfcs/comments{/number}","issue_comment_url":"https://api.github.com/repos/rust-lang/rfcs/issues/comments{/number}","contents_url":"https://api.github.com/repos/rust-lang/rfcs/contents/{+path}","compare_url":"https://api.github.com/repos/rust-lang/rfcs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rust-lang/rfcs/merges","archive_url":"https://api.github.com/repos/rust-lang/rfcs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rust-lang/rfcs/downloads","issues_url":"https://api.github.com/repos/rust-lang/rfcs/issues{/number}","pulls_url":"https://api.github.com/repos/rust-lang/rfcs/pulls{/number}","milestones_url":"https://api.github.com/repos/rust-lang/rfcs/milestones{/number}","notifications_url":"https://api.github.com/repos/rust-lang/rfcs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rust-lang/rfcs/labels{/name}","releases_url":"https://api.github.com/repos/rust-lang/rfcs/releases{/id}","deployments_url":"https://api.github.com/repos/rust-lang/rfcs/deployments","created_at":"2014-03-07T21:29:00Z","updated_at":"2016-07-16T09:27:10Z","pushed_at":"2016-07-18T20:18:46Z","git_url":"git://github.com/rust-lang/rfcs.git","ssh_url":"git@github.com:rust-lang/rfcs.git","clone_url":"https://github.com/rust-lang/rfcs.git","svn_url":"https://github.com/rust-lang/rfcs","homepage":"","size":6433,"stargazers_count":681,"watchers_count":681,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":330,"mirror_url":null,"open_issues_count":690,"forks":330,"open_issues":690,"watchers":681,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rust-lang/rfcs/pulls/1681"},"html":{"href":"https://github.com/rust-lang/rfcs/pull/1681"},"issue":{"href":"https://api.github.com/repos/rust-lang/rfcs/issues/1681"},"comments":{"href":"https://api.github.com/repos/rust-lang/rfcs/issues/1681/comments"},"review_comments":{"href":"https://api.github.com/repos/rust-lang/rfcs/pulls/1681/comments"},"review_comment":{"href":"https://api.github.com/repos/rust-lang/rfcs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rust-lang/rfcs/pulls/1681/commits"},"statuses":{"href":"https://api.github.com/repos/rust-lang/rfcs/statuses/ea504d4ef90e1edbdb9a019c1016d9c39d84580a"}}}}
{"actor":{"display_login":"eddyb"}}