{"action":"created","comment":{"url":"https://api.github.com/repos/apple/swift-nio/pulls/comments/193103455","pull_request_review_id":126006599,"id":193103455,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5MzEwMzQ1NQ==","diff_hunk":"@@ -79,6 +85,81 @@ public struct CircularBuffer<E>: CustomStringConvertible, AppendableCollection {\n         }\n     }\n \n+    /// Replaces the specified subrange of elements with the given collection.\n+    ///\n+    /// - Parameter subrange:\n+    /// The subrange of the collection to replace. The bounds of the range must be valid indices of the collection.\n+    ///\n+    /// - Parameter newElements:\n+    /// The new elements to add to the collection.\n+    ///\n+    /// *O(n)* where _n_ is the length of the new elements collection if the subrange equals to _n_\n+    ///\n+    /// *O(m)* where _m_ is the combined length of the collection and _newElements_\n+    public mutating func replaceSubrange<C>(_ subrange: Range<Index>, with newElements: C) where C : Collection, E == C.Element {\n+        precondition(subrange.lowerBound >= self.startIndex && subrange.upperBound <= self.endIndex, \"Subrange out of bounds\")\n+\n+        let lowerBound = bufferIndex(ofIndex: subrange.lowerBound)\n+        let upperBound = bufferIndex(ofIndex: subrange.upperBound == self.endIndex ? subrange.upperBound - 1 : subrange.upperBound)\n+\n+        if subrange.count == newElements.count {\n+            for (index, element) in zip(stride(from: subrange.lowerBound, to: subrange.upperBound, by: 1), newElements) {\n+                self.buffer[self.bufferIndex(ofIndex: index)] = element\n+            }\n+        } else if subrange.count == self.count && newElements.isEmpty {\n+            self.removeSubrange(subrange)\n+        } else {\n+            var newBuffer: ContiguousArray<E?> = []\n+            #if swift(>=4.2)\n+            let capacityDelta = (newElements.count - subrange.count)\n+            #else\n+            let capacityDelta = (Int(newElements.count) - subrange.count)\n+            #endif\n+            let newCapacity = Int(UInt32(self.buffer.count + capacityDelta).nextPowerOf2())\n+            newBuffer.reserveCapacity(newCapacity)\n+            var index = self.headIdx\n+            while index != self.tailIdx {\n+                if index == lowerBound {\n+                    for element in newElements {\n+                        newBuffer.append(element)\n+                    }\n+                    while index < upperBound {\n+                        index = self.bufferIndex(after: index)\n+                    }\n+                } else {\n+                    newBuffer.append(self.buffer[index])\n+                    index = self.bufferIndex(after: index)\n+                }\n+            }\n+\n+            self.tailIdx = newBuffer.count\n+            let repetitionCount = self.buffer.count - newBuffer.count\n+            if repetitionCount > 0 {\n+                newBuffer.append(contentsOf: repeatElement(nil, count: repetitionCount))\n+            }\n+            self.headIdx = 0\n+            self.buffer = newBuffer\n+        }\n+    }\n+\n+    public mutating func removeSubrange(_ bounds: Range<Int>) {\n+        if bounds.count == 1 {\n+            _ = remove(at: bounds.lowerBound)\n+        } else if bounds.count == self.count {\n+            self = .init(initialRingCapacity: self.buffer.count)\n+        } else {\n+            replaceSubrange(bounds, with: [])\n+        }\n+    }\n+\n+    public mutating func removeLast(_ n: Int) {","path":"Sources/NIO/CircularBuffer.swift","position":93,"original_position":93,"commit_id":"60c1a8ffdf35f472ec9ef5866f25eeed0e806a22","original_commit_id":"60c1a8ffdf35f472ec9ef5866f25eeed0e806a22","user":{"login":"Lukasa","id":1382556,"node_id":"MDQ6VXNlcjEzODI1NTY=","avatar_url":"https://avatars1.githubusercontent.com/u/1382556?v=4","gravatar_id":"","url":"https://api.github.com/users/Lukasa","html_url":"https://github.com/Lukasa","followers_url":"https://api.github.com/users/Lukasa/followers","following_url":"https://api.github.com/users/Lukasa/following{/other_user}","gists_url":"https://api.github.com/users/Lukasa/gists{/gist_id}","starred_url":"https://api.github.com/users/Lukasa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Lukasa/subscriptions","organizations_url":"https://api.github.com/users/Lukasa/orgs","repos_url":"https://api.github.com/users/Lukasa/repos","events_url":"https://api.github.com/users/Lukasa/events{/privacy}","received_events_url":"https://api.github.com/users/Lukasa/received_events","type":"User","site_admin":false},"body":"Can you add a doc comment here too please?","created_at":"2018-06-05T14:52:52Z","updated_at":"2018-06-05T15:02:01Z","html_url":"https://github.com/apple/swift-nio/pull/466#discussion_r193103455","pull_request_url":"https://api.github.com/repos/apple/swift-nio/pulls/466","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/apple/swift-nio/pulls/comments/193103455"},"html":{"href":"https://github.com/apple/swift-nio/pull/466#discussion_r193103455"},"pull_request":{"href":"https://api.github.com/repos/apple/swift-nio/pulls/466"}}},"pull_request":{"url":"https://api.github.com/repos/apple/swift-nio/pulls/466","id":192364745,"node_id":"MDExOlB1bGxSZXF1ZXN0MTkyMzY0NzQ1","html_url":"https://github.com/apple/swift-nio/pull/466","diff_url":"https://github.com/apple/swift-nio/pull/466.diff","patch_url":"https://github.com/apple/swift-nio/pull/466.patch","issue_url":"https://api.github.com/repos/apple/swift-nio/issues/466","number":466,"state":"open","locked":false,"title":"Make CircularBuffer conform to more protocols [Fixes #350]","user":{"login":"esttorhe","id":2642850,"node_id":"MDQ6VXNlcjI2NDI4NTA=","avatar_url":"https://avatars0.githubusercontent.com/u/2642850?v=4","gravatar_id":"","url":"https://api.github.com/users/esttorhe","html_url":"https://github.com/esttorhe","followers_url":"https://api.github.com/users/esttorhe/followers","following_url":"https://api.github.com/users/esttorhe/following{/other_user}","gists_url":"https://api.github.com/users/esttorhe/gists{/gist_id}","starred_url":"https://api.github.com/users/esttorhe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/esttorhe/subscriptions","organizations_url":"https://api.github.com/users/esttorhe/orgs","repos_url":"https://api.github.com/users/esttorhe/repos","events_url":"https://api.github.com/users/esttorhe/events{/privacy}","received_events_url":"https://api.github.com/users/esttorhe/received_events","type":"User","site_admin":false},"body":"Make `CircularBuffer` conform to more protocols\r\n\r\n### Motivation:\r\n\r\nDuring the `PR` apple/swift-nio#347 there was a discussion around which protocols this auto-expanding buffer should conform; the following 3 were the winners:\r\n\r\n1. `BidirectionalCollection`\r\n1. `RandomAccessCollection`\r\n1. `RangeReplaceableCollection`\r\n\r\n### Modifications:\r\n\r\nAdded conformance to the 3 protocols and provided an implementation of 5 methods:\r\n\r\n1. `replaceSubrange(:with:)`\r\n1. `index(before:)`\r\n1. `removeSubrange(:)`\r\n1. `remove(at:)`\r\n1. `removeLast(:)`\r\n\r\n\r\n### Result:\r\n\r\nWith the conformance of this 3 protocols and the implementation of this 5 functions we get `dropLast()`, `dropLast(:)`, `removeFirst()`, `removeLast()` & `popLast()` for free.\r\n\r\n### Comments:\r\n\r\nI tried to make the updates of the internal `buffer` as direct as possible without going through lots of `API`s (e.g. directly manipulating the head and tail indexes whenever possible) to prevent lots of overhead.\r\n\r\nSame with the `replaceSubrange` where I added a couple of checks that make the code more verbose (if the range and the count of new elements matches we only need to override values; or if the count of new elements is 0 that means we want to remove elements; etc).\r\n\r\nI thought about adding a few extra scenarios (e.g: the `lowerBound` is `headIdx`; thus we only need to `nil` out the elements up to `upperBound` and update the reference to `headIdx`; and same case where `upperBound` is `tailIdx`, etc) but decided against because then the method would have grown too big to be manageable and first wanted to run this ideas by you.\r\n\r\nIf you dim this worth I could extra some of this implementations in submethods and then call them when necessary. \r\n\r\nFixes #350 ","created_at":"2018-06-04T10:32:08Z","updated_at":"2018-06-05T15:02:02Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6ee7ab2816649161c5b9d32f2b28303d4f83d1bf","assignee":null,"assignees":[],"requested_reviewers":[{"login":"normanmaurer","id":439362,"node_id":"MDQ6VXNlcjQzOTM2Mg==","avatar_url":"https://avatars3.githubusercontent.com/u/439362?v=4","gravatar_id":"","url":"https://api.github.com/users/normanmaurer","html_url":"https://github.com/normanmaurer","followers_url":"https://api.github.com/users/normanmaurer/followers","following_url":"https://api.github.com/users/normanmaurer/following{/other_user}","gists_url":"https://api.github.com/users/normanmaurer/gists{/gist_id}","starred_url":"https://api.github.com/users/normanmaurer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/normanmaurer/subscriptions","organizations_url":"https://api.github.com/users/normanmaurer/orgs","repos_url":"https://api.github.com/users/normanmaurer/repos","events_url":"https://api.github.com/users/normanmaurer/events{/privacy}","received_events_url":"https://api.github.com/users/normanmaurer/received_events","type":"User","site_admin":false},{"login":"weissi","id":624238,"node_id":"MDQ6VXNlcjYyNDIzOA==","avatar_url":"https://avatars2.githubusercontent.com/u/624238?v=4","gravatar_id":"","url":"https://api.github.com/users/weissi","html_url":"https://github.com/weissi","followers_url":"https://api.github.com/users/weissi/followers","following_url":"https://api.github.com/users/weissi/following{/other_user}","gists_url":"https://api.github.com/users/weissi/gists{/gist_id}","starred_url":"https://api.github.com/users/weissi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/weissi/subscriptions","organizations_url":"https://api.github.com/users/weissi/orgs","repos_url":"https://api.github.com/users/weissi/repos","events_url":"https://api.github.com/users/weissi/events{/privacy}","received_events_url":"https://api.github.com/users/weissi/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":844994002,"node_id":"MDU6TGFiZWw4NDQ5OTQwMDI=","url":"https://api.github.com/repos/apple/swift-nio/labels/%F0%9F%94%BC%20needs-minor-version-bump","name":"🔼 needs-minor-version-bump","color":"CE32BC","default":false}],"milestone":{"url":"https://api.github.com/repos/apple/swift-nio/milestones/18","html_url":"https://github.com/apple/swift-nio/milestone/18","labels_url":"https://api.github.com/repos/apple/swift-nio/milestones/18/labels","id":3390580,"node_id":"MDk6TWlsZXN0b25lMzM5MDU4MA==","number":18,"title":"1.9.0","description":"","creator":{"login":"Lukasa","id":1382556,"node_id":"MDQ6VXNlcjEzODI1NTY=","avatar_url":"https://avatars1.githubusercontent.com/u/1382556?v=4","gravatar_id":"","url":"https://api.github.com/users/Lukasa","html_url":"https://github.com/Lukasa","followers_url":"https://api.github.com/users/Lukasa/followers","following_url":"https://api.github.com/users/Lukasa/following{/other_user}","gists_url":"https://api.github.com/users/Lukasa/gists{/gist_id}","starred_url":"https://api.github.com/users/Lukasa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Lukasa/subscriptions","organizations_url":"https://api.github.com/users/Lukasa/orgs","repos_url":"https://api.github.com/users/Lukasa/repos","events_url":"https://api.github.com/users/Lukasa/events{/privacy}","received_events_url":"https://api.github.com/users/Lukasa/received_events","type":"User","site_admin":false},"open_issues":4,"closed_issues":3,"state":"open","created_at":"2018-05-31T14:45:14Z","updated_at":"2018-06-05T14:27:59Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/apple/swift-nio/pulls/466/commits","review_comments_url":"https://api.github.com/repos/apple/swift-nio/pulls/466/comments","review_comment_url":"https://api.github.com/repos/apple/swift-nio/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apple/swift-nio/issues/466/comments","statuses_url":"https://api.github.com/repos/apple/swift-nio/statuses/60c1a8ffdf35f472ec9ef5866f25eeed0e806a22","head":{"label":"esttorhe:issue_350","ref":"issue_350","sha":"60c1a8ffdf35f472ec9ef5866f25eeed0e806a22","user":{"login":"esttorhe","id":2642850,"node_id":"MDQ6VXNlcjI2NDI4NTA=","avatar_url":"https://avatars0.githubusercontent.com/u/2642850?v=4","gravatar_id":"","url":"https://api.github.com/users/esttorhe","html_url":"https://github.com/esttorhe","followers_url":"https://api.github.com/users/esttorhe/followers","following_url":"https://api.github.com/users/esttorhe/following{/other_user}","gists_url":"https://api.github.com/users/esttorhe/gists{/gist_id}","starred_url":"https://api.github.com/users/esttorhe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/esttorhe/subscriptions","organizations_url":"https://api.github.com/users/esttorhe/orgs","repos_url":"https://api.github.com/users/esttorhe/repos","events_url":"https://api.github.com/users/esttorhe/events{/privacy}","received_events_url":"https://api.github.com/users/esttorhe/received_events","type":"User","site_admin":false},"repo":{"id":135828079,"node_id":"MDEwOlJlcG9zaXRvcnkxMzU4MjgwNzk=","name":"swift-nio","full_name":"esttorhe/swift-nio","owner":{"login":"esttorhe","id":2642850,"node_id":"MDQ6VXNlcjI2NDI4NTA=","avatar_url":"https://avatars0.githubusercontent.com/u/2642850?v=4","gravatar_id":"","url":"https://api.github.com/users/esttorhe","html_url":"https://github.com/esttorhe","followers_url":"https://api.github.com/users/esttorhe/followers","following_url":"https://api.github.com/users/esttorhe/following{/other_user}","gists_url":"https://api.github.com/users/esttorhe/gists{/gist_id}","starred_url":"https://api.github.com/users/esttorhe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/esttorhe/subscriptions","organizations_url":"https://api.github.com/users/esttorhe/orgs","repos_url":"https://api.github.com/users/esttorhe/repos","events_url":"https://api.github.com/users/esttorhe/events{/privacy}","received_events_url":"https://api.github.com/users/esttorhe/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/esttorhe/swift-nio","description":"Event-driven network application framework for high performance protocol servers & clients, non-blocking.","fork":true,"url":"https://api.github.com/repos/esttorhe/swift-nio","forks_url":"https://api.github.com/repos/esttorhe/swift-nio/forks","keys_url":"https://api.github.com/repos/esttorhe/swift-nio/keys{/key_id}","collaborators_url":"https://api.github.com/repos/esttorhe/swift-nio/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/esttorhe/swift-nio/teams","hooks_url":"https://api.github.com/repos/esttorhe/swift-nio/hooks","issue_events_url":"https://api.github.com/repos/esttorhe/swift-nio/issues/events{/number}","events_url":"https://api.github.com/repos/esttorhe/swift-nio/events","assignees_url":"https://api.github.com/repos/esttorhe/swift-nio/assignees{/user}","branches_url":"https://api.github.com/repos/esttorhe/swift-nio/branches{/branch}","tags_url":"https://api.github.com/repos/esttorhe/swift-nio/tags","blobs_url":"https://api.github.com/repos/esttorhe/swift-nio/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/esttorhe/swift-nio/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/esttorhe/swift-nio/git/refs{/sha}","trees_url":"https://api.github.com/repos/esttorhe/swift-nio/git/trees{/sha}","statuses_url":"https://api.github.com/repos/esttorhe/swift-nio/statuses/{sha}","languages_url":"https://api.github.com/repos/esttorhe/swift-nio/languages","stargazers_url":"https://api.github.com/repos/esttorhe/swift-nio/stargazers","contributors_url":"https://api.github.com/repos/esttorhe/swift-nio/contributors","subscribers_url":"https://api.github.com/repos/esttorhe/swift-nio/subscribers","subscription_url":"https://api.github.com/repos/esttorhe/swift-nio/subscription","commits_url":"https://api.github.com/repos/esttorhe/swift-nio/commits{/sha}","git_commits_url":"https://api.github.com/repos/esttorhe/swift-nio/git/commits{/sha}","comments_url":"https://api.github.com/repos/esttorhe/swift-nio/comments{/number}","issue_comment_url":"https://api.github.com/repos/esttorhe/swift-nio/issues/comments{/number}","contents_url":"https://api.github.com/repos/esttorhe/swift-nio/contents/{+path}","compare_url":"https://api.github.com/repos/esttorhe/swift-nio/compare/{base}...{head}","merges_url":"https://api.github.com/repos/esttorhe/swift-nio/merges","archive_url":"https://api.github.com/repos/esttorhe/swift-nio/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/esttorhe/swift-nio/downloads","issues_url":"https://api.github.com/repos/esttorhe/swift-nio/issues{/number}","pulls_url":"https://api.github.com/repos/esttorhe/swift-nio/pulls{/number}","milestones_url":"https://api.github.com/repos/esttorhe/swift-nio/milestones{/number}","notifications_url":"https://api.github.com/repos/esttorhe/swift-nio/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/esttorhe/swift-nio/labels{/name}","releases_url":"https://api.github.com/repos/esttorhe/swift-nio/releases{/id}","deployments_url":"https://api.github.com/repos/esttorhe/swift-nio/deployments","created_at":"2018-06-02T15:12:01Z","updated_at":"2018-06-02T15:12:04Z","pushed_at":"2018-06-05T10:22:24Z","git_url":"git://github.com/esttorhe/swift-nio.git","ssh_url":"git@github.com:esttorhe/swift-nio.git","clone_url":"https://github.com/esttorhe/swift-nio.git","svn_url":"https://github.com/esttorhe/swift-nio","homepage":"","size":11082,"stargazers_count":0,"watchers_count":0,"language":"Swift","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":"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":"d78ae0beed590d8f4bf26fa17e2d92261c7e5cb5","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":120498971,"node_id":"MDEwOlJlcG9zaXRvcnkxMjA0OTg5NzE=","name":"swift-nio","full_name":"apple/swift-nio","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},"private":false,"html_url":"https://github.com/apple/swift-nio","description":"Event-driven network application framework for high performance protocol servers & clients, non-blocking.","fork":false,"url":"https://api.github.com/repos/apple/swift-nio","forks_url":"https://api.github.com/repos/apple/swift-nio/forks","keys_url":"https://api.github.com/repos/apple/swift-nio/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apple/swift-nio/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apple/swift-nio/teams","hooks_url":"https://api.github.com/repos/apple/swift-nio/hooks","issue_events_url":"https://api.github.com/repos/apple/swift-nio/issues/events{/number}","events_url":"https://api.github.com/repos/apple/swift-nio/events","assignees_url":"https://api.github.com/repos/apple/swift-nio/assignees{/user}","branches_url":"https://api.github.com/repos/apple/swift-nio/branches{/branch}","tags_url":"https://api.github.com/repos/apple/swift-nio/tags","blobs_url":"https://api.github.com/repos/apple/swift-nio/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apple/swift-nio/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apple/swift-nio/git/refs{/sha}","trees_url":"https://api.github.com/repos/apple/swift-nio/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apple/swift-nio/statuses/{sha}","languages_url":"https://api.github.com/repos/apple/swift-nio/languages","stargazers_url":"https://api.github.com/repos/apple/swift-nio/stargazers","contributors_url":"https://api.github.com/repos/apple/swift-nio/contributors","subscribers_url":"https://api.github.com/repos/apple/swift-nio/subscribers","subscription_url":"https://api.github.com/repos/apple/swift-nio/subscription","commits_url":"https://api.github.com/repos/apple/swift-nio/commits{/sha}","git_commits_url":"https://api.github.com/repos/apple/swift-nio/git/commits{/sha}","comments_url":"https://api.github.com/repos/apple/swift-nio/comments{/number}","issue_comment_url":"https://api.github.com/repos/apple/swift-nio/issues/comments{/number}","contents_url":"https://api.github.com/repos/apple/swift-nio/contents/{+path}","compare_url":"https://api.github.com/repos/apple/swift-nio/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apple/swift-nio/merges","archive_url":"https://api.github.com/repos/apple/swift-nio/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apple/swift-nio/downloads","issues_url":"https://api.github.com/repos/apple/swift-nio/issues{/number}","pulls_url":"https://api.github.com/repos/apple/swift-nio/pulls{/number}","milestones_url":"https://api.github.com/repos/apple/swift-nio/milestones{/number}","notifications_url":"https://api.github.com/repos/apple/swift-nio/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apple/swift-nio/labels{/name}","releases_url":"https://api.github.com/repos/apple/swift-nio/releases{/id}","deployments_url":"https://api.github.com/repos/apple/swift-nio/deployments","created_at":"2018-02-06T17:47:31Z","updated_at":"2018-06-05T10:25:14Z","pushed_at":"2018-06-05T10:22:26Z","git_url":"git://github.com/apple/swift-nio.git","ssh_url":"git@github.com:apple/swift-nio.git","clone_url":"https://github.com/apple/swift-nio.git","svn_url":"https://github.com/apple/swift-nio","homepage":"","size":11039,"stargazers_count":3731,"watchers_count":3731,"language":"Swift","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":155,"mirror_url":null,"archived":false,"open_issues_count":68,"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":155,"open_issues":68,"watchers":3731,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apple/swift-nio/pulls/466"},"html":{"href":"https://github.com/apple/swift-nio/pull/466"},"issue":{"href":"https://api.github.com/repos/apple/swift-nio/issues/466"},"comments":{"href":"https://api.github.com/repos/apple/swift-nio/issues/466/comments"},"review_comments":{"href":"https://api.github.com/repos/apple/swift-nio/pulls/466/comments"},"review_comment":{"href":"https://api.github.com/repos/apple/swift-nio/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apple/swift-nio/pulls/466/commits"},"statuses":{"href":"https://api.github.com/repos/apple/swift-nio/statuses/60c1a8ffdf35f472ec9ef5866f25eeed0e806a22"}},"author_association":"NONE"}}
{"actor":{"display_login":"Lukasa"}}