{"action":"created","issue":{"url":"https://api.github.com/repos/WebAssembly/design/issues/486","labels_url":"https://api.github.com/repos/WebAssembly/design/issues/486/labels{/name}","comments_url":"https://api.github.com/repos/WebAssembly/design/issues/486/comments","events_url":"https://api.github.com/repos/WebAssembly/design/issues/486/events","html_url":"https://github.com/WebAssembly/design/issues/486","id":119799272,"number":486,"title":"Call Site Semantics","user":{"login":"fmccabe","id":3654349,"avatar_url":"https://avatars.githubusercontent.com/u/3654349?v=3","gravatar_id":"","url":"https://api.github.com/users/fmccabe","html_url":"https://github.com/fmccabe","followers_url":"https://api.github.com/users/fmccabe/followers","following_url":"https://api.github.com/users/fmccabe/following{/other_user}","gists_url":"https://api.github.com/users/fmccabe/gists{/gist_id}","starred_url":"https://api.github.com/users/fmccabe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fmccabe/subscriptions","organizations_url":"https://api.github.com/users/fmccabe/orgs","repos_url":"https://api.github.com/users/fmccabe/repos","events_url":"https://api.github.com/users/fmccabe/events{/privacy}","received_events_url":"https://api.github.com/users/fmccabe/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/WebAssembly/design/milestones/4","html_url":"https://github.com/WebAssembly/design/milestones/Future%20Features","labels_url":"https://api.github.com/repos/WebAssembly/design/milestones/4/labels","id":1138972,"number":4,"title":"Future Features","description":"See [here](https://github.com/WebAssembly/design/blob/master/FutureFeatures.md) for details.","creator":{"login":"sunfishcode","id":4503403,"avatar_url":"https://avatars.githubusercontent.com/u/4503403?v=3","gravatar_id":"","url":"https://api.github.com/users/sunfishcode","html_url":"https://github.com/sunfishcode","followers_url":"https://api.github.com/users/sunfishcode/followers","following_url":"https://api.github.com/users/sunfishcode/following{/other_user}","gists_url":"https://api.github.com/users/sunfishcode/gists{/gist_id}","starred_url":"https://api.github.com/users/sunfishcode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sunfishcode/subscriptions","organizations_url":"https://api.github.com/users/sunfishcode/orgs","repos_url":"https://api.github.com/users/sunfishcode/repos","events_url":"https://api.github.com/users/sunfishcode/events{/privacy}","received_events_url":"https://api.github.com/users/sunfishcode/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":8,"state":"open","created_at":"2015-05-29T00:23:22Z","updated_at":"2015-12-01T22:04:09Z","due_on":null,"closed_at":null},"comments":4,"created_at":"2015-12-01T20:19:25Z","updated_at":"2015-12-01T22:25:24Z","closed_at":null,"body":"Currently the call site does state what the convention for the call is.\r\n\r\nOne of the features of LLVM that is very useful for extensibility is that the call site explicitly declares the calling sequence of the call. I suggest that we do the same: annotate the call with a symbol that identifies the semantics of the call. For the MVP this can be something like \"C\"; but in the future, especially when supporting interactions with other languages, the call site can have other symbols."},"comment":{"url":"https://api.github.com/repos/WebAssembly/design/issues/comments/161115962","html_url":"https://github.com/WebAssembly/design/issues/486#issuecomment-161115962","issue_url":"https://api.github.com/repos/WebAssembly/design/issues/486","id":161115962,"user":{"login":"fmccabe","id":3654349,"avatar_url":"https://avatars.githubusercontent.com/u/3654349?v=3","gravatar_id":"","url":"https://api.github.com/users/fmccabe","html_url":"https://github.com/fmccabe","followers_url":"https://api.github.com/users/fmccabe/followers","following_url":"https://api.github.com/users/fmccabe/following{/other_user}","gists_url":"https://api.github.com/users/fmccabe/gists{/gist_id}","starred_url":"https://api.github.com/users/fmccabe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fmccabe/subscriptions","organizations_url":"https://api.github.com/users/fmccabe/orgs","repos_url":"https://api.github.com/users/fmccabe/repos","events_url":"https://api.github.com/users/fmccabe/events{/privacy}","received_events_url":"https://api.github.com/users/fmccabe/received_events","type":"User","site_admin":false},"created_at":"2015-12-01T22:25:24Z","updated_at":"2015-12-01T22:25:24Z","body":">Is this concerning LLVM calling conventions like GHC, HiPE, WebKit_JS, or similar calling conventions in LLVM, which are used for supporting compilers and JITs?\r\n\r\nYes, except that I am mostly interested in deeper differences in calling sequences and return conventions. So, the typical calling sequence for a lazy language like Haskell will require different assumptions around the evaluation stack. It will be different again for compiling SQL and related languages.\r\n\r\nBy explicitly marking the call site; it opens the option for interoperability between languages."}}