{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":120498971,"defaultBranch":"main","name":"swift-nio","ownerLogin":"apple","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-02-06T17:47:31.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/10639145?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1715681534.0","currentOid":""},"activityList":{"items":[{"before":"7d1b76d27b2b124cbd945c3b3cee62a0e79b94e7","after":"4612941246f51ce3fb686418014e2cdd7de74c2c","ref":"refs/heads/main","pushedAt":"2024-05-23T11:58:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Remove storage indirection for FileSystemError (#2726)\n\nMotivation:\r\n\r\nExistentials are boxed if they are wider than 24 bytes. A number of\r\nvalue types in NIO are implemented with storage classes so that the\r\nalloaction is only paid for once. However, existential errors are\r\ntreated differently, they are unconditionally boxed. Implementing errors\r\nwith storage classes therefore introduces an unnecessary allocation.\r\n\r\nModifications:\r\n\r\n- Remove the storage class for FileSystemError\r\n- Remove the copy-on-write test\r\n\r\nResult:\r\n\r\nFewer allocations","shortMessageHtmlLink":"Remove storage indirection for FileSystemError (#2726)"}},{"before":"196ceab4b21ba5b84eea522f9829db31b7b91f19","after":"7d1b76d27b2b124cbd945c3b3cee62a0e79b94e7","ref":"refs/heads/main","pushedAt":"2024-05-23T09:07:45.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"rnro","name":"Rick Newton-Rogers","path":"/rnro","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/104022490?s=80&v=4"},"commit":{"message":"testSimpleMPTCP should not fail for ENOPROTOOPT (#2725)\n\nMotivation:\r\n\r\nMPTCP implementations are permitted to return `ENOPROTOOPT` if MPTCP has\r\nbeen disabled. This should not report as a test failure.\r\n\r\nModifications:\r\n\r\nInstead of failing the test, log the permitted error and return.\r\n\r\nResult:\r\n\r\nNo more misleading testSimpleMPTCP test failures","shortMessageHtmlLink":"testSimpleMPTCP should not fail for ENOPROTOOPT (#2725)"}},{"before":"609469f9689603c8419f1402dd984b0faa763c54","after":"196ceab4b21ba5b84eea522f9829db31b7b91f19","ref":"refs/heads/main","pushedAt":"2024-05-20T16:52:06.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Lukasa","name":"Cory Benfield","path":"/Lukasa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1382556?s=80&v=4"},"commit":{"message":"Fix race in TCPThroughputBenchmark (#2724)","shortMessageHtmlLink":"Fix race in TCPThroughputBenchmark (#2724)"}},{"before":"6753556a85141986fea385505f2a454cf69df0eb","after":"609469f9689603c8419f1402dd984b0faa763c54","ref":"refs/heads/main","pushedAt":"2024-05-16T11:58:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"PeterAdams-A","name":"Peter Adams","path":"/PeterAdams-A","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/63288215?s=80&v=4"},"commit":{"message":"Exclude unused privacy manifests. (#2716)\n\nMotivation:\r\n\r\nOn Darwin privacy manifests should be published as resources.\r\nOn other platforms they result in a warning if not excluded.\r\n\r\nModifications:\r\n\r\nAlter Package.swift to exclude privacy manifests when not included.\r\n\r\nResult:\r\n\r\nFewer warnings in non-darwin builds.","shortMessageHtmlLink":"Exclude unused privacy manifests. (#2716)"}},{"before":"5c378ed31ceaf21bf9ceb93433054b28ac1184da","after":"6753556a85141986fea385505f2a454cf69df0eb","ref":"refs/heads/main","pushedAt":"2024-05-14T14:42:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Lukasa","name":"Cory Benfield","path":"/Lukasa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1382556?s=80&v=4"},"commit":{"message":"Add slack to rst allocation tests (#2722)\n\nMotivation:\r\n\r\nAllocation tests are slightly fragile to small changes.\r\n\r\nModifications:\r\n\r\nAllow 50 extra allocations over the 1000 cycles.\r\n\r\nResult:\r\n\r\nRst tests less flaky","shortMessageHtmlLink":"Add slack to rst allocation tests (#2722)"}},{"before":"543c7e9086c3da63c46d1eaee605d0c8db61f42a","after":null,"ref":"refs/heads/jw-docs-takeover","pushedAt":"2024-05-14T10:12:14.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"PeterAdams-A","name":"Peter Adams","path":"/PeterAdams-A","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/63288215?s=80&v=4"}},{"before":"cd51717926eb63340b156c86c59a19876792e3cb","after":"5c378ed31ceaf21bf9ceb93433054b28ac1184da","ref":"refs/heads/main","pushedAt":"2024-05-14T10:12:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"PeterAdams-A","name":"Peter Adams","path":"/PeterAdams-A","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/63288215?s=80&v=4"},"commit":{"message":"Document unsafeTryInstallSingletonPosixEventLoopGroupAsConcurrencyGlobalExecutor (#2721)\n\nDocument what unsafeTryInstallSingletonPosixEventLoopGroupAsConcurrencyGlobalExecutor's return value means","shortMessageHtmlLink":"Document unsafeTryInstallSingletonPosixEventLoopGroupAsConcurrencyGlo…"}},{"before":null,"after":"543c7e9086c3da63c46d1eaee605d0c8db61f42a","ref":"refs/heads/jw-docs-takeover","pushedAt":"2024-05-10T17:06:01.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"weissi","name":"Johannes Weiss","path":"/weissi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/624238?s=80&v=4"},"commit":{"message":"Update PosixSingletons+ConcurrencyTakeOver.swift\n\nDocument what unsafeTryInstallSingletonPosixEventLoopGroupAsConcurrencyGlobalExecutor's return value means","shortMessageHtmlLink":"Update PosixSingletons+ConcurrencyTakeOver.swift"}},{"before":"a5cb713246086a7999e293917ce362d53a30486d","after":"cd51717926eb63340b156c86c59a19876792e3cb","ref":"refs/heads/main","pushedAt":"2024-05-09T12:01:33.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Lukasa","name":"Cory Benfield","path":"/Lukasa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1382556?s=80&v=4"},"commit":{"message":"clean up @retroactive conformances (#2719)","shortMessageHtmlLink":"clean up @retroactive conformances (#2719)"}},{"before":"447b28105f33355c2911c47d25b3bf61cd4c292a","after":"a5cb713246086a7999e293917ce362d53a30486d","ref":"refs/heads/main","pushedAt":"2024-05-07T15:46:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Lukasa","name":"Cory Benfield","path":"/Lukasa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1382556?s=80&v=4"},"commit":{"message":"No longer need test discovery command line. (#2717)\n\nMotivation:\r\n\r\nCommand line argument has not been needed for several swift version.\r\n\r\nModifications:\r\n\r\nThis causes warnings in recent swift versions.\r\n\r\nResult:\r\n\r\nNo more warnings about swift command line when testing","shortMessageHtmlLink":"No longer need test discovery command line. (#2717)"}},{"before":"7739b40f233fd5c2047d8168cc2aea92436c3a44","after":null,"ref":"refs/heads/weissi-patch-1","pushedAt":"2024-04-29T11:11:25.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"weissi","name":"Johannes Weiss","path":"/weissi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/624238?s=80&v=4"}},{"before":"29e832adda20b3a6fe0df4bcbab27f7fb791f681","after":"447b28105f33355c2911c47d25b3bf61cd4c292a","ref":"refs/heads/main","pushedAt":"2024-04-29T11:11:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"weissi","name":"Johannes Weiss","path":"/weissi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/624238?s=80&v=4"},"commit":{"message":"concurrency takeover safe for 6.0 (#2710)","shortMessageHtmlLink":"concurrency takeover safe for 6.0 (#2710)"}},{"before":"970c4b8c846b9b5c354e398e41ffdfeb25935064","after":"7739b40f233fd5c2047d8168cc2aea92436c3a44","ref":"refs/heads/weissi-patch-1","pushedAt":"2024-04-29T10:35:15.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"weissi","name":"Johannes Weiss","path":"/weissi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/624238?s=80&v=4"},"commit":{"message":"Merge branch 'main' into weissi-patch-1","shortMessageHtmlLink":"Merge branch 'main' into weissi-patch-1"}},{"before":"8c3135b7d42a0cee040b35a727001129dac33187","after":"29e832adda20b3a6fe0df4bcbab27f7fb791f681","ref":"refs/heads/main","pushedAt":"2024-04-29T10:01:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Replace 'R' with 'Result' (#2709)\n\nMotivation:\r\n\r\nSingle letter names are discouraged but are used in a handful of places\r\nin NIOFileSystem.\r\n\r\nModifications:\r\n\r\n- Replace 'R' with 'ReturnType' where appropriate\r\n\r\nResult:\r\n\r\nClearer APIs","shortMessageHtmlLink":"Replace 'R' with 'Result' (#2709)"}},{"before":null,"after":"970c4b8c846b9b5c354e398e41ffdfeb25935064","ref":"refs/heads/weissi-patch-1","pushedAt":"2024-04-26T19:11:16.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"weissi","name":"Johannes Weiss","path":"/weissi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/624238?s=80&v=4"},"commit":{"message":"concurrency takeover safe for 6.0","shortMessageHtmlLink":"concurrency takeover safe for 6.0"}},{"before":"f2f4ce8be774cfa07b92b9e5ea602e7bd78ae026","after":"8c3135b7d42a0cee040b35a727001129dac33187","ref":"refs/heads/main","pushedAt":"2024-04-26T08:39:06.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Add 'withTemporaryDirectory' (#2708)\n\nMotivation:\r\n\r\nNIOFileSystem can create the path of a temporary directory but doesn't\r\noffer any API to create and then remove a directory.\r\n\r\nModifications:\r\n\r\n- Add `withTemporaryDirectory`\r\n\r\nResult:\r\n\r\n- Users can get scoped access to a temporary directory which is\r\n subsequently removed for them\r\n- Resolves #2664","shortMessageHtmlLink":"Add 'withTemporaryDirectory' (#2708)"}},{"before":"d3bdffd5e47fdcf08ae9a3d35062c3ed03e3781f","after":"f2f4ce8be774cfa07b92b9e5ea602e7bd78ae026","ref":"refs/heads/main","pushedAt":"2024-04-26T08:02:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Add `ByteBuffer` support to `BufferedWriter` (#2707)\n\nMotivation:\r\n\r\nThe `BufferedWriter` in `NIOFileSystem` has API in terms\r\nof `some Sequence`, meaning that you need to pass\r\n`byteBuffer.readableBytesView` which is a bit inconvenient.\r\n\r\nModifications:\r\n\r\n- Add overloads which allow you to pass `ByteBuffer` directly\r\n- Remove redundant availability guards; they are already applied to the\r\n type\r\n\r\nResult:\r\n\r\n- Better API for users\r\n- Resolves #2662","shortMessageHtmlLink":"Add ByteBuffer support to BufferedWriter (#2707)"}},{"before":"359c461e5561d22c6334828806cc25d759ca7aa6","after":"d3bdffd5e47fdcf08ae9a3d35062c3ed03e3781f","ref":"refs/heads/main","pushedAt":"2024-04-24T09:36:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Remove surplus Sendable requirements from FileSystem with methods (#2706)\n\nMotivation:\r\n\r\nMany of the filesystem with methods have a requirement that the\r\nresult type is sendable. In most cases this is not required as\r\nthe result is not shared or sent.\r\n\r\nModifications:\r\n\r\nRemove sendable requirement for result types where it is not required.\r\n\r\nResult:\r\n\r\nUsers will not have to make so many types sendable.","shortMessageHtmlLink":"Remove surplus Sendable requirements from FileSystem with methods (#2706"}},{"before":"bfc1a2cf6c0aa40cd37d0a0375651918fb2cb4ad","after":"359c461e5561d22c6334828806cc25d759ca7aa6","ref":"refs/heads/main","pushedAt":"2024-04-22T09:49:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Retain a ref to NIOAsyncWriter until channel active (#2703)\n\nMotivation:\r\n\r\nNIOAsyncChannel requires users to explicitly close it, this is typically\r\ndone by calling `executeThenClose`. If a `NIOAsyncChannel` isn't closed\r\nthen its outbound writer will hit a precondition failure on `deinit`.\r\nNot calling `executeThenClose` is a programmer error.\r\n\r\nHowever there are some sharp edges: if NIO never returns the\r\n`NIOAsyncChannel` to the caller (e.g. if a connect attempt fails) then\r\nnothing will finish the writer and precondition will fail in the deinit.\r\nWorking around this from a user perspective is non-obvious and requires\r\nkeep tracking of all `NIOAsyncChannel`s created from a connect attempt\r\nand closing the unused ones.\r\n\r\nWe still want to maintain the precondition when users don't close the\r\nchannel, one way of achieving this is by defining a point in time at\r\nwhich NIO hands responsibility of the channel to the user.\r\n\r\nModifications:\r\n\r\n- Retain the writer in the outbound writer handler until channel active\r\n- On successful connect attempts, the channel becomes active and the\r\n connected channel is returned to the caller.\r\n- On failed attempts channel active isn't called so the writer is\r\n retained until the handler is removed from the pipeline at which point it is\r\n finished.\r\n\r\nResult:\r\n\r\nFailed connect attempts don't result in precondition failures when using\r\nNIOAsyncChannel.","shortMessageHtmlLink":"Retain a ref to NIOAsyncWriter until channel active (#2703)"}},{"before":"fa540cf39b0f9a049a2ac06bccb20b6681d1b29a","after":"bfc1a2cf6c0aa40cd37d0a0375651918fb2cb4ad","ref":"refs/heads/main","pushedAt":"2024-04-22T07:55:06.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Tolerate IPv6 address resolution failure (#2704)\n\nMotivation:\r\n\r\nIn some cases IPv6 loopback address resolution fails in tests. We should\r\ntolerate this.\r\n\r\nModifications:\r\n\r\n- Swallow SocketAddressError.unknown\r\n\r\nResult:\r\n\r\nFewer flaky tests","shortMessageHtmlLink":"Tolerate IPv6 address resolution failure (#2704)"}},{"before":"8b43f703d43a7722aa75f200559a3b6c0b0d32a3","after":"fa540cf39b0f9a049a2ac06bccb20b6681d1b29a","ref":"refs/heads/main","pushedAt":"2024-04-17T09:48:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Add privacy manifest (#2695)\n\nMotivation:\r\n\r\nNIOPosix and NIOFileSystem use stat(2) (or some variation of it). These\r\nare \"required reason APIs\" meaning that their usage and reason must be\r\ndeclared in a privacy manifest in order to be submitted to the App Store.\r\n\r\nModifications:\r\n\r\n- Add a privacy manifest to NIOPosix and NIOFileSystem\r\n\r\nResult:\r\n\r\nApps using NIO won't be rejected from App Store submission for missing\r\nprivacy manifests.","shortMessageHtmlLink":"Add privacy manifest (#2695)"}},{"before":"b222c26b5b9af1c12cb8d575b180f05b06c0f139","after":"8b43f703d43a7722aa75f200559a3b6c0b0d32a3","ref":"refs/heads/main","pushedAt":"2024-04-10T15:57:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Lukasa","name":"Cory Benfield","path":"/Lukasa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1382556?s=80&v=4"},"commit":{"message":"Add support for `SWIFTCI_USE_LOCAL_DEPS` convention (#2699)\n\nTo use this package in utils/build-script pipeline","shortMessageHtmlLink":"Add support for SWIFTCI_USE_LOCAL_DEPS convention (#2699)"}},{"before":"082ac2186f0e472c7548ebbeca4d0f1a0cc84b1b","after":"b222c26b5b9af1c12cb8d575b180f05b06c0f139","ref":"refs/heads/main","pushedAt":"2024-04-09T17:43:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Add a helper for setting or cascading optional promises (#2697)\n\nMotivation:\r\n\r\nMany operations accept an optional promise. It's not uncommon to batch\r\noperations (which may each have their own promise) and complete them\r\nas a single operation. Combining these optional promises is slightly\r\ntedious.\r\n\r\nModifications:\r\n\r\n- Add an extension to `Optional` to set or cascade a promise\r\n- If a promise exists, its result is cascaded to the provided promise.\r\n Otherwise the optional is set to the provided promise.\r\n\r\nResult:\r\n\r\nIt's easier to combine optional promises.","shortMessageHtmlLink":"Add a helper for setting or cascading optional promises (#2697)"}},{"before":"05fbcace24afbf36ed9b7103f13e59fea88addf8","after":"082ac2186f0e472c7548ebbeca4d0f1a0cc84b1b","ref":"refs/heads/main","pushedAt":"2024-03-27T16:26:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Lukasa","name":"Cory Benfield","path":"/Lukasa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1382556?s=80&v=4"},"commit":{"message":"Add delegate for collecting eventloop tick metrics (#2608)\n\n* Add delegate for collecting eventloop tick metrics\r\n\r\n* add warning to docc\r\n\r\n* add missing headers\r\n\r\n---------\r\n\r\nCo-authored-by: Cory Benfield ","shortMessageHtmlLink":"Add delegate for collecting eventloop tick metrics (#2608)"}},{"before":"2d840c586fbfdebd10e6efd0b6fd613f13c08161","after":"05fbcace24afbf36ed9b7103f13e59fea88addf8","ref":"refs/heads/main","pushedAt":"2024-03-26T13:53:14.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Added file and line to NIOAsyncWriterError description (#2693)\n\nMotivation:\r\n\r\nEven though NIOAsyncWriterError captures the file and line of the error they are internal and not printed in the\r\ndescription.\r\n\r\nModifications:\r\n\r\n- made the 2 properties public\r\n- added them in the description\r\n\r\nResult:\r\n\r\nUsers will be able to access and see the line number and file where a NIOAsyncWriterError occurred","shortMessageHtmlLink":"Added file and line to NIOAsyncWriterError description (#2693)"}},{"before":"6b29fc3c2b6ebaebbfc2e27f6760b5321e9876d2","after":"2d840c586fbfdebd10e6efd0b6fd613f13c08161","ref":"refs/heads/main","pushedAt":"2024-03-26T13:15:27.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Use NIOThreadPool in NIOFileSystem (#2692)\n\nMotivation:\r\n\r\nThere are two thread pools: one in NIOFileSystem and one in NIOPosix; we\r\nshould avoid the duplication.\r\n\r\nModifications:\r\n\r\n- Switch to using NIOThreadPool\r\n- Remove the old thread pool and associated code\r\n- Add an init to FileSystem which takes a thread pool\r\n\r\nResult:\r\n\r\nLess duplication","shortMessageHtmlLink":"Use NIOThreadPool in NIOFileSystem (#2692)"}},{"before":"1f5be716feff6ffd4ae7af403f7d76b88398eeb8","after":"6b29fc3c2b6ebaebbfc2e27f6760b5321e9876d2","ref":"refs/heads/main","pushedAt":"2024-03-25T18:44:30.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Lukasa","name":"Cory Benfield","path":"/Lukasa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1382556?s=80&v=4"},"commit":{"message":"Clarify Client/Server column headers (#2691)\n\nCo-authored-by: Cory Benfield ","shortMessageHtmlLink":"Clarify Client/Server column headers (#2691)"}},{"before":"10af7c92e74055c66c026b63185da06bc0ebc3de","after":"1f5be716feff6ffd4ae7af403f7d76b88398eeb8","ref":"refs/heads/main","pushedAt":"2024-03-25T15:52:40.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Add cancellation to NIOThreadPool's async runIfActive (#2679)\n\nMotivation:\r\n\r\nTo dedupe the thread pool from NIOFileSystem and NIOPosix, the one from\r\nNIOPosix needs to gain support for cancellation for its async\r\n`runIfActive` function.\r\n\r\nModification:\r\n\r\n- Generate a work ID when submitting async work to the pool, add that ID\r\n to a set in the cancellation handler\r\n- Check the existence of the ID in the cancel set when dequeuing the\r\n work\r\n\r\nResult:\r\n\r\nQueued NIOThreadPool tasks can be cancelled before they are run.","shortMessageHtmlLink":"Add cancellation to NIOThreadPool's async runIfActive (#2679)"}},{"before":"778e3da621ec58ca57cc79332e794b20165dbc81","after":"10af7c92e74055c66c026b63185da06bc0ebc3de","ref":"refs/heads/main","pushedAt":"2024-03-25T12:56:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Remove temp directories after tests (#2690)\n\nMotivation:\r\n\r\nA couple of filesystem tests create directories but don't clean up after\r\nthemselves.\r\n\r\nModifications:\r\n\r\n- Add teardown blocks to remove the temp directories\r\n\r\nResult:\r\n\r\nNo leftover files after running tests","shortMessageHtmlLink":"Remove temp directories after tests (#2690)"}},{"before":"d15793cd2088cc636ad94e757f77884a52ada9e2","after":"778e3da621ec58ca57cc79332e794b20165dbc81","ref":"refs/heads/main","pushedAt":"2024-03-22T14:20:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Add a NIOFileSystem shim (#2689)\n\nMotivation:\r\n\r\nRenaming the `NIOFileSystem` module to `_NIOFileSystem` is a breaking\r\nchange (which is okay, it's documented to be unstable API). However,\r\nusers will be presented with a wall of build errors on updating to the\r\nnext version of NIO. We can make the transition slightly easier for\r\nthem.\r\n\r\nModifications:\r\n\r\nAdd back a `NIOFileSystem` module which re-exports `_NIOFileSystem` and\r\nadd it as a target to the `_NIOFileSystem` product. This makes both\r\nmodules available to users. We can then remove `NIOFileSystem` after a\r\ngrace period.\r\n\r\nResult:\r\n\r\nUsers can still build using `NIOFileSystem` but can transition to\r\n`_NIOFileSystem`.","shortMessageHtmlLink":"Add a NIOFileSystem shim (#2689)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEUfUI-QA","startCursor":null,"endCursor":null}},"title":"Activity · apple/swift-nio"}