{"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:1714389085.0","currentOid":""},"activityList":{"items":[{"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)"}},{"before":"f8c5e02ec468493ccaa77c8e979109e599c74b63","after":"d15793cd2088cc636ad94e757f77884a52ada9e2","ref":"refs/heads/main","pushedAt":"2024-03-20T11:34:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"gjcairo","name":"Gustavo Cairo","path":"/gjcairo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5359423?s=80&v=4"},"commit":{"message":"Change BufferedReader.read(while:) signature (#2688)\n\nReturn whether EOF read or predicate doesn't hold anymore in BufferedReader.read(while:)","shortMessageHtmlLink":"Change BufferedReader.read(while:) signature (#2688)"}},{"before":"1e2b3e34afee7d68d99d982b72f9a17a40624c66","after":"f8c5e02ec468493ccaa77c8e979109e599c74b63","ref":"refs/heads/main","pushedAt":"2024-03-20T10:31:46.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 DispatchGroup and replace with condvar (#2687)\n\nMotivation:\r\n\r\nDispatchGroup can cause thread performance checker warnings in\r\nplaces we don't want them. We can avoid those warnings in some\r\ncases by using a condition variable instead.\r\n\r\nModifications:\r\n\r\n- Replaced a use of DispatchGroup with a condition variable\r\n in NIOThreadPool setup.\r\n- Removed an unnecessary DispatchGroup in the shutdown code\r\n\r\nResult:\r\n\r\nFewer thread performance checker warnings.","shortMessageHtmlLink":"Remove DispatchGroup and replace with condvar (#2687)"}},{"before":"df5745d6be2bdff1f76f35ef34de4a3ed52fbff3","after":"1e2b3e34afee7d68d99d982b72f9a17a40624c66","ref":"refs/heads/main","pushedAt":"2024-03-15T16:45:49.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":"Handle 'atomically' created files more gracefully when detached (#2682)\n\nMotivation:\r\n\r\nWhen a file is created 'atomically' and the descriptor is detached from\r\nits handle then the user is provided with the descriptor for a temporary\r\nfile, and the desired file is never created.\r\n\r\nModifications:\r\n\r\nWhere supported, atomically created files use a temporary unnamed file\r\nwhich is then linked on close. Elsewhere a temporary named file is\r\ncreated which is renamed on closed.\r\n\r\nTemporary unnamed files are linked in detach but not closed. Temporary\r\nnamed files are linked to the desired path before being unlinked.\r\n\r\n- Break out the logic for materializing a file created using a temporary\r\n unnamed file\r\n- Add syscalls and error mappings for link(2) and unlink(2)\r\n\r\nResult:\r\n\r\nAtomically created files behave as expected when detached","shortMessageHtmlLink":"Handle 'atomically' created files more gracefully when detached (#2682)"}},{"before":"b92e058cf80fd6ba2e5d288a21d455f5134e39d7","after":"df5745d6be2bdff1f76f35ef34de4a3ed52fbff3","ref":"refs/heads/main","pushedAt":"2024-03-14T15:16:36.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":"Underscore the NIOFileSystem module (#2683)\n\nMotivation:\r\n\r\nThe 'NIOFileSystem' target isn't yet stable API and is made available\r\nvia the '_NIOFileSystemModule' product. This doesn't make it obvious\r\nenough that the module isn't yet considered stable.\r\n\r\nModifications:\r\n\r\n- Rename 'NIOFileSystem' and 'NIOFileSystemFoundationCompat' such that\r\n they are prefixed with '_'.\r\n\r\nResult:\r\n\r\nMore obviously not stable API","shortMessageHtmlLink":"Underscore the NIOFileSystem module (#2683)"}},{"before":"651a3410480e6d1ba67500e9ab17607c2a5b9b58","after":null,"ref":"refs/heads/ktoso-patch-1","pushedAt":"2024-03-13T08:42:25.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"}},{"before":"a40ad7c034934a8611a88713c087eba9227c016d","after":"b92e058cf80fd6ba2e5d288a21d455f5134e39d7","ref":"refs/heads/main","pushedAt":"2024-03-13T08:42:24.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":"Update issue template link in SECURITY.md (#2680)\n\nThe link was incorrect since the file had moved.","shortMessageHtmlLink":"Update issue template link in SECURITY.md (#2680)"}},{"before":"305f61eeacb4723726aa54c7e5c7cf551da20f91","after":"651a3410480e6d1ba67500e9ab17607c2a5b9b58","ref":"refs/heads/ktoso-patch-1","pushedAt":"2024-03-13T08:05:24.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Merge branch 'main' into ktoso-patch-1","shortMessageHtmlLink":"Merge branch 'main' into ktoso-patch-1"}},{"before":"dc296f2ff72b09c837e5c255f1b59229cfd7df6d","after":"a40ad7c034934a8611a88713c087eba9227c016d","ref":"refs/heads/main","pushedAt":"2024-03-12T11:09:24.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":"Prevent BufferedWriter from producing empty files (#2677)\n\nMotivation:\r\n\r\nIn the current implementation, if the users forget to call 'flush()' on\r\nthe writer when creating a new file with 'withFileHandle(forWritingAt:options:execute)' the newly created file is empty.\r\n\r\nModifications:\r\n\r\n- Added the 'withBufferedWriter()' method for the 'WritableFileHandleProtocol' and implemented it for\r\nthe WriteFileHandle and 'ReadWriteFilehandle'. The method calls flush on the bufferedWriter after\r\nexecuting the closure that writes the contents to the file as indicated by the user.\r\n\r\nResult:\r\n\r\nUsers can now use the 'withBufferedWriter' method instead of instantiating the bufferedWriter themselves,\r\nreducing the possibility of omitting 'flush()'.","shortMessageHtmlLink":"Prevent BufferedWriter from producing empty files (#2677)"}},{"before":null,"after":"305f61eeacb4723726aa54c7e5c7cf551da20f91","ref":"refs/heads/ktoso-patch-1","pushedAt":"2024-03-12T10:47:07.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ktoso","name":"Konrad `ktoso` Malawski","path":"/ktoso","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/120979?s=80&v=4"},"commit":{"message":"Update issue template link in SECURITY.md\n\nThe link was incorrect since the file had moved.","shortMessageHtmlLink":"Update issue template link in SECURITY.md"}},{"before":"887b2c1e385d946f8e4272eaf44fba187f58b5c1","after":"dc296f2ff72b09c837e5c255f1b59229cfd7df6d","ref":"refs/heads/main","pushedAt":"2024-03-11T21:33:37.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 NIOBSDSocket.Option for SO_BROADCAST (#2678)\n\nThis change allows users to setup a broadcast socket using a NIO owned\r\nconstant instead of directly using a C constant.\r\n\r\n```diff\r\n- .channelOption(ChannelOptions.socket(SOL_SOCKET, SO_BROADCAST), value: 1)\r\n+ .channelOption(ChannelOptions.socketOption(.so_broadcast), value: 1)\r\n```\r\n\r\nFixes #2674","shortMessageHtmlLink":"Add NIOBSDSocket.Option for SO_BROADCAST (#2678)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEPOBbdgA","startCursor":null,"endCursor":null}},"title":"Activity ยท apple/swift-nio"}