{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":49910095,"defaultBranch":"main","name":"vapor","ownerLogin":"vapor","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-01-18T22:37:52.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/17364220?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1715334759.0","currentOid":""},"activityList":{"items":[{"before":"40de0edcc6d29ce70b9ceb3b6b4563ba8f1902ab","after":null,"ref":"refs/heads/noasync-waits","pushedAt":"2024-05-10T09:52:35.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"}},{"before":"e69a55b5322cecf276ec84f70ae01281264e4624","after":"d411635810ec09558d1b431ebd9f7a1e64040787","ref":"refs/heads/main","pushedAt":"2024-05-10T09:52:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"},"commit":{"message":"Mark all functions that use `wait` as `noasync` (#3168)\n\n* Add tests\r\n\r\n* Update NIO dependency\r\n\r\n* Migrate over to async APIs for FileIO\r\n\r\n* Mark entrypoint noasync\r\n\r\n* Update noasync code\r\n\r\n* Fix the noasync errors in the tests\r\n\r\n* Fix some test warnings\r\n\r\n* Add async versions of DotEnvFile\r\n\r\n* More async APIs\r\n\r\n* Migrate Application init\r\n\r\n* One more wait() function called with noasync\r\n\r\n* Migrate last wait call to noasync and provide async API\r\n\r\n* Make sure we tidy up the connection properly\r\n\r\n* Change the deprecation to avoid breaking all our users\r\n\r\n* Migrate the async tests to use the async Application\r\n\r\n* Revert back to noasync\r\n\r\n* Async tests should use async APIs\r\n\r\n* More async tests should use async APIs\r\n\r\n* Make BootCommand async\r\n\r\n* Migrate RoutesCommand to async\r\n\r\n* Non-breaking async init\r\n\r\n* Fix the tests","shortMessageHtmlLink":"Mark all functions that use wait as noasync (#3168)"}},{"before":"ce9036424dee40a3bedea7e78de4d9f68b94d36c","after":"40de0edcc6d29ce70b9ceb3b6b4563ba8f1902ab","ref":"refs/heads/noasync-waits","pushedAt":"2024-05-10T09:42:56.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"},"commit":{"message":"Merge branch 'main' into noasync-waits","shortMessageHtmlLink":"Merge branch 'main' into noasync-waits"}},{"before":"3155f492d96bf77be7908f88d33d9f9a71ae14c7","after":null,"ref":"refs/heads/log-error-source-location-info","pushedAt":"2024-05-10T02:35:28.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"gwynne","name":"Gwynne Raskind","path":"/gwynne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1130717?s=80&v=4"}},{"before":"cdbbd04f8d1f7d1cfb6a764480a56a611d0abdda","after":"e69a55b5322cecf276ec84f70ae01281264e4624","ref":"refs/heads/main","pushedAt":"2024-05-10T02:35:27.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"gwynne","name":"Gwynne Raskind","path":"/gwynne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1130717?s=80&v=4"},"commit":{"message":"Log source file and line info for errors in ErrorMiddleware when possible (#3187)\n\n* Make ErrorMiddleware report source location (file, function, line) if available from the given error (will always be available on Abort errors). Don't hold a lock while doing a JSON encode.\r\n* Improve the correctness of the error messages provided for DecodingErrors. Update tests accordingly.\r\n* Don't use hardcoded strings where not necessary","shortMessageHtmlLink":"Log source file and line info for errors in ErrorMiddleware when poss…"}},{"before":"e197fc7cf5e6c312b23c6156472fb677858e6c5b","after":"3155f492d96bf77be7908f88d33d9f9a71ae14c7","ref":"refs/heads/log-error-source-location-info","pushedAt":"2024-05-10T02:31:42.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"gwynne","name":"Gwynne Raskind","path":"/gwynne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1130717?s=80&v=4"},"commit":{"message":"Merge branch 'main' into log-error-source-location-info","shortMessageHtmlLink":"Merge branch 'main' into log-error-source-location-info"}},{"before":"01a2045e5f3c5b7c51b1cffdfd08cd5862bea205","after":null,"ref":"refs/heads/replace-old-filemanger-apis","pushedAt":"2024-05-10T02:31:06.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"gwynne","name":"Gwynne Raskind","path":"/gwynne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1130717?s=80&v=4"}},{"before":"915a61a6c72ab37abf9a4cfe0bf2249422594df1","after":"ce9036424dee40a3bedea7e78de4d9f68b94d36c","ref":"refs/heads/noasync-waits","pushedAt":"2024-05-09T09:27:40.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"},"commit":{"message":"Fix the tests","shortMessageHtmlLink":"Fix the tests"}},{"before":"2347b5f4ce5a1d8c92cbaee53f5502eb6098e78c","after":"915a61a6c72ab37abf9a4cfe0bf2249422594df1","ref":"refs/heads/noasync-waits","pushedAt":"2024-05-09T07:57:22.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"},"commit":{"message":"Migrate RoutesCommand to async","shortMessageHtmlLink":"Migrate RoutesCommand to async"}},{"before":"18e240798f17b54badc5f1ef674761a7d3823b9e","after":"2347b5f4ce5a1d8c92cbaee53f5502eb6098e78c","ref":"refs/heads/noasync-waits","pushedAt":"2024-05-09T07:09:48.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"},"commit":{"message":"Migrate the async tests to use the async Application","shortMessageHtmlLink":"Migrate the async tests to use the async Application"}},{"before":"647597a4a7410aa89803b7d01e4d8985e12febdd","after":"18e240798f17b54badc5f1ef674761a7d3823b9e","ref":"refs/heads/noasync-waits","pushedAt":"2024-05-09T07:02:11.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"},"commit":{"message":"Merge branch 'main' into noasync-waits","shortMessageHtmlLink":"Merge branch 'main' into noasync-waits"}},{"before":"90960fd7200a384c1289f1efb3490c4f5d58a8fa","after":null,"ref":"refs/heads/async-file-streaming","pushedAt":"2024-05-07T23:57:20.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"}},{"before":"af86ea4402c65dfbe70ac1bb9fd1d3fd9501a3f6","after":"cdbbd04f8d1f7d1cfb6a764480a56a611d0abdda","ref":"refs/heads/main","pushedAt":"2024-05-07T23:57:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"},"commit":{"message":"Provide AsyncFileStreaming API (#3184)\n\n* Provide async stream implemetation\r\n\r\n* Add AsyncFileTests\r\n\r\n* Fix double/int bug\r\n\r\n* Allow the stream writer to complete the writer promise for async streams while cascading errors thrown from the stream callback to the promise.\r\n\r\n* Use the same ordering for both stores to the isComplete atomic in ChannelResponseBodyStream\r\n\r\n* Actually call the onCompleted() callback in asyncStreamFile()\r\n\r\n* Make sure the promise is never dropped on the floor in release builds (in which assertions like the one in ChannelResponseBodyStream's deinit aren't checked).\r\n\r\n* Make completion handler async\r\n\r\n* Use NIOFilesytemFoundationCompat\r\n\r\n* Fix imports\r\n\r\n* Make sure the NIO FileHandle is always closed on error.\r\n\r\n* Make sure the onCompleted() callback is always invoked in the error case even if trying to write the error indication to the stream fails\r\n\r\n* Migrate old ELF stream file function to use async version under the hood\r\n\r\n* Migrate FileMiddleware to async\r\n\r\n* Heavily revise ChannelResponseBodyStream's logic to eliminate races, atomics, and to handle errors and the promise completions more consistently. Especially affects async streaming, but eliminates error handling issues in non-async streaming as well.\r\n\r\n* Fix off-by-one error in FileIO.readFile(at:chunkSize:offset:byteCount:) async\r\n\r\n* Use XCTAssertNoThrow() to simplify several of the AsyncFileTests\r\n\r\n* Fix testSimpleETagHeaders test\r\n\r\n* Add async versions for XCTVapor and mark wait() calls with noasync\r\n\r\n* Fix XCTVapor error messages\r\n\r\n* Try and make tests async\r\n\r\n* Fix some warnings in tests\r\n\r\n* One less test running on 8080\r\n\r\n* Fix the tests\r\n\r\n* Revert \"Fix the tests\"\r\n\r\nThis reverts commit c98f0bf1516787ddc639f59a786e2f859cb492f9.\r\n\r\n* Hook up the response body callback for async streams\r\n\r\n* Remove a couple of instances of FileManager\r\n\r\n* Remove FileManager from AsyncFileTests\r\n\r\n* Fix default file\r\n\r\n* Fix the tests\r\n\r\n* Rework it to reduce all the returns\r\n\r\n* Update Sources/Vapor/Utilities/FileIO.swift\r\n\r\nCo-authored-by: Gwynne Raskind \r\n\r\n* PR Reviews\r\n\r\n* Fix merge issue:\r\n\r\n* Test the correct behaviour\r\n\r\n---------\r\n\r\nCo-authored-by: Gwynne Raskind ","shortMessageHtmlLink":"Provide AsyncFileStreaming API (#3184)"}},{"before":"2b148af3ca499aac7186ace476a441a79bb0fab2","after":"90960fd7200a384c1289f1efb3490c4f5d58a8fa","ref":"refs/heads/async-file-streaming","pushedAt":"2024-05-07T23:44:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"},"commit":{"message":"Test the correct behaviour","shortMessageHtmlLink":"Test the correct behaviour"}},{"before":"f73aa6a550d56168e58732c659489433297bc829","after":"2b148af3ca499aac7186ace476a441a79bb0fab2","ref":"refs/heads/async-file-streaming","pushedAt":"2024-05-07T23:39:01.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"gwynne","name":"Gwynne Raskind","path":"/gwynne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1130717?s=80&v=4"},"commit":{"message":"Merge branch 'main' into async-file-streaming","shortMessageHtmlLink":"Merge branch 'main' into async-file-streaming"}},{"before":"0d6b4f48fa98c8f2fc013d142a2bfd2a768e1e48","after":"f73aa6a550d56168e58732c659489433297bc829","ref":"refs/heads/async-file-streaming","pushedAt":"2024-05-07T23:32:18.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"},"commit":{"message":"Fix merge issue:","shortMessageHtmlLink":"Fix merge issue:"}},{"before":"b134912240ad07915f10bbfee8013b8118b976f2","after":"0d6b4f48fa98c8f2fc013d142a2bfd2a768e1e48","ref":"refs/heads/async-file-streaming","pushedAt":"2024-05-07T22:36:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"},"commit":{"message":"Update Sources/Vapor/Utilities/FileIO.swift\n\nCo-authored-by: Gwynne Raskind ","shortMessageHtmlLink":"Update Sources/Vapor/Utilities/FileIO.swift"}},{"before":"80a783de0dc32f3bbcdb0226ec9f13dc8512be77","after":"b134912240ad07915f10bbfee8013b8118b976f2","ref":"refs/heads/async-file-streaming","pushedAt":"2024-05-07T22:02:16.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"},"commit":{"message":"Rework it to reduce all the returns","shortMessageHtmlLink":"Rework it to reduce all the returns"}},{"before":"c98f0bf1516787ddc639f59a786e2f859cb492f9","after":"80a783de0dc32f3bbcdb0226ec9f13dc8512be77","ref":"refs/heads/async-file-streaming","pushedAt":"2024-05-07T20:39:57.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"},"commit":{"message":"Hook up the response body callback for async streams","shortMessageHtmlLink":"Hook up the response body callback for async streams"}},{"before":"1f1ccf9ca9cf1887dd86868eec63f30141dcc49b","after":"c98f0bf1516787ddc639f59a786e2f859cb492f9","ref":"refs/heads/async-file-streaming","pushedAt":"2024-05-07T20:24:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"},"commit":{"message":"Fix the tests","shortMessageHtmlLink":"Fix the tests"}},{"before":"ee83ce78b8ff6031c2be2cf22bc3200045f81e29","after":"1f1ccf9ca9cf1887dd86868eec63f30141dcc49b","ref":"refs/heads/async-file-streaming","pushedAt":"2024-05-07T20:08:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"},"commit":{"message":"One less test running on 8080","shortMessageHtmlLink":"One less test running on 8080"}},{"before":"031fc99ae85c82fca6494c4a66a0f8ea7103b279","after":"ee83ce78b8ff6031c2be2cf22bc3200045f81e29","ref":"refs/heads/async-file-streaming","pushedAt":"2024-05-07T19:46:52.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"},"commit":{"message":"Fix some warnings in tests","shortMessageHtmlLink":"Fix some warnings in tests"}},{"before":"38588ab14e2f7805122162c5ab6c8c30f8a4684f","after":"e197fc7cf5e6c312b23c6156472fb677858e6c5b","ref":"refs/heads/log-error-source-location-info","pushedAt":"2024-05-07T17:35:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gwynne","name":"Gwynne Raskind","path":"/gwynne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1130717?s=80&v=4"},"commit":{"message":"Don't use hardcoded strings where not necessary","shortMessageHtmlLink":"Don't use hardcoded strings where not necessary"}},{"before":null,"after":"38588ab14e2f7805122162c5ab6c8c30f8a4684f","ref":"refs/heads/log-error-source-location-info","pushedAt":"2024-05-07T17:13:13.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gwynne","name":"Gwynne Raskind","path":"/gwynne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1130717?s=80&v=4"},"commit":{"message":"Improve the correctness of the error messages provided for DecodingErrors. Update tests accordingly.","shortMessageHtmlLink":"Improve the correctness of the error messages provided for DecodingEr…"}},{"before":null,"after":"277c21b4f1b5373529bd4851d8f400b5aba9be79","ref":"refs/heads/async-websockets","pushedAt":"2024-05-06T15:41:51.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"},"commit":{"message":"Add failing test for Sendable crash","shortMessageHtmlLink":"Add failing test for Sendable crash"}},{"before":"3792bf607ad464858faedf85d064a5775079f62b","after":"031fc99ae85c82fca6494c4a66a0f8ea7103b279","ref":"refs/heads/async-file-streaming","pushedAt":"2024-05-05T21:47:39.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"gwynne","name":"Gwynne Raskind","path":"/gwynne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1130717?s=80&v=4"},"commit":{"message":"Use XCTAssertNoThrow() to simplify several of the AsyncFileTests","shortMessageHtmlLink":"Use XCTAssertNoThrow() to simplify several of the AsyncFileTests"}},{"before":"f2988e48f7a6817ea736c2e25d4c83176c3c688e","after":"3792bf607ad464858faedf85d064a5775079f62b","ref":"refs/heads/async-file-streaming","pushedAt":"2024-05-05T18:08:12.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"0xTim","name":"Tim Condon","path":"/0xTim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9938337?s=80&v=4"},"commit":{"message":"Migrate FileMiddleware to async","shortMessageHtmlLink":"Migrate FileMiddleware to async"}},{"before":"22afd1d604810812199fa1f0cb4fe05a49278915","after":null,"ref":"refs/heads/configurable-accept-quantum","pushedAt":"2024-05-04T14:19:37.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"gwynne","name":"Gwynne Raskind","path":"/gwynne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1130717?s=80&v=4"}},{"before":"b1057fea89309e5ff82ade0984cadbee7ee4d60f","after":"af86ea4402c65dfbe70ac1bb9fd1d3fd9501a3f6","ref":"refs/heads/main","pushedAt":"2024-05-04T14:19:37.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"gwynne","name":"Gwynne Raskind","path":"/gwynne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1130717?s=80&v=4"},"commit":{"message":"Make # of connections accepted per event loop cycle configurable, and raise the default (#3186)\n\nPer @weissi's suggestion, make the number of connections accepted per event loop tick configurable.","shortMessageHtmlLink":"Make # of connections accepted per event loop cycle configurable, and…"}},{"before":"67311b7d240e46a5b470b47fa8d480341eb8d461","after":"22afd1d604810812199fa1f0cb4fe05a49278915","ref":"refs/heads/configurable-accept-quantum","pushedAt":"2024-05-04T13:59:16.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gwynne","name":"Gwynne Raskind","path":"/gwynne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1130717?s=80&v=4"},"commit":{"message":"Per @weissi's suggestion, make the number of connections accepted per event loop tick configurable.","shortMessageHtmlLink":"Per @weissi's suggestion, make the number of connections accepted per…"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAERm8B0gA","startCursor":null,"endCursor":null}},"title":"Activity · vapor/vapor"}