{"action":"created","issue":{"url":"https://api.github.com/repos/rust-lang/rust/issues/43467","repository_url":"https://api.github.com/repos/rust-lang/rust","labels_url":"https://api.github.com/repos/rust-lang/rust/issues/43467/labels{/name}","comments_url":"https://api.github.com/repos/rust-lang/rust/issues/43467/comments","events_url":"https://api.github.com/repos/rust-lang/rust/issues/43467/events","html_url":"https://github.com/rust-lang/rust/issues/43467","id":245280784,"node_id":"MDU6SXNzdWUyNDUyODA3ODQ=","number":43467,"title":"Tracking issue for RFC 1861: Extern types","user":{"login":"aturon","id":709807,"node_id":"MDQ6VXNlcjcwOTgwNw==","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":89436934,"node_id":"MDU6TGFiZWw4OTQzNjkzNA==","url":"https://api.github.com/repos/rust-lang/rust/labels/B-RFC-approved","name":"B-RFC-approved","color":"d304cb","default":false},{"id":650846969,"node_id":"MDU6TGFiZWw2NTA4NDY5Njk=","url":"https://api.github.com/repos/rust-lang/rust/labels/C-tracking-issue","name":"C-tracking-issue","color":"f5f1fd","default":false},{"id":211668019,"node_id":"MDU6TGFiZWwyMTE2NjgwMTk=","url":"https://api.github.com/repos/rust-lang/rust/labels/T-lang","name":"T-lang","color":"bfd4f2","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":166,"created_at":"2017-07-25T04:12:37Z","updated_at":"2018-11-05T20:59:38Z","closed_at":null,"author_association":"MEMBER","body":"This is a tracking issue for [RFC 1861 \"Extern types\"](https://github.com/rust-lang/rfcs/blob/master/text/1861-extern-types.md).\r\n\r\n**Steps:**\r\n\r\n- [x] Implement the RFC (#44295)\r\n- [ ] Adjust documentation ([see instructions on forge][doc-guide])\r\n- [ ] Stabilization PR ([see instructions on forge][stabilization-guide])\r\n\r\n[stabilization-guide]: https://forge.rust-lang.org/stabilization-guide.html\r\n[doc-guide]: https://forge.rust-lang.org/stabilization-guide.html#updating-documentation\r\n\r\n**Unresolved questions:**\r\n\r\n- Should we allow generic lifetime and type parameters on extern types?\r\n  If so, how do they effect the type in terms of variance?\r\n\r\n- [In std's source](https://github.com/rust-lang/rust/blob/164619a8cfe6d376d25bd3a6a9a5f2856c8de64d/src/libstd/os/raw.rs#L59-L64), it is mentioned that LLVM expects `i8*` for C's `void*`.\r\n  We'd need to continue to hack this for the two `c_void`s in std and libc.\r\n  But perhaps this should be done across-the-board for all extern types?\r\n  Somebody should check what Clang does."},"comment":{"url":"https://api.github.com/repos/rust-lang/rust/issues/comments/436032643","html_url":"https://github.com/rust-lang/rust/issues/43467#issuecomment-436032643","issue_url":"https://api.github.com/repos/rust-lang/rust/issues/43467","id":436032643,"node_id":"MDEyOklzc3VlQ29tbWVudDQzNjAzMjY0Mw==","user":{"login":"briansmith","id":16816,"node_id":"MDQ6VXNlcjE2ODE2","avatar_url":"https://avatars0.githubusercontent.com/u/16816?v=4","gravatar_id":"","url":"https://api.github.com/users/briansmith","html_url":"https://github.com/briansmith","followers_url":"https://api.github.com/users/briansmith/followers","following_url":"https://api.github.com/users/briansmith/following{/other_user}","gists_url":"https://api.github.com/users/briansmith/gists{/gist_id}","starred_url":"https://api.github.com/users/briansmith/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/briansmith/subscriptions","organizations_url":"https://api.github.com/users/briansmith/orgs","repos_url":"https://api.github.com/users/briansmith/repos","events_url":"https://api.github.com/users/briansmith/events{/privacy}","received_events_url":"https://api.github.com/users/briansmith/received_events","type":"User","site_admin":false},"created_at":"2018-11-05T20:59:38Z","updated_at":"2018-11-05T20:59:38Z","author_association":"NONE","body":"> `#[repr(align(N))]` on the `extern type`\r\n\r\nI don't object to that idea. However, note that the lack of `#[repr(align(N))]` doesn't mean, necessarily, `1`; it more likely means \"I don't know\" or \"the alignment isn't part of the ABI\" or more generally \"the alignment requirement is a function of more than just the type of the object\"."}}
{"actor":{"display_login":"briansmith"}}