{"action":"created","issue":{"url":"https://api.github.com/repos/AvailLang/Avail/issues/102","labels_url":"https://api.github.com/repos/AvailLang/Avail/issues/102/labels{/name}","comments_url":"https://api.github.com/repos/AvailLang/Avail/issues/102/comments","events_url":"https://api.github.com/repos/AvailLang/Avail/issues/102/events","html_url":"https://github.com/AvailLang/Avail/issues/102","id":95861631,"number":102,"title":"Method \"Method_is stable at_\" should generate a folding macro","user":{"login":"toddATavail","id":7750049,"avatar_url":"https://avatars.githubusercontent.com/u/7750049?v=3","gravatar_id":"","url":"https://api.github.com/users/toddATavail","html_url":"https://github.com/toddATavail","followers_url":"https://api.github.com/users/toddATavail/followers","following_url":"https://api.github.com/users/toddATavail/following{/other_user}","gists_url":"https://api.github.com/users/toddATavail/gists{/gist_id}","starred_url":"https://api.github.com/users/toddATavail/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/toddATavail/subscriptions","organizations_url":"https://api.github.com/users/toddATavail/orgs","repos_url":"https://api.github.com/users/toddATavail/repos","events_url":"https://api.github.com/users/toddATavail/events{/privacy}","received_events_url":"https://api.github.com/users/toddATavail/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/AvailLang/Avail/labels/C:%20System%20Library","name":"C: System Library","color":"0000aa"},{"url":"https://api.github.com/repos/AvailLang/Avail/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/AvailLang/Avail/labels/P:%20major","name":"P: major","color":"f6f6f6"}],"state":"open","locked":false,"assignee":{"login":"toddATavail","id":7750049,"avatar_url":"https://avatars.githubusercontent.com/u/7750049?v=3","gravatar_id":"","url":"https://api.github.com/users/toddATavail","html_url":"https://github.com/toddATavail","followers_url":"https://api.github.com/users/toddATavail/followers","following_url":"https://api.github.com/users/toddATavail/following{/other_user}","gists_url":"https://api.github.com/users/toddATavail/gists{/gist_id}","starred_url":"https://api.github.com/users/toddATavail/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/toddATavail/subscriptions","organizations_url":"https://api.github.com/users/toddATavail/orgs","repos_url":"https://api.github.com/users/toddATavail/repos","events_url":"https://api.github.com/users/toddATavail/events{/privacy}","received_events_url":"https://api.github.com/users/toddATavail/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/AvailLang/Avail/milestones/3","html_url":"https://github.com/AvailLang/Avail/milestones/1.0.0%20DEV%202015-04-28","labels_url":"https://api.github.com/repos/AvailLang/Avail/milestones/3/labels","id":1214398,"number":3,"title":"1.0.0 DEV 2015-04-28","description":"This is the second public development milestone of the Avail programming language. It is expected to include:\r\n\r\n* File I/O (#36).\r\n* Macros (#8).\r\n* A rebuild of the core Avail syntax in terms of macros (#99, #100, #101, #102, #103, #104, #105, #106, #107, #108, #109, #110, #111, #112, #113).\r\n* Message metacharacter for variable quoting. (#25)\r\n* Reordering of arguments for renamed messages. (#6)\r\n* Direct, non-reflective support for super calls. (#28)\r\n* Correct handling of reads of unassigned variables. (#42)\r\n* Correct handling of failed run-time type strengthenings. (#43)\r\n* Correct handling of failed message dispatches. (#44)\r\n* Complete support for \"observerless\". (#86)\r\n* Faster loading of binary modules.\r\n* Compiler warnings.\r\n* Resolve self-sufficiency issues with Stacks generation. (#61, #65)\r\n* Resolve back-button navigation issues with Stacks. (#63)\r\n","creator":{"login":"toddATavail","id":7750049,"avatar_url":"https://avatars.githubusercontent.com/u/7750049?v=3","gravatar_id":"","url":"https://api.github.com/users/toddATavail","html_url":"https://github.com/toddATavail","followers_url":"https://api.github.com/users/toddATavail/followers","following_url":"https://api.github.com/users/toddATavail/following{/other_user}","gists_url":"https://api.github.com/users/toddATavail/gists{/gist_id}","starred_url":"https://api.github.com/users/toddATavail/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/toddATavail/subscriptions","organizations_url":"https://api.github.com/users/toddATavail/orgs","repos_url":"https://api.github.com/users/toddATavail/repos","events_url":"https://api.github.com/users/toddATavail/events{/privacy}","received_events_url":"https://api.github.com/users/toddATavail/received_events","type":"User","site_admin":false},"open_issues":4,"closed_issues":18,"state":"open","created_at":"2015-07-18T21:27:10Z","updated_at":"2015-07-18T21:37:45Z","due_on":"2015-04-29T02:00:00Z","closed_at":null},"comments":1,"created_at":"2015-07-18T21:37:45Z","updated_at":"2015-07-18T21:37:45Z","closed_at":null,"body":"**Reported by todd on 8 Mar 2015 23:31 UTC**\nCurrently, the stability annotation (e.g., ```\"Stable method_is_\"```, ```\"Public stable method_is_\"```, etc.), implemented by ```\"Method_is stable at_\"```, generates a semantic restriction for the target method. This restriction checks all of the argument types, and if it discovers that they are each instance types, then it strengthens the result type of the call site to the instance type of the exact value produced by the call.\r\n\r\nWhile this provides nice strong types, macros allow us to do better. ```\"Method_is stable at_\"``` should generate a macro that performs the same check. When the check succeeds, it folds the entire call expression away, replacing it with a literal phrase that wraps the result of performing the operation of the actual values. This allows the operation to occur at compile time, rather than at runtime.\r\n\r\n```\"Method_is stable at_\"``` is currently limited to operate on non-repeating expressions. This limitation should also be removed."},"comment":{"url":"https://api.github.com/repos/AvailLang/Avail/issues/comments/122598464","html_url":"https://github.com/AvailLang/Avail/issues/102#issuecomment-122598464","issue_url":"https://api.github.com/repos/AvailLang/Avail/issues/102","id":122598464,"user":{"login":"toddATavail","id":7750049,"avatar_url":"https://avatars.githubusercontent.com/u/7750049?v=3","gravatar_id":"","url":"https://api.github.com/users/toddATavail","html_url":"https://github.com/toddATavail","followers_url":"https://api.github.com/users/toddATavail/followers","following_url":"https://api.github.com/users/toddATavail/following{/other_user}","gists_url":"https://api.github.com/users/toddATavail/gists{/gist_id}","starred_url":"https://api.github.com/users/toddATavail/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/toddATavail/subscriptions","organizations_url":"https://api.github.com/users/toddATavail/orgs","repos_url":"https://api.github.com/users/toddATavail/repos","events_url":"https://api.github.com/users/toddATavail/events{/privacy}","received_events_url":"https://api.github.com/users/toddATavail/received_events","type":"User","site_admin":false},"created_at":"2015-07-18T21:37:45Z","updated_at":"2015-07-18T21:37:45Z","body":"**Comment by todd on 16 Mar 2015 16:11 UTC**\n```\"Method_is stable at_\"``` still only operates on non-repeating expressions, but the other work has been done."}}