{"action":"closed","number":1965,"pull_request":{"url":"https://api.github.com/repos/ocaml/ocaml/pulls/1965","id":206041637,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA2MDQxNjM3","html_url":"https://github.com/ocaml/ocaml/pull/1965","diff_url":"https://github.com/ocaml/ocaml/pull/1965.diff","patch_url":"https://github.com/ocaml/ocaml/pull/1965.patch","issue_url":"https://api.github.com/repos/ocaml/ocaml/issues/1965","number":1965,"state":"closed","locked":false,"title":"Remove loop constructors in Cmm and Mach","user":{"login":"lthls","id":7151831,"node_id":"MDQ6VXNlcjcxNTE4MzE=","avatar_url":"https://avatars2.githubusercontent.com/u/7151831?v=4","gravatar_id":"","url":"https://api.github.com/users/lthls","html_url":"https://github.com/lthls","followers_url":"https://api.github.com/users/lthls/followers","following_url":"https://api.github.com/users/lthls/following{/other_user}","gists_url":"https://api.github.com/users/lthls/gists{/gist_id}","starred_url":"https://api.github.com/users/lthls/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lthls/subscriptions","organizations_url":"https://api.github.com/users/lthls/orgs","repos_url":"https://api.github.com/users/lthls/repos","events_url":"https://api.github.com/users/lthls/events{/privacy}","received_events_url":"https://api.github.com/users/lthls/received_events","type":"User","site_admin":false},"body":"This is extracted from #1660 , where it was included as part of an unrelated bugfix.\r\n\r\nThe feature got some negative feedback from @xavierleroy , but @mshinwell and I would like the opportunity to defend it (and hear arguments against the feature).\r\n\r\nThe arguments I see for the removal:\r\n- It removes a bit of code, simplifying maintenance and future work.\r\n- The loop construction doesn't bring any advantage over the use of recursive catch handlers, which are already used anyway.\r\n\r\nOn the performance side, the limited testing I have done on the compiler's files show that the generated object files are identical in most cases (even restricting to files containing `for`/`while` loops), which is slightly unexpected but in line with my expectations that the produced code would be equivalent.\r\n","created_at":"2018-08-03T14:07:56Z","updated_at":"2019-02-21T15:33:52Z","closed_at":"2019-02-21T15:33:52Z","merged_at":"2019-02-21T15:33:51Z","merge_commit_sha":"74182ae67992cb12b47b0b20a41ad3bd917920e4","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/ocaml/ocaml/pulls/1965/commits","review_comments_url":"https://api.github.com/repos/ocaml/ocaml/pulls/1965/comments","review_comment_url":"https://api.github.com/repos/ocaml/ocaml/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ocaml/ocaml/issues/1965/comments","statuses_url":"https://api.github.com/repos/ocaml/ocaml/statuses/27ce27ee7b3d74cf080edccdbcd389f46f1feb1d","head":{"label":"lthls:remove_iloop","ref":"remove_iloop","sha":"27ce27ee7b3d74cf080edccdbcd389f46f1feb1d","user":{"login":"lthls","id":7151831,"node_id":"MDQ6VXNlcjcxNTE4MzE=","avatar_url":"https://avatars2.githubusercontent.com/u/7151831?v=4","gravatar_id":"","url":"https://api.github.com/users/lthls","html_url":"https://github.com/lthls","followers_url":"https://api.github.com/users/lthls/followers","following_url":"https://api.github.com/users/lthls/following{/other_user}","gists_url":"https://api.github.com/users/lthls/gists{/gist_id}","starred_url":"https://api.github.com/users/lthls/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lthls/subscriptions","organizations_url":"https://api.github.com/users/lthls/orgs","repos_url":"https://api.github.com/users/lthls/repos","events_url":"https://api.github.com/users/lthls/events{/privacy}","received_events_url":"https://api.github.com/users/lthls/received_events","type":"User","site_admin":false},"repo":{"id":97717721,"node_id":"MDEwOlJlcG9zaXRvcnk5NzcxNzcyMQ==","name":"ocaml","full_name":"lthls/ocaml","private":false,"owner":{"login":"lthls","id":7151831,"node_id":"MDQ6VXNlcjcxNTE4MzE=","avatar_url":"https://avatars2.githubusercontent.com/u/7151831?v=4","gravatar_id":"","url":"https://api.github.com/users/lthls","html_url":"https://github.com/lthls","followers_url":"https://api.github.com/users/lthls/followers","following_url":"https://api.github.com/users/lthls/following{/other_user}","gists_url":"https://api.github.com/users/lthls/gists{/gist_id}","starred_url":"https://api.github.com/users/lthls/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lthls/subscriptions","organizations_url":"https://api.github.com/users/lthls/orgs","repos_url":"https://api.github.com/users/lthls/repos","events_url":"https://api.github.com/users/lthls/events{/privacy}","received_events_url":"https://api.github.com/users/lthls/received_events","type":"User","site_admin":false},"html_url":"https://github.com/lthls/ocaml","description":"The core OCaml system: compilers, runtime system, base libraries","fork":true,"url":"https://api.github.com/repos/lthls/ocaml","forks_url":"https://api.github.com/repos/lthls/ocaml/forks","keys_url":"https://api.github.com/repos/lthls/ocaml/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lthls/ocaml/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lthls/ocaml/teams","hooks_url":"https://api.github.com/repos/lthls/ocaml/hooks","issue_events_url":"https://api.github.com/repos/lthls/ocaml/issues/events{/number}","events_url":"https://api.github.com/repos/lthls/ocaml/events","assignees_url":"https://api.github.com/repos/lthls/ocaml/assignees{/user}","branches_url":"https://api.github.com/repos/lthls/ocaml/branches{/branch}","tags_url":"https://api.github.com/repos/lthls/ocaml/tags","blobs_url":"https://api.github.com/repos/lthls/ocaml/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lthls/ocaml/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lthls/ocaml/git/refs{/sha}","trees_url":"https://api.github.com/repos/lthls/ocaml/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lthls/ocaml/statuses/{sha}","languages_url":"https://api.github.com/repos/lthls/ocaml/languages","stargazers_url":"https://api.github.com/repos/lthls/ocaml/stargazers","contributors_url":"https://api.github.com/repos/lthls/ocaml/contributors","subscribers_url":"https://api.github.com/repos/lthls/ocaml/subscribers","subscription_url":"https://api.github.com/repos/lthls/ocaml/subscription","commits_url":"https://api.github.com/repos/lthls/ocaml/commits{/sha}","git_commits_url":"https://api.github.com/repos/lthls/ocaml/git/commits{/sha}","comments_url":"https://api.github.com/repos/lthls/ocaml/comments{/number}","issue_comment_url":"https://api.github.com/repos/lthls/ocaml/issues/comments{/number}","contents_url":"https://api.github.com/repos/lthls/ocaml/contents/{+path}","compare_url":"https://api.github.com/repos/lthls/ocaml/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lthls/ocaml/merges","archive_url":"https://api.github.com/repos/lthls/ocaml/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lthls/ocaml/downloads","issues_url":"https://api.github.com/repos/lthls/ocaml/issues{/number}","pulls_url":"https://api.github.com/repos/lthls/ocaml/pulls{/number}","milestones_url":"https://api.github.com/repos/lthls/ocaml/milestones{/number}","notifications_url":"https://api.github.com/repos/lthls/ocaml/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lthls/ocaml/labels{/name}","releases_url":"https://api.github.com/repos/lthls/ocaml/releases{/id}","deployments_url":"https://api.github.com/repos/lthls/ocaml/deployments","created_at":"2017-07-19T13:13:20Z","updated_at":"2017-07-19T13:13:28Z","pushed_at":"2019-02-21T15:31:07Z","git_url":"git://github.com/lthls/ocaml.git","ssh_url":"git@github.com:lthls/ocaml.git","clone_url":"https://github.com/lthls/ocaml.git","svn_url":"https://github.com/lthls/ocaml","homepage":"","size":184358,"stargazers_count":0,"watchers_count":0,"language":"OCaml","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"trunk"}},"base":{"label":"ocaml:trunk","ref":"trunk","sha":"b99e54fedc257555808d862a1b497574527f4e4e","user":{"login":"ocaml","id":1841483,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE4NDE0ODM=","avatar_url":"https://avatars3.githubusercontent.com/u/1841483?v=4","gravatar_id":"","url":"https://api.github.com/users/ocaml","html_url":"https://github.com/ocaml","followers_url":"https://api.github.com/users/ocaml/followers","following_url":"https://api.github.com/users/ocaml/following{/other_user}","gists_url":"https://api.github.com/users/ocaml/gists{/gist_id}","starred_url":"https://api.github.com/users/ocaml/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ocaml/subscriptions","organizations_url":"https://api.github.com/users/ocaml/orgs","repos_url":"https://api.github.com/users/ocaml/repos","events_url":"https://api.github.com/users/ocaml/events{/privacy}","received_events_url":"https://api.github.com/users/ocaml/received_events","type":"Organization","site_admin":false},"repo":{"id":6786166,"node_id":"MDEwOlJlcG9zaXRvcnk2Nzg2MTY2","name":"ocaml","full_name":"ocaml/ocaml","private":false,"owner":{"login":"ocaml","id":1841483,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE4NDE0ODM=","avatar_url":"https://avatars3.githubusercontent.com/u/1841483?v=4","gravatar_id":"","url":"https://api.github.com/users/ocaml","html_url":"https://github.com/ocaml","followers_url":"https://api.github.com/users/ocaml/followers","following_url":"https://api.github.com/users/ocaml/following{/other_user}","gists_url":"https://api.github.com/users/ocaml/gists{/gist_id}","starred_url":"https://api.github.com/users/ocaml/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ocaml/subscriptions","organizations_url":"https://api.github.com/users/ocaml/orgs","repos_url":"https://api.github.com/users/ocaml/repos","events_url":"https://api.github.com/users/ocaml/events{/privacy}","received_events_url":"https://api.github.com/users/ocaml/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/ocaml/ocaml","description":"The core OCaml system: compilers, runtime system, base libraries","fork":false,"url":"https://api.github.com/repos/ocaml/ocaml","forks_url":"https://api.github.com/repos/ocaml/ocaml/forks","keys_url":"https://api.github.com/repos/ocaml/ocaml/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ocaml/ocaml/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ocaml/ocaml/teams","hooks_url":"https://api.github.com/repos/ocaml/ocaml/hooks","issue_events_url":"https://api.github.com/repos/ocaml/ocaml/issues/events{/number}","events_url":"https://api.github.com/repos/ocaml/ocaml/events","assignees_url":"https://api.github.com/repos/ocaml/ocaml/assignees{/user}","branches_url":"https://api.github.com/repos/ocaml/ocaml/branches{/branch}","tags_url":"https://api.github.com/repos/ocaml/ocaml/tags","blobs_url":"https://api.github.com/repos/ocaml/ocaml/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ocaml/ocaml/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ocaml/ocaml/git/refs{/sha}","trees_url":"https://api.github.com/repos/ocaml/ocaml/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ocaml/ocaml/statuses/{sha}","languages_url":"https://api.github.com/repos/ocaml/ocaml/languages","stargazers_url":"https://api.github.com/repos/ocaml/ocaml/stargazers","contributors_url":"https://api.github.com/repos/ocaml/ocaml/contributors","subscribers_url":"https://api.github.com/repos/ocaml/ocaml/subscribers","subscription_url":"https://api.github.com/repos/ocaml/ocaml/subscription","commits_url":"https://api.github.com/repos/ocaml/ocaml/commits{/sha}","git_commits_url":"https://api.github.com/repos/ocaml/ocaml/git/commits{/sha}","comments_url":"https://api.github.com/repos/ocaml/ocaml/comments{/number}","issue_comment_url":"https://api.github.com/repos/ocaml/ocaml/issues/comments{/number}","contents_url":"https://api.github.com/repos/ocaml/ocaml/contents/{+path}","compare_url":"https://api.github.com/repos/ocaml/ocaml/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ocaml/ocaml/merges","archive_url":"https://api.github.com/repos/ocaml/ocaml/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ocaml/ocaml/downloads","issues_url":"https://api.github.com/repos/ocaml/ocaml/issues{/number}","pulls_url":"https://api.github.com/repos/ocaml/ocaml/pulls{/number}","milestones_url":"https://api.github.com/repos/ocaml/ocaml/milestones{/number}","notifications_url":"https://api.github.com/repos/ocaml/ocaml/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ocaml/ocaml/labels{/name}","releases_url":"https://api.github.com/repos/ocaml/ocaml/releases{/id}","deployments_url":"https://api.github.com/repos/ocaml/ocaml/deployments","created_at":"2012-11-20T22:18:22Z","updated_at":"2019-02-21T15:28:26Z","pushed_at":"2019-02-21T15:33:51Z","git_url":"git://github.com/ocaml/ocaml.git","ssh_url":"git@github.com:ocaml/ocaml.git","clone_url":"https://github.com/ocaml/ocaml.git","svn_url":"https://github.com/ocaml/ocaml","homepage":"","size":188526,"stargazers_count":2206,"watchers_count":2206,"language":"OCaml","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":513,"mirror_url":null,"archived":false,"open_issues_count":169,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":513,"open_issues":169,"watchers":2206,"default_branch":"trunk"}},"_links":{"self":{"href":"https://api.github.com/repos/ocaml/ocaml/pulls/1965"},"html":{"href":"https://github.com/ocaml/ocaml/pull/1965"},"issue":{"href":"https://api.github.com/repos/ocaml/ocaml/issues/1965"},"comments":{"href":"https://api.github.com/repos/ocaml/ocaml/issues/1965/comments"},"review_comments":{"href":"https://api.github.com/repos/ocaml/ocaml/pulls/1965/comments"},"review_comment":{"href":"https://api.github.com/repos/ocaml/ocaml/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ocaml/ocaml/pulls/1965/commits"},"statuses":{"href":"https://api.github.com/repos/ocaml/ocaml/statuses/27ce27ee7b3d74cf080edccdbcd389f46f1feb1d"}},"author_association":"CONTRIBUTOR","merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"chambart","id":2196625,"node_id":"MDQ6VXNlcjIxOTY2MjU=","avatar_url":"https://avatars1.githubusercontent.com/u/2196625?v=4","gravatar_id":"","url":"https://api.github.com/users/chambart","html_url":"https://github.com/chambart","followers_url":"https://api.github.com/users/chambart/followers","following_url":"https://api.github.com/users/chambart/following{/other_user}","gists_url":"https://api.github.com/users/chambart/gists{/gist_id}","starred_url":"https://api.github.com/users/chambart/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chambart/subscriptions","organizations_url":"https://api.github.com/users/chambart/orgs","repos_url":"https://api.github.com/users/chambart/repos","events_url":"https://api.github.com/users/chambart/events{/privacy}","received_events_url":"https://api.github.com/users/chambart/received_events","type":"User","site_admin":false},"comments":7,"review_comments":0,"maintainer_can_modify":false,"commits":3,"additions":18,"deletions":128,"changed_files":22}}
{"actor":{"display_login":"chambart"}}