{"action":"created","issue":{"url":"https://api.github.com/repos/WebAssembly/design/issues/694","repository_url":"https://api.github.com/repos/WebAssembly/design","labels_url":"https://api.github.com/repos/WebAssembly/design/issues/694/labels{/name}","comments_url":"https://api.github.com/repos/WebAssembly/design/issues/694/comments","events_url":"https://api.github.com/repos/WebAssembly/design/issues/694/events","html_url":"https://github.com/WebAssembly/design/pull/694","id":156273507,"number":694,"title":"Make dropping of values explicit","user":{"login":"rossberg-chromium","id":4247099,"avatar_url":"https://avatars.githubusercontent.com/u/4247099?v=3","gravatar_id":"","url":"https://api.github.com/users/rossberg-chromium","html_url":"https://github.com/rossberg-chromium","followers_url":"https://api.github.com/users/rossberg-chromium/followers","following_url":"https://api.github.com/users/rossberg-chromium/following{/other_user}","gists_url":"https://api.github.com/users/rossberg-chromium/gists{/gist_id}","starred_url":"https://api.github.com/users/rossberg-chromium/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rossberg-chromium/subscriptions","organizations_url":"https://api.github.com/users/rossberg-chromium/orgs","repos_url":"https://api.github.com/users/rossberg-chromium/repos","events_url":"https://api.github.com/users/rossberg-chromium/events{/privacy}","received_events_url":"https://api.github.com/users/rossberg-chromium/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":21,"created_at":"2016-05-23T12:52:51Z","updated_at":"2016-05-24T15:43:30Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/WebAssembly/design/pulls/694","html_url":"https://github.com/WebAssembly/design/pull/694","diff_url":"https://github.com/WebAssembly/design/pull/694.diff","patch_url":"https://github.com/WebAssembly/design/pull/694.patch"},"body":"Luke, Ben, Dan, and I have been discussing this change for slightly simplifying Wasm, and allowing a more natural interpretation of Wasm as a stack machine. The main changes are:\r\n\r\n- Values can no longer be discarded implicitly.\r\n- Instead, there is an explicit `drop` operator.\r\n- To compensate, store operators no longer return a value.\r\n\r\nThe constructs affected by this are mainly blocks and block-like sequences. Before, all expressions in a block could yield a value, and it would just be dropped on the floor implicitly (except the last one). Now we require explicit drop operations in those cases. With stores no longer returning a value, the only places were we expect drops to actually arise are _calls_ to side-effecting functions that also return a value, but this value isn't used.\r\n\r\n(Also fixing a bunch of other out-of-date text on the way.)\r\n\r\nThe corresponding spec changes can be found here for more details:\r\n\r\n  https://github.com/WebAssembly/spec/compare/void"},"comment":{"url":"https://api.github.com/repos/WebAssembly/design/issues/comments/221313464","html_url":"https://github.com/WebAssembly/design/pull/694#issuecomment-221313464","issue_url":"https://api.github.com/repos/WebAssembly/design/issues/694","id":221313464,"user":{"login":"lukewagner","id":9660325,"avatar_url":"https://avatars.githubusercontent.com/u/9660325?v=3","gravatar_id":"","url":"https://api.github.com/users/lukewagner","html_url":"https://github.com/lukewagner","followers_url":"https://api.github.com/users/lukewagner/followers","following_url":"https://api.github.com/users/lukewagner/following{/other_user}","gists_url":"https://api.github.com/users/lukewagner/gists{/gist_id}","starred_url":"https://api.github.com/users/lukewagner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lukewagner/subscriptions","organizations_url":"https://api.github.com/users/lukewagner/orgs","repos_url":"https://api.github.com/users/lukewagner/repos","events_url":"https://api.github.com/users/lukewagner/events{/privacy}","received_events_url":"https://api.github.com/users/lukewagner/received_events","type":"User","site_admin":false},"created_at":"2016-05-24T15:43:30Z","updated_at":"2016-05-24T15:43:30Z","body":"No, it's a first tier.  But on weak mobile/IoT hardware, it may end up running code for a \"long\" time as the full optimizing compilation completes in the background.  Moreover, I think we'll see a variety of compilation schemes for wasm over time, not just beefy browsers, so when low-hanging fruit is available like this at low cost (assuming `tee_local`), I think we should take it.  Lastly, with postorder, we *almost* have a very plain interpretation of wasm bytecode as a simple stack machine; this change takes us there."}}
{"actor":{"display_login":"lukewagner"}}