{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":68841963,"defaultBranch":"main","name":"grpc-swift","ownerLogin":"grpc","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-09-21T17:35:31.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/7802525?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1713790466.0","currentOid":""},"activityList":{"items":[{"before":"fd0f881842793981455bf1b7aff7e1c0b2c6b1b9","after":"3c66c5f29a88d6ef1d60ec6242121e8ed58350cd","ref":"refs/heads/main","pushedAt":"2024-05-31T13:55:09.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":"Always store compression algorithm in stream state machine (#1898)","shortMessageHtmlLink":"Always store compression algorithm in stream state machine (#1898)"}},{"before":"4448b7e6877061d3f9c43cad7290daf1923a3d7c","after":"fd0f881842793981455bf1b7aff7e1c0b2c6b1b9","ref":"refs/heads/main","pushedAt":"2024-05-31T08:31: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":"Add server executable for interop tests (#1897)","shortMessageHtmlLink":"Add server executable for interop tests (#1897)"}},{"before":"f16405dfef1e64ea37b8cc45842e1bb9bc135f53","after":"4448b7e6877061d3f9c43cad7290daf1923a3d7c","ref":"refs/heads/main","pushedAt":"2024-05-31T07:15:37.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":"Fix wrong gRPC status message header name (#1899)","shortMessageHtmlLink":"Fix wrong gRPC status message header name (#1899)"}},{"before":"3272c32b4276f8878c9cff196abb6863bf3e7531","after":"f16405dfef1e64ea37b8cc45842e1bb9bc135f53","ref":"refs/heads/main","pushedAt":"2024-05-30T10:05:50.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 missing dependency to package manifest (#1896)\n\nMotivation:\r\n\r\n3272c32b uses NIOExtras but didn't add the dependency to the package\r\nmanifest. This can cause compilation issues.\r\n\r\nModifications:\r\n\r\n- Add the missing dependency\r\n\r\nResult:\r\n\r\nFewer issues","shortMessageHtmlLink":"Add missing dependency to package manifest (#1896)"}},{"before":"827303d0dbda9aec9f70224dfb8b1971921bf152","after":"3272c32b4276f8878c9cff196abb6863bf3e7531","ref":"refs/heads/main","pushedAt":"2024-05-30T07:02:38.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 NIOPosix server transport implementation (#1883)\n\nMotivation:\r\n\r\nWe want to provide some commonly used server transport implementations out of the box.\r\n\r\nModifications:\r\n\r\nThis PR adds a `ServerTransport` implementation based on `NIOPosix`.\r\n\r\nResult:\r\n\r\nA `NIOPosix` implementation of a server transport.","shortMessageHtmlLink":"Add NIOPosix server transport implementation (#1883)"}},{"before":"831b57a079a3c6a198403fb0ac43ac6a30811cc8","after":"827303d0dbda9aec9f70224dfb8b1971921bf152","ref":"refs/heads/main","pushedAt":"2024-05-28T14:54: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":"Refactor round robin tests (#1894)\n\nMotivation:\r\n\r\nThe test harness for the round-robin load balancer tests doesn't need to\r\nbe so tightly coupled to round-robin tests. It can also be used for the\r\npick-first load balancer.\r\n\r\nModifications:\r\n\r\n- Move the RR LB test into its own file\r\n- Refactor so the test context holds a `LoadBalancer` rather than a\r\n `RoundRobinLoadBalancer`\r\n\r\nResult:\r\n\r\nCan be easily extended for pick-first LB tests","shortMessageHtmlLink":"Refactor round robin tests (#1894)"}},{"before":"025d0df08243eaea8ff10ec7975787cd8e6be64d","after":"831b57a079a3c6a198403fb0ac43ac6a30811cc8","ref":"refs/heads/main","pushedAt":"2024-05-28T14:50: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 sendable view to ClientConnectionHandler/ServerConnectionManagementHandler (#1895)\n\nMotivation:\r\n\r\nIn #1875 the `ClientConnectionHandler` and\r\n`ServerConnectionManagementHandler` had conformance added to\r\n`NIOHTTP2StreamDelegate`. This, in turn, requires that they are\r\n`Sendable`. However, they aren't really `Sendable` as most of their API\r\nrelies on being on the correct event-loop.\r\n\r\nModifications:\r\n\r\n- Add stream-delegate views over each where the conformance ensures that\r\n the methods are called on the appropriate event loop\r\n\r\nResult:\r\n\r\nFewer warnings","shortMessageHtmlLink":"Add a sendable view to ClientConnectionHandler/ServerConnectionManage…"}},{"before":"1bdb831b955ea0a6908510df6e7f545dd9dd2d1d","after":"025d0df08243eaea8ff10ec7975787cd8e6be64d","ref":"refs/heads/main","pushedAt":"2024-05-28T09:32:28.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":"Improve naming (#1888)\n\nMotivation:\r\n\r\nWe recently standardised on 'config' over 'configuration' for service\r\nand method config. However, load balancing config was missed.\r\nWe should also standardise other service config names; retry throttling\r\npolicy should become retry throttling.\r\n\r\nModifications:\r\n\r\n- replace configuration with config\r\n- drop 'policy' from retry throttling policy\r\n\r\nResult:\r\n\r\nBetter naming","shortMessageHtmlLink":"Improve naming (#1888)"}},{"before":"716d6d48b3c5f8a44399bbcebb864e8146a36086","after":"1bdb831b955ea0a6908510df6e7f545dd9dd2d1d","ref":"refs/heads/main","pushedAt":"2024-05-28T09:27: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":"Server transport changes (#1891)","shortMessageHtmlLink":"Server transport changes (#1891)"}},{"before":"c596dfb5ecd6374c254fd5e65e97612b3e965be3","after":"716d6d48b3c5f8a44399bbcebb864e8146a36086","ref":"refs/heads/main","pushedAt":"2024-05-24T08:22: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":"Add missing availability to tests (#1890)\n\nCo-authored-by: Gustavo Cairo ","shortMessageHtmlLink":"Add missing availability to tests (#1890)"}},{"before":"73a34ffc0f28c4f3ca264b03c01577bde8d15c30","after":"c596dfb5ecd6374c254fd5e65e97612b3e965be3","ref":"refs/heads/main","pushedAt":"2024-05-24T07:45:15.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 tutorial docs (#1889)","shortMessageHtmlLink":"Update tutorial docs (#1889)"}},{"before":"91be64e04035db0824e59da67c1fa339456d004b","after":"73a34ffc0f28c4f3ca264b03c01577bde8d15c30","ref":"refs/heads/main","pushedAt":"2024-05-23T13:10:22.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":"Cache swift-format (#1887)\n\nMotivation:\r\n\r\nThe CI takes ~7 minutes to run, the longest job is the formatting check\r\nwhich spends most of its time compiling swift-format.\r\n\r\nModifications:\r\n\r\n- Cache the swift-format build directory\r\n\r\nResult:\r\n\r\nFaster CI","shortMessageHtmlLink":"Cache swift-format (#1887)"}},{"before":"d13d647221214b4971ad184ab633752b81428126","after":"91be64e04035db0824e59da67c1fa339456d004b","ref":"refs/heads/main","pushedAt":"2024-05-23T11:58:42.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 actions/checkout to v4 (#1886)\n\nMotivation:\r\n\r\nactions/checkout@v3 uses Node 16 which is end-of-life\r\n\r\nModifications:\r\n\r\n- Switch to v4\r\n\r\nResult:\r\n\r\nUsing supported path","shortMessageHtmlLink":"Update actions/checkout to v4 (#1886)"}},{"before":"aeaccdf7ce0c0d23c39164d39898f29d2ef837b8","after":"d13d647221214b4971ad184ab633752b81428126","ref":"refs/heads/main","pushedAt":"2024-05-23T10:04:55.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":"Skip testMakeStreamOnShutdownSubchannel on 5.8 and earlier (#1885)\n\nMotivation:\r\n\r\n`testMakeStreamOnShutdownSubchannel` occasionally hits an assertion\r\nfailure in pthread caused by a bug in the Swift concurrency runtime.\r\nThis was fixed in 5.9.\r\n\r\nModifications:\r\n\r\n- Skip the test for older compiler versions\r\n\r\nResult:\r\n\r\nFewer false negatives","shortMessageHtmlLink":"Skip testMakeStreamOnShutdownSubchannel on 5.8 and earlier (#1885)"}},{"before":"c4353e9e441a30a460f4c0b0d78bea4a81ce702b","after":"aeaccdf7ce0c0d23c39164d39898f29d2ef837b8","ref":"refs/heads/main","pushedAt":"2024-05-23T09:57:13.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 from errors (#1882)\n\nMotivation:\r\n\r\nExistential boxing rules don't apply to errors: `any Error` is\r\nunconditionally boxed. This means that there's no allocation benefit to\r\nbacking errors with storage classes.\r\n\r\nModifications:\r\n\r\n- Remove the backing storage class of `RPCError` and `RuntimeError`\r\n\r\nResult:\r\n\r\nFewer allocations","shortMessageHtmlLink":"Remove storage indirection from errors (#1882)"}},{"before":"78ac169249ac8df5d74fb67f712f126e88c3660b","after":"c4353e9e441a30a460f4c0b0d78bea4a81ce702b","ref":"refs/heads/main","pushedAt":"2024-05-23T09:49:45.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 request queue for the grpc channel (#1881)\n\nMotivation:\r\n\r\nThe grpc channel needs to enqueue requests when the channel isn't ready\r\nto handle RPCs. When the channel becomes ready, it can attempt to\r\nexecute the RPCs on a load balancer.\r\n\r\nModifications:\r\n\r\n- Add a request queue. The queue stores continuations for a\r\n `LoadBalancer`. Elements can be removed in-order (popped) or by ID (in\r\n case of cancellation).\r\n- Add a queue ID\r\n\r\nResult:\r\n\r\nRequests can be queued","shortMessageHtmlLink":"Add a request queue for the grpc channel (#1881)"}},{"before":"492da8913fd1df7568f6b3c95f60bcf2202082ca","after":"78ac169249ac8df5d74fb67f712f126e88c3660b","ref":"refs/heads/main","pushedAt":"2024-05-23T09:30: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":"Add http2 transport namespace and config (#1880)\n\nMotivation:\r\n\r\nThe grpc channel will require some config. This can be dervied from\r\nconfig which we'll make public for the posix and niots transports. As we\r\nneed the config to create the channel, we need all the bits that make up\r\nthat config and a namespace to hold them in.\r\n\r\nModifications:\r\n\r\n- Add an 'HTTP2ClientTransport' namespace and a nested 'Config' namespace\r\n- Add config and defaults\r\n\r\nResult:\r\n\r\nConfig is in place for the grpc channel","shortMessageHtmlLink":"Add http2 transport namespace and config (#1880)"}},{"before":"8b6a8f4098fb2e5742a80e2d74176e6a69946d1d","after":"492da8913fd1df7568f6b3c95f60bcf2202082ca","ref":"refs/heads/main","pushedAt":"2024-05-23T08:55:55.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 some slack to allocation tests (#1884)\n\nMotivation:\r\n\r\nOccasionally one or two allocations are added which we want to ignore in\r\nbenchmarks where we care about changes in the 1000s.\r\n\r\nModifications:\r\n\r\n- Add some slack to benchmarks\r\n- Pass in the config to each of the benchmarks, which was previously\r\n dropped on the floor\r\n- Add the benchmarks to the formatter\r\n\r\nResult:\r\n\r\nAllocation limits allow some slack","shortMessageHtmlLink":"Add some slack to allocation tests (#1884)"}},{"before":"0b47aeac54cc5d3dba04fa12b4eb5a9a990b0a63","after":"8b6a8f4098fb2e5742a80e2d74176e6a69946d1d","ref":"refs/heads/main","pushedAt":"2024-05-22T15:36:21.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":"Conform client/server connection handlers to h2 stream delegate (#1875)\n\nMotivation:\r\n\r\nThe natural NIO API to use when dealing with HTTP/2 multiplexing doesn't\r\nemit user inbound events when streams are created and closed. Instead\r\nthis is signalled via the `NIOHTTP2StreamDelegate`.\r\n\r\nModifications:\r\n\r\n- Conform the `ClientConnectionHandler` and the\r\n `ServerConnectionManagementHandler` to `NIOHTTP2StreamDelegate`.\r\n- Update tests\r\n\r\nResult:\r\n\r\n`ClientConnectionHandler` and `ServerConnectionManagementHandler` can be\r\nused as stream delegates with NIO HTTP/2 is configured for async\r\nmultiplexing.","shortMessageHtmlLink":"Conform client/server connection handlers to h2 stream delegate (#1875)"}},{"before":"0e9def87923e3f4219737fd191e96e1e24a13906","after":"0b47aeac54cc5d3dba04fa12b4eb5a9a990b0a63","ref":"refs/heads/main","pushedAt":"2024-05-16T10:05:41.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":"Make ServerTransport protocol possible to use with structured concurrency (#1865)\n\nMotivation:\r\n\r\nThe existing `ServerProtocol` has some design issues: its `listen` method returns the async sequence of streams to be handled, while at the same time it's `async` and must run for as long as the transport is up and running. This means we'll never get the sequence of streams back in most transport implementations (such as H2).\r\n\r\nModifications:\r\n\r\nThis PR tries to solve this by changing the protocol so that the `listen` method now takes a closure which allows handling an individual stream. This forces the transport implementations to maintain the right structured task hierarchy, as tasks to run this stream handler will have to be added as children of the long-running \"listen\" task.\r\n\r\nResult:\r\n\r\nServer Transports can now be used in structured concurrency.","shortMessageHtmlLink":"Make ServerTransport protocol possible to use with structured concurr…"}},{"before":"07744c75f66380b70a3f795bca1b37e2289aaea0","after":"0e9def87923e3f4219737fd191e96e1e24a13906","ref":"refs/heads/main","pushedAt":"2024-05-15T16:46:55.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":"Round robin load balancer (#1873)\n\nMotivation:\r\n\r\nTo build a grpc channel we need to support different load-balancers. One\r\nof these is the round-robin load balancer which is added by this patch.\r\n\r\nModifications:\r\n\r\nAdd a `RoundRobinLoadBalancer` which maintains a set of subchannels\r\nand picks between ready subchannels for RPCs using the round-robin\r\nalgorithm.\r\n\r\nResult:\r\n\r\nCan maintain a set of connections to a service using and pick between\r\nthem using round-robin","shortMessageHtmlLink":"Round robin load balancer (#1873)"}},{"before":"fe7132284c7de46c1564555566d56265f1f043c5","after":"07744c75f66380b70a3f795bca1b37e2289aaea0","ref":"refs/heads/main","pushedAt":"2024-05-14T10:05:53.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 additional stream message compression unit tests (#1879)\n\nCo-authored-by: George Barnett ","shortMessageHtmlLink":"Add additional stream message compression unit tests (#1879)"}},{"before":"07eade28c84e2d5e9237b7a6f19469bd34f843a2","after":"fe7132284c7de46c1564555566d56265f1f043c5","ref":"refs/heads/main","pushedAt":"2024-05-14T09:03:10.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":"Fix unusual fatal error when closing outbound client stream (#1877)","shortMessageHtmlLink":"Fix unusual fatal error when closing outbound client stream (#1877)"}},{"before":"71b4fe85ea5aad09a7391a7a284e1bd7deebdd34","after":"07eade28c84e2d5e9237b7a6f19469bd34f843a2","ref":"refs/heads/main","pushedAt":"2024-05-02T13:08:03.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":"Add `Hashable` conformance to `GRPC.ConnectionTarget` (#1876)\n\nMotivation:\r\n\r\n`GRPC.ConnectionTarget` is not `Hashable` and, for example, cannot be stored in a set.\r\n\r\nModifications:\r\n\r\nAdd `Hashable` conformance to `GRPC.ConnectionTarget`.\r\n\r\nResult:\r\n\r\n`GRPC.ConnectionTarget` is now `Hashable`.","shortMessageHtmlLink":"Add Hashable conformance to GRPC.ConnectionTarget (#1876)"}},{"before":"90a68388a52ec05ed6485455e899b368412f5f72","after":"71b4fe85ea5aad09a7391a7a284e1bd7deebdd34","ref":"refs/heads/main","pushedAt":"2024-05-02T09:29:12.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":"Add missing availability guards to tests (#1874)","shortMessageHtmlLink":"Add missing availability guards to tests (#1874)"}},{"before":"047cce9f7cb5b8ec7fce35ca565a3af35612ec23","after":"90a68388a52ec05ed6485455e899b368412f5f72","ref":"refs/heads/main","pushedAt":"2024-05-01T11:48: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":"Add Subchannel (#1868)\n\nMotivation:\r\n\r\nTo build a load balancer we need subchannels. Subchannels wrap\r\nconnections to provide a connection to a backend. They allow multiple\r\naddresses to be tried when establishing a connection as well retry logic\r\nfor establishing a connection (with backoff).\r\n\r\nModifications:\r\n\r\n- Add a Subchannel type which wraps Connection objects with a similar\r\n API: a subchannel must be run, changes in its state are reported via\r\n the events sequence, and state changes can be requested by calling\r\n `connect`/`close` etc.\r\n- Add tests\r\n\r\nResult:\r\n\r\nCan build up a load balancer using subchannels.","shortMessageHtmlLink":"Add Subchannel (#1868)"}},{"before":"5dc50ed70306671842275530f0289778860beb0d","after":"047cce9f7cb5b8ec7fce35ca565a3af35612ec23","ref":"refs/heads/main","pushedAt":"2024-04-29T14:49:29.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":"Enable `Metadata` to be initializable from a `Sequence` of `Elements` (#1871)\n\nMotivation:\r\n\r\nThis would be a convenient API to have.\r\n\r\nModifications:\r\n\r\nAdd a new `public init` to `Metadata` which takes `some Sequence` and initializes `Metadata` collection from the `Sequence` of `Elements`.\r\n\r\nResult:\r\n\r\nUsers can now initialize `Metadata` from a `Sequence` of `Elements`.","shortMessageHtmlLink":"Enable Metadata to be initializable from a Sequence of Elements ("}},{"before":"8bc72fd0c01e626143b6d763f4ceb5a98cfa3ad5","after":"5dc50ed70306671842275530f0289778860beb0d","ref":"refs/heads/main","pushedAt":"2024-04-29T12:52:26.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 lazy connect parameter from client transport (#1870)\n\nMotivation:\r\n\r\nThe client transport has a parameter to enabled lazy connectivity. If\r\nset the transport shouldn't create a connection until a stream is\r\ncreated. However, this isn't applicable for all transports, instead it\r\nshould be configured on concrete transport types.\r\n\r\nModifications:\r\n\r\n- Remove 'lazily' parameter\r\n\r\nResult:\r\n\r\nBetter API","shortMessageHtmlLink":"Remove lazy connect parameter from client transport (#1870)"}},{"before":"9c782201f7a473fb9d486ad6919a9684537711b6","after":"8bc72fd0c01e626143b6d763f4ceb5a98cfa3ad5","ref":"refs/heads/main","pushedAt":"2024-04-26T14:22: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 `removeAll(where:)` to `Metadata`. (#1869)\n\nMotivation:\r\n\r\nSometimes users want to remove some values from `Metadata`. At the moment they can only remove one at a time or all values.\r\n\r\nModifications:\r\n\r\nAdd `removeAll(where:)` to `Metadata`.\r\n\r\nResult:\r\n\r\nUsers can now remove values from `Metadata` that match a given predicate.","shortMessageHtmlLink":"Add removeAll(where:) to Metadata. (#1869)"}},{"before":"63af6098abb47b88fc7362c7f362221a8cef7c51","after":"9c782201f7a473fb9d486ad6919a9684537711b6","ref":"refs/heads/main","pushedAt":"2024-04-23T09:53:28.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":"A few helpers to pave the way for subchannel (#1867)\n\nMotivation:\r\n\r\nTo keep the subchannel PR smaller, a few related but standalone bits can\r\nbe added separately.\r\n\r\nModifications:\r\n\r\n- Bump the NIO version to pickup a NIOAsyncChannel fix and a new cascade\r\n function\r\n- Add the `ConnectivityState` enum\r\n- Add `ProcessUniqueID` and `SubchannelID`\r\n\r\nResult:\r\n\r\nSubchannel PR will be smaller.","shortMessageHtmlLink":"A few helpers to pave the way for subchannel (#1867)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEWRTKpQA","startCursor":null,"endCursor":null}},"title":"Activity · grpc/grpc-swift"}