{"action":"created","issue":{"url":"https://api.github.com/repos/ponylang/ponyc/issues/2012","repository_url":"https://api.github.com/repos/ponylang/ponyc","labels_url":"https://api.github.com/repos/ponylang/ponyc/issues/2012/labels{/name}","comments_url":"https://api.github.com/repos/ponylang/ponyc/issues/2012/comments","events_url":"https://api.github.com/repos/ponylang/ponyc/issues/2012/events","html_url":"https://github.com/ponylang/ponyc/pull/2012","id":240824671,"number":2012,"title":"Forbid returning and passing tuples to FFI functions","user":{"login":"Praetonus","id":5193706,"avatar_url":"https://avatars2.githubusercontent.com/u/5193706?v=3","gravatar_id":"","url":"https://api.github.com/users/Praetonus","html_url":"https://github.com/Praetonus","followers_url":"https://api.github.com/users/Praetonus/followers","following_url":"https://api.github.com/users/Praetonus/following{/other_user}","gists_url":"https://api.github.com/users/Praetonus/gists{/gist_id}","starred_url":"https://api.github.com/users/Praetonus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Praetonus/subscriptions","organizations_url":"https://api.github.com/users/Praetonus/orgs","repos_url":"https://api.github.com/users/Praetonus/repos","events_url":"https://api.github.com/users/Praetonus/events{/privacy}","received_events_url":"https://api.github.com/users/Praetonus/received_events","type":"User","site_admin":false},"labels":[{"id":467892082,"url":"https://api.github.com/repos/ponylang/ponyc/labels/changelog%20-%20changed","name":"changelog - changed","color":"ff7755","default":false},{"id":359250022,"url":"https://api.github.com/repos/ponylang/ponyc/labels/needs%20discussion%20during%20sync","name":"needs discussion during sync","color":"5319e7","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2017-07-06T02:07:26Z","updated_at":"2017-07-12T21:53:22Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/ponylang/ponyc/pulls/2012","html_url":"https://github.com/ponylang/ponyc/pull/2012","diff_url":"https://github.com/ponylang/ponyc/pull/2012.diff","patch_url":"https://github.com/ponylang/ponyc/pull/2012.patch"},"body":"Passing complex objects by value in C is hard: there are many different calling conventions depending on the platform. For example, a C compiler is allowed to split the members of an object into different parameters, or to change the return value into an out parameter.\r\n\r\nThe Pony compiler currently uses a naive implementation to pass objects to FFI functions and isn't able to use the correct calling convention for every call. Ideally, we'd want to rely on a C compiler API (like LibClang) to generate the correct signatures and calls.\r\n\r\nThis change is a temporary measure to avoid spurious FFI bugs until we have the interoperability detailed above. LLVM intrinsics are still allowed to return and be passed tuples since their signatures are defined by LLVM."},"comment":{"url":"https://api.github.com/repos/ponylang/ponyc/issues/comments/314908350","html_url":"https://github.com/ponylang/ponyc/pull/2012#issuecomment-314908350","issue_url":"https://api.github.com/repos/ponylang/ponyc/issues/2012","id":314908350,"user":{"login":"SeanTAllen","id":193596,"avatar_url":"https://avatars1.githubusercontent.com/u/193596?v=3","gravatar_id":"","url":"https://api.github.com/users/SeanTAllen","html_url":"https://github.com/SeanTAllen","followers_url":"https://api.github.com/users/SeanTAllen/followers","following_url":"https://api.github.com/users/SeanTAllen/following{/other_user}","gists_url":"https://api.github.com/users/SeanTAllen/gists{/gist_id}","starred_url":"https://api.github.com/users/SeanTAllen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SeanTAllen/subscriptions","organizations_url":"https://api.github.com/users/SeanTAllen/orgs","repos_url":"https://api.github.com/users/SeanTAllen/repos","events_url":"https://api.github.com/users/SeanTAllen/events{/privacy}","received_events_url":"https://api.github.com/users/SeanTAllen/received_events","type":"User","site_admin":false},"created_at":"2017-07-12T21:53:22Z","updated_at":"2017-07-12T21:53:22Z","body":"@aturley is really the one who needs to weigh in..."}}
{"actor":{"display_login":"SeanTAllen"}}