{"action":"created","issue":{"url":"https://api.github.com/repos/fitzgen/requirements-for-wasm-debugging-capabilities/issues/1","repository_url":"https://api.github.com/repos/fitzgen/requirements-for-wasm-debugging-capabilities","labels_url":"https://api.github.com/repos/fitzgen/requirements-for-wasm-debugging-capabilities/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/fitzgen/requirements-for-wasm-debugging-capabilities/issues/1/comments","events_url":"https://api.github.com/repos/fitzgen/requirements-for-wasm-debugging-capabilities/issues/1/events","html_url":"https://github.com/fitzgen/requirements-for-wasm-debugging-capabilities/issues/1","id":320824396,"number":1,"title":"Minor comments/suggestions","user":{"login":"lukewagner","id":9660325,"avatar_url":"https://avatars1.githubusercontent.com/u/9660325?v=4","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},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-05-07T14:24:04Z","updated_at":"2018-05-07T18:15:30Z","closed_at":null,"author_association":"NONE","body":"Overall looks great, here are a few minor comments/suggestions; feel free to take or leave:\r\n* \"Must be queryable without running the debuggee program\"\r\n  * Would it make sense to refine this to say something like that this applies to the subset of queries that make sense statically?  Examples of obviously-dynamic queries might be the methods for extracting values from a live frame or the dynamic set of inlined frames (see below)\r\n* General Requirements\r\n  * Perhaps explicitly call out that the format shouldn't be depending on the Web embedding; that one should be able to implement/use the format for non-Web embeddings too?\r\n* Inlined Functions\r\n  * Could we include the interpreter use case here as a form of \"dynamic inlining\"?  I.e., the set of frames inlined doesn't necessarily need to be a static property of the pc, but there could be a method for deriving the set up inlined frames from the dynamic program state?"},"comment":{"url":"https://api.github.com/repos/fitzgen/requirements-for-wasm-debugging-capabilities/issues/comments/387154689","html_url":"https://github.com/fitzgen/requirements-for-wasm-debugging-capabilities/issues/1#issuecomment-387154689","issue_url":"https://api.github.com/repos/fitzgen/requirements-for-wasm-debugging-capabilities/issues/1","id":387154689,"user":{"login":"fitzgen","id":74571,"avatar_url":"https://avatars2.githubusercontent.com/u/74571?v=4","gravatar_id":"","url":"https://api.github.com/users/fitzgen","html_url":"https://github.com/fitzgen","followers_url":"https://api.github.com/users/fitzgen/followers","following_url":"https://api.github.com/users/fitzgen/following{/other_user}","gists_url":"https://api.github.com/users/fitzgen/gists{/gist_id}","starred_url":"https://api.github.com/users/fitzgen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fitzgen/subscriptions","organizations_url":"https://api.github.com/users/fitzgen/orgs","repos_url":"https://api.github.com/users/fitzgen/repos","events_url":"https://api.github.com/users/fitzgen/events{/privacy}","received_events_url":"https://api.github.com/users/fitzgen/received_events","type":"User","site_admin":false},"created_at":"2018-05-07T18:15:30Z","updated_at":"2018-05-07T18:15:30Z","author_association":"OWNER","body":"Thanks for the suggestions, Luke! I've added text for the second two points.\r\n\r\nRegarding the first point: some properties are certainly dynamic, but we can answer these queries with the steps the debugger must perform to answer those questions, rather than performing the steps directly.\r\n\r\nFor example, consider the query about the dynamic property \"what is the value of the source-level variable `x`?\"\r\n\r\n* Answering with (say) `42` means that the debuggee program must be running.\r\n\r\n* Answering with steps like \"to get the value of `x`, load the memory at local `$0` minus sixteen\" describes some dynamic property, but despite that doesn't require that the debuggee program is running. These steps can be inspected and manipulated by tools that are not running the debuggee program.\r\n\r\nEssentially, you could think it like the difference between\r\n\r\n```haskell\r\nvalue_of_var : Variable -> Value\r\n```\r\n\r\nand\r\n\r\n```haskell\r\nvalue_of_var : Variable -> (WasmState -> Value)\r\n```\r\n\r\nwhere the `WasmState -> Value` is expressed in some language that tools can inspect (maybe even wasm itself?).\r\n\r\nBy using this kind of approach, I think we can always maintain that the debugging capabilities can be accessed regardless whether the debuggee program is running.\r\n\r\nWhat do you think?"}}
{"actor":{"display_login":"fitzgen"}}