{"action":"created","issue":{"url":"https://api.github.com/repos/melt-umn/silver/issues/255","repository_url":"https://api.github.com/repos/melt-umn/silver","labels_url":"https://api.github.com/repos/melt-umn/silver/issues/255/labels{/name}","comments_url":"https://api.github.com/repos/melt-umn/silver/issues/255/comments","events_url":"https://api.github.com/repos/melt-umn/silver/issues/255/events","html_url":"https://github.com/melt-umn/silver/pull/255","id":334785937,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk2NjY2NzEx","number":255,"title":"Use reflection library to replace interface file parsers","user":{"login":"krame505","id":8467850,"node_id":"MDQ6VXNlcjg0Njc4NTA=","avatar_url":"https://avatars3.githubusercontent.com/u/8467850?v=4","gravatar_id":"","url":"https://api.github.com/users/krame505","html_url":"https://github.com/krame505","followers_url":"https://api.github.com/users/krame505/followers","following_url":"https://api.github.com/users/krame505/following{/other_user}","gists_url":"https://api.github.com/users/krame505/gists{/gist_id}","starred_url":"https://api.github.com/users/krame505/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krame505/subscriptions","organizations_url":"https://api.github.com/users/krame505/orgs","repos_url":"https://api.github.com/users/krame505/repos","events_url":"https://api.github.com/users/krame505/events{/privacy}","received_events_url":"https://api.github.com/users/krame505/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-06-22T08:11:53Z","updated_at":"2018-07-04T07:50:57Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/melt-umn/silver/pulls/255","html_url":"https://github.com/melt-umn/silver/pull/255","diff_url":"https://github.com/melt-umn/silver/pull/255.diff","patch_url":"https://github.com/melt-umn/silver/pull/255.patch"},"body":"Note that this PR includes the changes from #254 and should be merged after that.  \r\n\r\nThis uses the silver reflection/serialization/deserialization/reification library to replace our existing tedious method of pp'ing and parsing the entire environment in a custom way.  All environment data that would have been printed manually is instead wrapped into a `GrammarProperties` nonterminal, which gets reflected and serialized into the interface file.  The reverse process of deserialization and reification is used instead when loading an interface file.  \r\n\r\nThe only downside to this is that there a slight impact to performance - my guess is that this is due to the heavy use of java reflection and the runtime type checking needed to implementing `reify`.  I haven't measured it, but the initial phase when compiling Silver seems to be a couple of seconds slower on my machine.  Since this is minor compared to the amount of time spent in error checking and translation, which are unaffected by this change, this seems like a reasonable price to pay.  "},"comment":{"url":"https://api.github.com/repos/melt-umn/silver/issues/comments/402394778","html_url":"https://github.com/melt-umn/silver/pull/255#issuecomment-402394778","issue_url":"https://api.github.com/repos/melt-umn/silver/issues/255","id":402394778,"node_id":"MDEyOklzc3VlQ29tbWVudDQwMjM5NDc3OA==","user":{"login":"krame505","id":8467850,"node_id":"MDQ6VXNlcjg0Njc4NTA=","avatar_url":"https://avatars3.githubusercontent.com/u/8467850?v=4","gravatar_id":"","url":"https://api.github.com/users/krame505","html_url":"https://github.com/krame505","followers_url":"https://api.github.com/users/krame505/followers","following_url":"https://api.github.com/users/krame505/following{/other_user}","gists_url":"https://api.github.com/users/krame505/gists{/gist_id}","starred_url":"https://api.github.com/users/krame505/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krame505/subscriptions","organizations_url":"https://api.github.com/users/krame505/orgs","repos_url":"https://api.github.com/users/krame505/repos","events_url":"https://api.github.com/users/krame505/events{/privacy}","received_events_url":"https://api.github.com/users/krame505/received_events","type":"User","site_admin":false},"created_at":"2018-07-04T07:50:57Z","updated_at":"2018-07-04T07:50:57Z","author_association":"CONTRIBUTOR","body":"Possible idea about improving the performance: make reification lazy - we always reconstruct the entire env tree, but in practice would probably only demand a small portion.  \r\n\r\nAlso, there seems to be a weird bug with this where Silver crashes with infinite recursion during type checking when running `self-compile` on this branch when only certain branches (e.g. `silver:modification:copper`) are touched.  I have no idea of what is going on here, but it doesn't seem to be a simple shortage of stack space.  My best guess is that this is an existing bug with the type checking code that was being masked by the old SVI parser somehow.  Any ideas on things to investigate?  "}}
{"actor":{"display_login":"krame505"}}