{"action":"created","comment":{"url":"https://api.github.com/repos/apple/swift/pulls/comments/66112214","id":66112214,"diff_hunk":"@@ -1473,6 +1514,191 @@ details of the setups of other systems or automated environments.\"\"\")\n     return 0\n \n \n+def compute_host_specific_variables(args):\n+    \"\"\"compute_host_specific_variables(args) -> dict\n+\n+    Compute the host-specific options, organized as a dictionary keyed by host\n+    of options.\n+    \"\"\"\n+\n+    # Compute the platform to build for information.\n+    platforms_to_skip_build = set()\n+    if args.skip_build_linux:\n+        platforms_to_skip_build.add(StdlibDeploymentTarget.Linux)\n+    if args.skip_build_freebsd:\n+        platforms_to_skip_build.add(StdlibDeploymentTarget.FreeBSD)\n+    if args.skip_build_cygwin:\n+        platforms_to_skip_build.add(StdlibDeploymentTarget.Cygwin)\n+    if args.skip_build_osx:\n+        platforms_to_skip_build.add(StdlibDeploymentTarget.OSX)\n+    if args.skip_build_ios_device:\n+        platforms_to_skip_build.add(StdlibDeploymentTarget.iOS)\n+    if args.skip_build_ios_simulator:\n+        platforms_to_skip_build.add(StdlibDeploymentTarget.iOSSimulator)\n+    if args.skip_build_tvos_device:\n+        platforms_to_skip_build.add(StdlibDeploymentTarget.AppleTV)\n+    if args.skip_build_tvos_simulator:\n+        platforms_to_skip_build.add(StdlibDeploymentTarget.AppleTVSimulator)\n+    if args.skip_build_watchos_device:\n+        platforms_to_skip_build.add(StdlibDeploymentTarget.AppleWatch)\n+    if args.skip_build_watchos_simulator:\n+        platforms_to_skip_build.add(StdlibDeploymentTarget.AppleWatchSimulator)\n+    if args.skip_build_android:\n+        platforms_to_skip_build.add(StdlibDeploymentTarget.Android)\n+\n+    platforms_to_skip_test = set()\n+    if args.skip_test_linux:\n+        platforms_to_skip_test.add(StdlibDeploymentTarget.Linux)\n+    if args.skip_test_freebsd:\n+        platforms_to_skip_test.add(StdlibDeploymentTarget.FreeBSD)\n+    if args.skip_test_cygwin:\n+        platforms_to_skip_test.add(StdlibDeploymentTarget.Cygwin)\n+    if args.skip_test_osx:\n+        platforms_to_skip_test.add(StdlibDeploymentTarget.OSX)\n+    if args.skip_test_ios_host:\n+        platforms_to_skip_test.add(StdlibDeploymentTarget.iOS)\n+    if args.skip_test_ios_simulator:\n+        platforms_to_skip_test.add(StdlibDeploymentTarget.iOSSimulator)\n+    if args.skip_test_tvos_host:\n+        platforms_to_skip_test.add(StdlibDeploymentTarget.AppleTV)\n+    if args.skip_test_tvos_simulator:\n+        platforms_to_skip_test.add(StdlibDeploymentTarget.AppleTVSimulator)\n+    if args.skip_test_watchos_host:\n+        platforms_to_skip_test.add(StdlibDeploymentTarget.AppleWatch)\n+    if args.skip_test_watchos_simulator:\n+        platforms_to_skip_test.add(StdlibDeploymentTarget.AppleWatchSimulator)\n+\n+    platforms_to_skip_test_host = set()\n+    if args.skip_test_ios_host:\n+        platforms_to_skip_test_host.add(StdlibDeploymentTarget.iOS)\n+    if args.skip_test_tvos_host:\n+        platforms_to_skip_test_host.add(StdlibDeploymentTarget.AppleTV)\n+    if args.skip_test_watchos_host:\n+        platforms_to_skip_test_host.add(StdlibDeploymentTarget.AppleWatch)\n+\n+    # We never allow testing Android, currently.\n+    #\n+    # FIXME: Allow Android host tests to be enabled/disabled by the build\n+    # script.\n+    platforms_to_skip_test.add(StdlibDeploymentTarget.Android)\n+\n+    def get_options_for_target(host):\n+        def should_build_stdlib_target(stdlib_target):\n+            # If building all targets, this is true.\n+            if \"all\" in args.build_stdlib_deployment_targets:\n+                return True\n+\n+            # Otherwise, only build in the restricted list.\n+            if stdlib_target in args.build_stdlib_deployment_targets:\n+                return True\n+\n+            # For cross-tools hosts, always allow their one-and-only\n+            # stdlib-target to build.\n+            if host != args.host_target and host == stdlib_target:\n+                return True\n+\n+        if host == args.host_target:\n+            stdlib_targets = args.stdlib_deployment_targets\n+        else:\n+            stdlib_targets = [host]\n+\n+        swift_stdlib_targets = []\n+        swift_sdks = set()\n+        swift_benchmark_targets = []\n+        swift_run_benchmark_targets = []\n+        swift_test_targets = []\n+        for stdlib_target_name in stdlib_targets:\n+            # Get the target object.\n+            stdlib_target = StdlibDeploymentTarget.get_target_for_name(\n+                stdlib_target_name)\n+            if stdlib_target is None:\n+                diagnostics.fatal(\"unknown target: %r\" % (stdlib_target_name,))\n+\n+            # Add the SDK to use.\n+            swift_sdks.add(stdlib_target.platform.sdk_name)\n+\n+            # If we aren't building this target, do nothing else.\n+            #\n+            # FIXME: This matches build-script-impl behavior, but why add the\n+            # SDK? Is that right?\n+            if not should_build_stdlib_target(stdlib_target):\n+                continue\n+\n+            # Compute build and test information.\n+            build = stdlib_target.platform not in platforms_to_skip_build\n+            test = stdlib_target.platform not in platforms_to_skip_test\n+            test_host_only = None\n+            build_benchmark = build and stdlib_target.supports_benchmark\n+            # FIXME: Note, `build-script-impl` computed a property here\n+            # w.r.t. testing, but it was actually unused.\n+\n+            # As a special case, Darwin embedded non-simulator platforms have\n+            # different behavior for the test condition.\n+            if stdlib_target.platform.is_darwin and \\\n+               stdlib_target.platform.is_embedded and \\\n+               not stdlib_target.platform.is_simulator:\n+                if stdlib_target.platform not in platforms_to_skip_test_host:\n+                    test_host_only = True\n+                    test = True\n+                else:\n+                    test = False\n+\n+            name = stdlib_target.name\n+            if build:\n+                # FIXME: This logic doesn't make much sense, but\n+                # build-script-impl had no comments.\n+                if args.build_swift_stdlib_unittest_extra or \\\n+                       args.validation_test or args.long_test:\n+                    swift_stdlib_targets.append(\"swift-stdlib-\"+name)\n+                else:\n+                    swift_stdlib_targets.append(\"swift-test-stdlib-\"+name)\n+            if build_benchmark:\n+                swift_benchmark_targets.append(\"swift-benchmark-\"+name)\n+                # FIXME: This probably should respect `args.benchmark`, but a\n+                # typo (?) in build-script-impl meant we always would do this.\n+                swift_run_benchmark_targets.append(\n+                    \"check-swift-benchmark-\"+name)\n+            if test:\n+                if test_host_only:\n+                    suffix = \"-non-executable\"\n+                else:\n+                    suffix = \"\"\n+                subset_suffix = \"\"\n+                if args.validation_test and args.long_test:\n+                    subset_suffix = \"-all\"\n+                elif args.validation_test:\n+                    subset_suffix = \"-validation\"\n+                elif args.long_test:\n+                    subset_suffix = \"-only_long\"\n+                else:\n+                    subset_suffix = \"\"\n+                swift_test_targets.append(\"check-swift{}{}-{}\".format(\n+                    subset_suffix, suffix, name))\n+                if args.test_optimized and not test_host_only:\n+                    swift_test_targets.append(\n+                        \"check-swift{}-optimize-{}\".format(\n+                            subset_suffix, name))\n+\n+        return {\n+            \"SWIFT_STDLIB_TARGETS\": \" \".join(swift_stdlib_targets),\n+            \"SWIFT_SDKS\": \" \".join(sorted(swift_sdks)),\n+            \"SWIFT_BENCHMARK_TARGETS\": \" \".join(swift_benchmark_targets),\n+            \"SWIFT_RUN_BENCHMARK_TARGETS\": \" \".join(\n+                swift_run_benchmark_targets),\n+            \"SWIFT_TEST_TARGETS\": \" \".join(swift_test_targets),\n+        }\n+\n+    # Add the options for each possible host.\n+    options = {\n+        args.host_target: get_options_for_target(args.host_target)\n+    }\n+    for target in (target for options in args.cross_compile_hosts\n+                   for target in options):","path":"utils/build-script","position":295,"original_position":295,"commit_id":"04a916f38d9b602a0052e98d91510f7d3fc8b2f7","original_commit_id":"04a916f38d9b602a0052e98d91510f7d3fc8b2f7","user":{"login":"ddunbar","id":106625,"avatar_url":"https://avatars.githubusercontent.com/u/106625?v=3","gravatar_id":"","url":"https://api.github.com/users/ddunbar","html_url":"https://github.com/ddunbar","followers_url":"https://api.github.com/users/ddunbar/followers","following_url":"https://api.github.com/users/ddunbar/following{/other_user}","gists_url":"https://api.github.com/users/ddunbar/gists{/gist_id}","starred_url":"https://api.github.com/users/ddunbar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ddunbar/subscriptions","organizations_url":"https://api.github.com/users/ddunbar/orgs","repos_url":"https://api.github.com/users/ddunbar/repos","events_url":"https://api.github.com/users/ddunbar/events{/privacy}","received_events_url":"https://api.github.com/users/ddunbar/received_events","type":"User","site_admin":false},"body":"Yup, will update onto that.","created_at":"2016-06-07T17:10:51Z","updated_at":"2016-06-07T17:10:51Z","html_url":"https://github.com/apple/swift/pull/2880#discussion_r66112214","pull_request_url":"https://api.github.com/repos/apple/swift/pulls/2880","_links":{"self":{"href":"https://api.github.com/repos/apple/swift/pulls/comments/66112214"},"html":{"href":"https://github.com/apple/swift/pull/2880#discussion_r66112214"},"pull_request":{"href":"https://api.github.com/repos/apple/swift/pulls/2880"}}},"pull_request":{"url":"https://api.github.com/repos/apple/swift/pulls/2880","id":72594029,"html_url":"https://github.com/apple/swift/pull/2880","diff_url":"https://github.com/apple/swift/pull/2880.diff","patch_url":"https://github.com/apple/swift/pull/2880.patch","issue_url":"https://api.github.com/repos/apple/swift/issues/2880","number":2880,"state":"open","locked":false,"title":"[WIP] [build-script] Compute targets in `build-script`","user":{"login":"ddunbar","id":106625,"avatar_url":"https://avatars.githubusercontent.com/u/106625?v=3","gravatar_id":"","url":"https://api.github.com/users/ddunbar","html_url":"https://github.com/ddunbar","followers_url":"https://api.github.com/users/ddunbar/followers","following_url":"https://api.github.com/users/ddunbar/following{/other_user}","gists_url":"https://api.github.com/users/ddunbar/gists{/gist_id}","starred_url":"https://api.github.com/users/ddunbar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ddunbar/subscriptions","organizations_url":"https://api.github.com/users/ddunbar/orgs","repos_url":"https://api.github.com/users/ddunbar/repos","events_url":"https://api.github.com/users/ddunbar/events{/privacy}","received_events_url":"https://api.github.com/users/ddunbar/received_events","type":"User","site_admin":false},"body":"<!-- Please complete this template before creating pull request. -->\r\n#### What's in this pull request?\r\n\r\nThis is a work-in-progress branch to move the computation of the target list up to `build-script`. It does size by inventing a new mechanism to pass host-specific variables down to `build-script-impl`, and it also factors out explicit objects for platform/target to attach metadata to.\r\n\r\nFinally, this branch itself doesn't actually remove the `build-script-impl` logic. Instead, it runs both implementations and asserts that they compute the same result -- the logic itself is hairy so this has been a good source of catching bugs in the implementation for all the different flag combinations.\r\n\r\n#### Resolved bug number: ([SR-](https://bugs.swift.org/browse/SR-))\r\n<!-- If this pull request resolves any bugs from Swift bug tracker -->\r\n\r\n* * * *\r\n\r\n<!-- This selection should only be completed by Swift admin -->\r\nBefore merging this pull request to apple/swift repository:\r\n- [ ] Test pull request on Swift continuous integration.\r\n\r\n<details>\r\n  <summary>Triggering Swift CI</summary>\r\n\r\nThe swift-ci is triggered by writing a comment on this PR addressed to the GitHub user @swift-ci. Different tests will run depending on the specific comment that you use. The currently available comments are:\r\n\r\n**Smoke Testing**\r\n\r\n        Platform     | Comment\r\n        ------------ | -------------\r\n        All supported platforms     | @swift-ci Please smoke test\r\n        All supported platforms     | @swift-ci Please smoke test and merge\r\n        OS X platform               | @swift-ci Please smoke test OS X platform\r\n        Linux platform              | @swift-ci Please smoke test Linux platform\r\n\r\n**Validation Testing**\r\n\r\n        Platform     | Comment\r\n        ------------ | -------------\r\n        All supported platforms     | @swift-ci Please test\r\n        All supported platforms     | @swift-ci Please test and merge\r\n        OS X platform               | @swift-ci Please test OS X platform\r\n        OS X platform               | @swift-ci Please benchmark\r\n        Linux platform              | @swift-ci Please test Linux platform\r\n\r\n\r\n**Lint Testing**\r\n\r\n        Language     | Comment\r\n        ------------ | -------------\r\n        Python       | @swift-ci Please Python lint\r\n\r\nNote: Only members of the Apple organization can trigger swift-ci.\r\n</details>\r\n<!-- Thank you for your contribution to Swift! -->","created_at":"2016-06-04T05:49:52Z","updated_at":"2016-06-07T17:10:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e17434988111741a068c1dff7725a7943896117a","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/apple/swift/pulls/2880/commits","review_comments_url":"https://api.github.com/repos/apple/swift/pulls/2880/comments","review_comment_url":"https://api.github.com/repos/apple/swift/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apple/swift/issues/2880/comments","statuses_url":"https://api.github.com/repos/apple/swift/statuses/04a916f38d9b602a0052e98d91510f7d3fc8b2f7","head":{"label":"ddunbar:build-script-compute-targets","ref":"build-script-compute-targets","sha":"04a916f38d9b602a0052e98d91510f7d3fc8b2f7","user":{"login":"ddunbar","id":106625,"avatar_url":"https://avatars.githubusercontent.com/u/106625?v=3","gravatar_id":"","url":"https://api.github.com/users/ddunbar","html_url":"https://github.com/ddunbar","followers_url":"https://api.github.com/users/ddunbar/followers","following_url":"https://api.github.com/users/ddunbar/following{/other_user}","gists_url":"https://api.github.com/users/ddunbar/gists{/gist_id}","starred_url":"https://api.github.com/users/ddunbar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ddunbar/subscriptions","organizations_url":"https://api.github.com/users/ddunbar/orgs","repos_url":"https://api.github.com/users/ddunbar/repos","events_url":"https://api.github.com/users/ddunbar/events{/privacy}","received_events_url":"https://api.github.com/users/ddunbar/received_events","type":"User","site_admin":false},"repo":{"id":57074958,"name":"swift","full_name":"ddunbar/swift","owner":{"login":"ddunbar","id":106625,"avatar_url":"https://avatars.githubusercontent.com/u/106625?v=3","gravatar_id":"","url":"https://api.github.com/users/ddunbar","html_url":"https://github.com/ddunbar","followers_url":"https://api.github.com/users/ddunbar/followers","following_url":"https://api.github.com/users/ddunbar/following{/other_user}","gists_url":"https://api.github.com/users/ddunbar/gists{/gist_id}","starred_url":"https://api.github.com/users/ddunbar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ddunbar/subscriptions","organizations_url":"https://api.github.com/users/ddunbar/orgs","repos_url":"https://api.github.com/users/ddunbar/repos","events_url":"https://api.github.com/users/ddunbar/events{/privacy}","received_events_url":"https://api.github.com/users/ddunbar/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ddunbar/swift","description":"The Swift Programming Language","fork":true,"url":"https://api.github.com/repos/ddunbar/swift","forks_url":"https://api.github.com/repos/ddunbar/swift/forks","keys_url":"https://api.github.com/repos/ddunbar/swift/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ddunbar/swift/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ddunbar/swift/teams","hooks_url":"https://api.github.com/repos/ddunbar/swift/hooks","issue_events_url":"https://api.github.com/repos/ddunbar/swift/issues/events{/number}","events_url":"https://api.github.com/repos/ddunbar/swift/events","assignees_url":"https://api.github.com/repos/ddunbar/swift/assignees{/user}","branches_url":"https://api.github.com/repos/ddunbar/swift/branches{/branch}","tags_url":"https://api.github.com/repos/ddunbar/swift/tags","blobs_url":"https://api.github.com/repos/ddunbar/swift/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ddunbar/swift/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ddunbar/swift/git/refs{/sha}","trees_url":"https://api.github.com/repos/ddunbar/swift/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ddunbar/swift/statuses/{sha}","languages_url":"https://api.github.com/repos/ddunbar/swift/languages","stargazers_url":"https://api.github.com/repos/ddunbar/swift/stargazers","contributors_url":"https://api.github.com/repos/ddunbar/swift/contributors","subscribers_url":"https://api.github.com/repos/ddunbar/swift/subscribers","subscription_url":"https://api.github.com/repos/ddunbar/swift/subscription","commits_url":"https://api.github.com/repos/ddunbar/swift/commits{/sha}","git_commits_url":"https://api.github.com/repos/ddunbar/swift/git/commits{/sha}","comments_url":"https://api.github.com/repos/ddunbar/swift/comments{/number}","issue_comment_url":"https://api.github.com/repos/ddunbar/swift/issues/comments{/number}","contents_url":"https://api.github.com/repos/ddunbar/swift/contents/{+path}","compare_url":"https://api.github.com/repos/ddunbar/swift/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ddunbar/swift/merges","archive_url":"https://api.github.com/repos/ddunbar/swift/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ddunbar/swift/downloads","issues_url":"https://api.github.com/repos/ddunbar/swift/issues{/number}","pulls_url":"https://api.github.com/repos/ddunbar/swift/pulls{/number}","milestones_url":"https://api.github.com/repos/ddunbar/swift/milestones{/number}","notifications_url":"https://api.github.com/repos/ddunbar/swift/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ddunbar/swift/labels{/name}","releases_url":"https://api.github.com/repos/ddunbar/swift/releases{/id}","deployments_url":"https://api.github.com/repos/ddunbar/swift/deployments","created_at":"2016-04-25T20:41:41Z","updated_at":"2016-04-25T20:42:01Z","pushed_at":"2016-06-06T23:04:43Z","git_url":"git://github.com/ddunbar/swift.git","ssh_url":"git@github.com:ddunbar/swift.git","clone_url":"https://github.com/ddunbar/swift.git","svn_url":"https://github.com/ddunbar/swift","homepage":"https://swift.org/","size":96208,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"apple:master","ref":"master","sha":"775a0ec3379920fdc5c88fccfd4086c43853a4fe","user":{"login":"apple","id":10639145,"avatar_url":"https://avatars.githubusercontent.com/u/10639145?v=3","gravatar_id":"","url":"https://api.github.com/users/apple","html_url":"https://github.com/apple","followers_url":"https://api.github.com/users/apple/followers","following_url":"https://api.github.com/users/apple/following{/other_user}","gists_url":"https://api.github.com/users/apple/gists{/gist_id}","starred_url":"https://api.github.com/users/apple/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apple/subscriptions","organizations_url":"https://api.github.com/users/apple/orgs","repos_url":"https://api.github.com/users/apple/repos","events_url":"https://api.github.com/users/apple/events{/privacy}","received_events_url":"https://api.github.com/users/apple/received_events","type":"Organization","site_admin":false},"repo":{"id":44838949,"name":"swift","full_name":"apple/swift","owner":{"login":"apple","id":10639145,"avatar_url":"https://avatars.githubusercontent.com/u/10639145?v=3","gravatar_id":"","url":"https://api.github.com/users/apple","html_url":"https://github.com/apple","followers_url":"https://api.github.com/users/apple/followers","following_url":"https://api.github.com/users/apple/following{/other_user}","gists_url":"https://api.github.com/users/apple/gists{/gist_id}","starred_url":"https://api.github.com/users/apple/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apple/subscriptions","organizations_url":"https://api.github.com/users/apple/orgs","repos_url":"https://api.github.com/users/apple/repos","events_url":"https://api.github.com/users/apple/events{/privacy}","received_events_url":"https://api.github.com/users/apple/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/apple/swift","description":"The Swift Programming Language","fork":false,"url":"https://api.github.com/repos/apple/swift","forks_url":"https://api.github.com/repos/apple/swift/forks","keys_url":"https://api.github.com/repos/apple/swift/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apple/swift/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apple/swift/teams","hooks_url":"https://api.github.com/repos/apple/swift/hooks","issue_events_url":"https://api.github.com/repos/apple/swift/issues/events{/number}","events_url":"https://api.github.com/repos/apple/swift/events","assignees_url":"https://api.github.com/repos/apple/swift/assignees{/user}","branches_url":"https://api.github.com/repos/apple/swift/branches{/branch}","tags_url":"https://api.github.com/repos/apple/swift/tags","blobs_url":"https://api.github.com/repos/apple/swift/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apple/swift/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apple/swift/git/refs{/sha}","trees_url":"https://api.github.com/repos/apple/swift/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apple/swift/statuses/{sha}","languages_url":"https://api.github.com/repos/apple/swift/languages","stargazers_url":"https://api.github.com/repos/apple/swift/stargazers","contributors_url":"https://api.github.com/repos/apple/swift/contributors","subscribers_url":"https://api.github.com/repos/apple/swift/subscribers","subscription_url":"https://api.github.com/repos/apple/swift/subscription","commits_url":"https://api.github.com/repos/apple/swift/commits{/sha}","git_commits_url":"https://api.github.com/repos/apple/swift/git/commits{/sha}","comments_url":"https://api.github.com/repos/apple/swift/comments{/number}","issue_comment_url":"https://api.github.com/repos/apple/swift/issues/comments{/number}","contents_url":"https://api.github.com/repos/apple/swift/contents/{+path}","compare_url":"https://api.github.com/repos/apple/swift/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apple/swift/merges","archive_url":"https://api.github.com/repos/apple/swift/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apple/swift/downloads","issues_url":"https://api.github.com/repos/apple/swift/issues{/number}","pulls_url":"https://api.github.com/repos/apple/swift/pulls{/number}","milestones_url":"https://api.github.com/repos/apple/swift/milestones{/number}","notifications_url":"https://api.github.com/repos/apple/swift/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apple/swift/labels{/name}","releases_url":"https://api.github.com/repos/apple/swift/releases{/id}","deployments_url":"https://api.github.com/repos/apple/swift/deployments","created_at":"2015-10-23T21:15:07Z","updated_at":"2016-06-07T16:59:31Z","pushed_at":"2016-06-07T16:17:20Z","git_url":"git://github.com/apple/swift.git","ssh_url":"git@github.com:apple/swift.git","clone_url":"https://github.com/apple/swift.git","svn_url":"https://github.com/apple/swift","homepage":"https://swift.org/","size":150497,"stargazers_count":30978,"watchers_count":30978,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":4229,"mirror_url":null,"open_issues_count":101,"forks":4229,"open_issues":101,"watchers":30978,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apple/swift/pulls/2880"},"html":{"href":"https://github.com/apple/swift/pull/2880"},"issue":{"href":"https://api.github.com/repos/apple/swift/issues/2880"},"comments":{"href":"https://api.github.com/repos/apple/swift/issues/2880/comments"},"review_comments":{"href":"https://api.github.com/repos/apple/swift/pulls/2880/comments"},"review_comment":{"href":"https://api.github.com/repos/apple/swift/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apple/swift/pulls/2880/commits"},"statuses":{"href":"https://api.github.com/repos/apple/swift/statuses/04a916f38d9b602a0052e98d91510f7d3fc8b2f7"}}}}
{"actor":{"display_login":"ddunbar"}}