payload: {"action":"created","comment":{"url":"https://api.github.com/repos/apple/swift-llbuild/pulls/comments/276326873","pull_request_review_id":227850574,"id":276326873,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI3NjMyNjg3Mw==","diff_hunk":"@@ -0,0 +1,345 @@\n+//\n+//  BuildDBBindings.swift\n+//  llbuild-framework\n+//\n+//  Copyright © 2019 Apple Inc. All rights reserved.\n+//\n+\n+#if os(macOS)\n+import Darwin.C\n+#elseif os(Windows)\n+import MSVCRT\n+import WinSDK\n+#else\n+import Glibc\n+#endif\n+\n+import Foundation\n+\n+// We don't need this import if we're building\n+// this file as part of the llbuild framework.\n+#if !LLBUILD_FRAMEWORK\n+import llbuild\n+#endif\n+\n+public typealias KeyID = UInt64\n+public typealias KeyType = String\n+\n+public protocol BuildDBDelegate {\n+    func getKeyID(key: KeyType) -> KeyID\n+    func getKey(id: KeyID) -> KeyType\n+}\n+\n+/// Defines the result of a call to fetch all keys from the database\n+/// Wraps calls to the llbuild database, but all results are fetched and available with this result\n+public class BuildDBFetchKeysResult {\n+    /// Opaque pointer to the actual result object\n+    private let result: OpaquePointer?\n+    \n+    fileprivate init() {\n+        self.result = nil\n+    }\n+    \n+    fileprivate init(result: OpaquePointer) {\n+        self.result = result\n+    }\n+    \n+    private lazy var _count: Int = result.map { Int(llb_database_result_keys_get_count($0)) } ?? 0\n+    \n+    /// Get the key identifier for a given key (is unique)\n+    public func getKeyID(key: KeyType) -> KeyID {\n+        assert(result != nil, \"Can't get key identifier without fetching the data first.\")\n+        return llb_database_result_keys_get_id_for_key(result, key.cString(using: .utf8))\n+    }\n+    \n+    /// Get the key for a given key identifier (might be unique)\n+    public func getKey(id: KeyID) -> KeyType {\n+        assert(result != nil, \"Can't get key without fetching the data first.\")\n+        \n+        var data = llb_data_t()\n+        withUnsafeMutablePointer(to: &data) { ptr in\n+            llb_database_result_keys_get_key_for_id(self.result, id, ptr)\n+        }\n+        defer { data.data?.deallocate() }\n+        return stringFromData(data)\n+    }\n+    \n+    deinit {\n+        llb_database_destroy_result_keys(result)\n+    }\n+}\n+\n+extension BuildDBFetchKeysResult: Collection {\n+    public typealias Index = KeyID\n+    public typealias Element = (keyID: KeyID, key: KeyType)\n+\n+    public var startIndex: Index {\n+        return 1 as UInt64\n+    }\n+    \n+    public var endIndex: Index {\n+        return UInt64(self.count) + startIndex\n+    }\n+    \n+    public subscript(index: Index) -> Iterator.Element {\n+        guard (startIndex..<endIndex).contains(index) else {\n+            fatalError(\"Index \\(index) is out of bounds (\\(startIndex)..<\\(endIndex))\")\n+        }\n+        return (index, getKey(id: index))\n+    }\n+    \n+    public func index(after i: KeyID) -> KeyID {\n+        return i + 1\n+    }\n+}\n+\n+extension BuildDBFetchKeysResult: BuildDBDelegate {}\n+\n+/// Defines the result of a built task\n+public class RuleResult {\n+    /// Reference to the C API result instance (for desctruction)\n+    private var result: llb_database_result_t\n+    /// The value of the result\n+    public let value: Data\n+    /// Signature of the node that generated the result\n+    public let signature: UInt64\n+    /// The build iteration this result was computed at\n+    public let computedAt: UInt64\n+    /// The build iteration this result was built at\n+    public let builtAt: UInt64\n+    /// A list of the dependencies of the computed task, use the database's allKeys to check for their key\n+    public let dependencies: [KeyID]\n+    \n+    fileprivate init(result: llb_database_result_t) {\n+        self.result = result\n+        value = Data(bytes: result.value.data, count: Int(result.value.length))\n+        signature = result.signature\n+        computedAt = result.computed_at\n+        builtAt = result.built_at\n+        \n+        dependencies = UnsafeBufferPointer(start: result.dependencies, count: Int(result.dependencies_count)).map { KeyID($0) }\n+    }\n+    \n+    deinit {\n+        withUnsafeMutablePointer(to: &result) { ptr in\n+            llb_database_destroy_result(ptr)\n+        }\n+    }\n+    \n+    /// Fetch result information about all dependencies via the given database\n+    public func fetchDependencies(database: Database.BuildDB) throws -> [RuleResult] {\n+        var result = [RuleResult]()\n+        \n+        for dep in dependencies {\n+            guard let res = try database.lookupRuleResult(keyID: dep) else {\n+                continue\n+            }\n+            result.append(res)\n+        }\n+        \n+        return result\n+    }\n+}\n+\n+extension RuleResult: CustomReflectable {\n+    public var customMirror: Mirror {","path":"products/llbuildSwift/BuildDBBindings.swift","position":145,"original_position":145,"commit_id":"138c8e98b07ba910e9efa58ad5644f0d08095941","original_commit_id":"138c8e98b07ba910e9efa58ad5644f0d08095941","user":{"login":"ddunbar","id":106625,"node_id":"MDQ6VXNlcjEwNjYyNQ==","avatar_url":"https://avatars3.githubusercontent.com/u/106625?v=4","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":"TIL, thanks!","created_at":"2019-04-17T16:23:01Z","updated_at":"2019-04-17T16:38:21Z","html_url":"https://github.com/apple/swift-llbuild/pull/471#discussion_r276326873","pull_request_url":"https://api.github.com/repos/apple/swift-llbuild/pulls/471","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/apple/swift-llbuild/pulls/comments/276326873"},"html":{"href":"https://github.com/apple/swift-llbuild/pull/471#discussion_r276326873"},"pull_request":{"href":"https://api.github.com/repos/apple/swift-llbuild/pulls/471"}}},"pull_request":{"url":"https://api.github.com/repos/apple/swift-llbuild/pulls/471","id":271023512,"node_id":"MDExOlB1bGxSZXF1ZXN0MjcxMDIzNTEy","html_url":"https://github.com/apple/swift-llbuild/pull/471","diff_url":"https://github.com/apple/swift-llbuild/pull/471.diff","patch_url":"https://github.com/apple/swift-llbuild/pull/471.patch","issue_url":"https://api.github.com/repos/apple/swift-llbuild/issues/471","number":471,"state":"open","locked":false,"title":"First draft for BuildDB bindings","user":{"login":"BenchR267","id":5857998,"node_id":"MDQ6VXNlcjU4NTc5OTg=","avatar_url":"https://avatars1.githubusercontent.com/u/5857998?v=4","gravatar_id":"","url":"https://api.github.com/users/BenchR267","html_url":"https://github.com/BenchR267","followers_url":"https://api.github.com/users/BenchR267/followers","following_url":"https://api.github.com/users/BenchR267/following{/other_user}","gists_url":"https://api.github.com/users/BenchR267/gists{/gist_id}","starred_url":"https://api.github.com/users/BenchR267/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BenchR267/subscriptions","organizations_url":"https://api.github.com/users/BenchR267/orgs","repos_url":"https://api.github.com/users/BenchR267/repos","events_url":"https://api.github.com/users/BenchR267/events{/privacy}","received_events_url":"https://api.github.com/users/BenchR267/received_events","type":"User","site_admin":false},"body":"This is a first draft for low level Swift bindings to the database layer of llbuild.\r\n\r\n**DO NOT MERGE**\r\nThe final form of this should be merged in multiple, smaller PRs. I just want to start an early discussion here already.\r\n\r\nMissing:\r\n- there may be some C/C++ memory management issues\r\n- the encoding for the more higher level types that are encoded in the database is missing\r\n    - it's up for discussion if I should reimplement or bridge the existing types (I prefer bridging but am open for arguments - reimplementing would be necessary anyway for additions)\r\n- the BuildDBSwiftBindingTest target will be removed and replaced by unit tests\r\n- the format needs to be adjusted (copyright line remove, clang-format, …)","created_at":"2019-04-16T18:25:45Z","updated_at":"2019-04-17T16:38:20Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e5d62bd215918b9e3c3483e691b5e1c044199e0e","assignee":null,"assignees":[],"requested_reviewers":[{"login":"dmbryson","id":468904,"node_id":"MDQ6VXNlcjQ2ODkwNA==","avatar_url":"https://avatars1.githubusercontent.com/u/468904?v=4","gravatar_id":"","url":"https://api.github.com/users/dmbryson","html_url":"https://github.com/dmbryson","followers_url":"https://api.github.com/users/dmbryson/followers","following_url":"https://api.github.com/users/dmbryson/following{/other_user}","gists_url":"https://api.github.com/users/dmbryson/gists{/gist_id}","starred_url":"https://api.github.com/users/dmbryson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dmbryson/subscriptions","organizations_url":"https://api.github.com/users/dmbryson/orgs","repos_url":"https://api.github.com/users/dmbryson/repos","events_url":"https://api.github.com/users/dmbryson/events{/privacy}","received_events_url":"https://api.github.com/users/dmbryson/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/apple/swift-llbuild/pulls/471/commits","review_comments_url":"https://api.github.com/repos/apple/swift-llbuild/pulls/471/comments","review_comment_url":"https://api.github.com/repos/apple/swift-llbuild/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apple/swift-llbuild/issues/471/comments","statuses_url":"https://api.github.com/repos/apple/swift-llbuild/statuses/138c8e98b07ba910e9efa58ad5644f0d08095941","head":{"label":"BenchR267:feature/build-db-swift-bindings","ref":"feature/build-db-swift-bindings","sha":"138c8e98b07ba910e9efa58ad5644f0d08095941","user":{"login":"BenchR267","id":5857998,"node_id":"MDQ6VXNlcjU4NTc5OTg=","avatar_url":"https://avatars1.githubusercontent.com/u/5857998?v=4","gravatar_id":"","url":"https://api.github.com/users/BenchR267","html_url":"https://github.com/BenchR267","followers_url":"https://api.github.com/users/BenchR267/followers","following_url":"https://api.github.com/users/BenchR267/following{/other_user}","gists_url":"https://api.github.com/users/BenchR267/gists{/gist_id}","starred_url":"https://api.github.com/users/BenchR267/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BenchR267/subscriptions","organizations_url":"https://api.github.com/users/BenchR267/orgs","repos_url":"https://api.github.com/users/BenchR267/repos","events_url":"https://api.github.com/users/BenchR267/events{/privacy}","received_events_url":"https://api.github.com/users/BenchR267/received_events","type":"User","site_admin":false},"repo":{"id":132493099,"node_id":"MDEwOlJlcG9zaXRvcnkxMzI0OTMwOTk=","name":"swift-llbuild","full_name":"BenchR267/swift-llbuild","private":false,"owner":{"login":"BenchR267","id":5857998,"node_id":"MDQ6VXNlcjU4NTc5OTg=","avatar_url":"https://avatars1.githubusercontent.com/u/5857998?v=4","gravatar_id":"","url":"https://api.github.com/users/BenchR267","html_url":"https://github.com/BenchR267","followers_url":"https://api.github.com/users/BenchR267/followers","following_url":"https://api.github.com/users/BenchR267/following{/other_user}","gists_url":"https://api.github.com/users/BenchR267/gists{/gist_id}","starred_url":"https://api.github.com/users/BenchR267/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BenchR267/subscriptions","organizations_url":"https://api.github.com/users/BenchR267/orgs","repos_url":"https://api.github.com/users/BenchR267/repos","events_url":"https://api.github.com/users/BenchR267/events{/privacy}","received_events_url":"https://api.github.com/users/BenchR267/received_events","type":"User","site_admin":false},"html_url":"https://github.com/BenchR267/swift-llbuild","description":"A low-level build system, used by Xcode 9 and the Swift Package Manager","fork":true,"url":"https://api.github.com/repos/BenchR267/swift-llbuild","forks_url":"https://api.github.com/repos/BenchR267/swift-llbuild/forks","keys_url":"https://api.github.com/repos/BenchR267/swift-llbuild/keys{/key_id}","collaborators_url":"https://api.github.com/repos/BenchR267/swift-llbuild/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/BenchR267/swift-llbuild/teams","hooks_url":"https://api.github.com/repos/BenchR267/swift-llbuild/hooks","issue_events_url":"https://api.github.com/repos/BenchR267/swift-llbuild/issues/events{/number}","events_url":"https://api.github.com/repos/BenchR267/swift-llbuild/events","assignees_url":"https://api.github.com/repos/BenchR267/swift-llbuild/assignees{/user}","branches_url":"https://api.github.com/repos/BenchR267/swift-llbuild/branches{/branch}","tags_url":"https://api.github.com/repos/BenchR267/swift-llbuild/tags","blobs_url":"https://api.github.com/repos/BenchR267/swift-llbuild/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/BenchR267/swift-llbuild/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/BenchR267/swift-llbuild/git/refs{/sha}","trees_url":"https://api.github.com/repos/BenchR267/swift-llbuild/git/trees{/sha}","statuses_url":"https://api.github.com/repos/BenchR267/swift-llbuild/statuses/{sha}","languages_url":"https://api.github.com/repos/BenchR267/swift-llbuild/languages","stargazers_url":"https://api.github.com/repos/BenchR267/swift-llbuild/stargazers","contributors_url":"https://api.github.com/repos/BenchR267/swift-llbuild/contributors","subscribers_url":"https://api.github.com/repos/BenchR267/swift-llbuild/subscribers","subscription_url":"https://api.github.com/repos/BenchR267/swift-llbuild/subscription","commits_url":"https://api.github.com/repos/BenchR267/swift-llbuild/commits{/sha}","git_commits_url":"https://api.github.com/repos/BenchR267/swift-llbuild/git/commits{/sha}","comments_url":"https://api.github.com/repos/BenchR267/swift-llbuild/comments{/number}","issue_comment_url":"https://api.github.com/repos/BenchR267/swift-llbuild/issues/comments{/number}","contents_url":"https://api.github.com/repos/BenchR267/swift-llbuild/contents/{+path}","compare_url":"https://api.github.com/repos/BenchR267/swift-llbuild/compare/{base}...{head}","merges_url":"https://api.github.com/repos/BenchR267/swift-llbuild/merges","archive_url":"https://api.github.com/repos/BenchR267/swift-llbuild/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/BenchR267/swift-llbuild/downloads","issues_url":"https://api.github.com/repos/BenchR267/swift-llbuild/issues{/number}","pulls_url":"https://api.github.com/repos/BenchR267/swift-llbuild/pulls{/number}","milestones_url":"https://api.github.com/repos/BenchR267/swift-llbuild/milestones{/number}","notifications_url":"https://api.github.com/repos/BenchR267/swift-llbuild/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/BenchR267/swift-llbuild/labels{/name}","releases_url":"https://api.github.com/repos/BenchR267/swift-llbuild/releases{/id}","deployments_url":"https://api.github.com/repos/BenchR267/swift-llbuild/deployments","created_at":"2018-05-07T17:17:09Z","updated_at":"2019-04-16T18:23:18Z","pushed_at":"2019-04-16T21:26:20Z","git_url":"git://github.com/BenchR267/swift-llbuild.git","ssh_url":"git@github.com:BenchR267/swift-llbuild.git","clone_url":"https://github.com/BenchR267/swift-llbuild.git","svn_url":"https://github.com/BenchR267/swift-llbuild","homepage":"","size":9883,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"apple:master","ref":"master","sha":"c392e44a56740c060371b403ccd343a95f1d8875","user":{"login":"apple","id":10639145,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEwNjM5MTQ1","avatar_url":"https://avatars0.githubusercontent.com/u/10639145?v=4","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":44838988,"node_id":"MDEwOlJlcG9zaXRvcnk0NDgzODk4OA==","name":"swift-llbuild","full_name":"apple/swift-llbuild","private":false,"owner":{"login":"apple","id":10639145,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEwNjM5MTQ1","avatar_url":"https://avatars0.githubusercontent.com/u/10639145?v=4","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},"html_url":"https://github.com/apple/swift-llbuild","description":"A low-level build system, used by Xcode and the Swift Package Manager","fork":false,"url":"https://api.github.com/repos/apple/swift-llbuild","forks_url":"https://api.github.com/repos/apple/swift-llbuild/forks","keys_url":"https://api.github.com/repos/apple/swift-llbuild/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apple/swift-llbuild/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apple/swift-llbuild/teams","hooks_url":"https://api.github.com/repos/apple/swift-llbuild/hooks","issue_events_url":"https://api.github.com/repos/apple/swift-llbuild/issues/events{/number}","events_url":"https://api.github.com/repos/apple/swift-llbuild/events","assignees_url":"https://api.github.com/repos/apple/swift-llbuild/assignees{/user}","branches_url":"https://api.github.com/repos/apple/swift-llbuild/branches{/branch}","tags_url":"https://api.github.com/repos/apple/swift-llbuild/tags","blobs_url":"https://api.github.com/repos/apple/swift-llbuild/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apple/swift-llbuild/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apple/swift-llbuild/git/refs{/sha}","trees_url":"https://api.github.com/repos/apple/swift-llbuild/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apple/swift-llbuild/statuses/{sha}","languages_url":"https://api.github.com/repos/apple/swift-llbuild/languages","stargazers_url":"https://api.github.com/repos/apple/swift-llbuild/stargazers","contributors_url":"https://api.github.com/repos/apple/swift-llbuild/contributors","subscribers_url":"https://api.github.com/repos/apple/swift-llbuild/subscribers","subscription_url":"https://api.github.com/repos/apple/swift-llbuild/subscription","commits_url":"https://api.github.com/repos/apple/swift-llbuild/commits{/sha}","git_commits_url":"https://api.github.com/repos/apple/swift-llbuild/git/commits{/sha}","comments_url":"https://api.github.com/repos/apple/swift-llbuild/comments{/number}","issue_comment_url":"https://api.github.com/repos/apple/swift-llbuild/issues/comments{/number}","contents_url":"https://api.github.com/repos/apple/swift-llbuild/contents/{+path}","compare_url":"https://api.github.com/repos/apple/swift-llbuild/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apple/swift-llbuild/merges","archive_url":"https://api.github.com/repos/apple/swift-llbuild/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apple/swift-llbuild/downloads","issues_url":"https://api.github.com/repos/apple/swift-llbuild/issues{/number}","pulls_url":"https://api.github.com/repos/apple/swift-llbuild/pulls{/number}","milestones_url":"https://api.github.com/repos/apple/swift-llbuild/milestones{/number}","notifications_url":"https://api.github.com/repos/apple/swift-llbuild/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apple/swift-llbuild/labels{/name}","releases_url":"https://api.github.com/repos/apple/swift-llbuild/releases{/id}","deployments_url":"https://api.github.com/repos/apple/swift-llbuild/deployments","created_at":"2015-10-23T21:15:45Z","updated_at":"2019-04-17T08:53:03Z","pushed_at":"2019-04-17T03:51:08Z","git_url":"git://github.com/apple/swift-llbuild.git","ssh_url":"git@github.com:apple/swift-llbuild.git","clone_url":"https://github.com/apple/swift-llbuild.git","svn_url":"https://github.com/apple/swift-llbuild","homepage":"","size":9870,"stargazers_count":661,"watchers_count":661,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":131,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":3,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":131,"open_issues":3,"watchers":661,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apple/swift-llbuild/pulls/471"},"html":{"href":"https://github.com/apple/swift-llbuild/pull/471"},"issue":{"href":"https://api.github.com/repos/apple/swift-llbuild/issues/471"},"comments":{"href":"https://api.github.com/repos/apple/swift-llbuild/issues/471/comments"},"review_comments":{"href":"https://api.github.com/repos/apple/swift-llbuild/pulls/471/comments"},"review_comment":{"href":"https://api.github.com/repos/apple/swift-llbuild/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apple/swift-llbuild/pulls/471/commits"},"statuses":{"href":"https://api.github.com/repos/apple/swift-llbuild/statuses/138c8e98b07ba910e9efa58ad5644f0d08095941"}},"author_association":"CONTRIBUTOR"}}
other: {"actor":{"display_login":"ddunbar"}}