{"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://github.com/avatars/u/7802525?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1724661219.0","currentOid":""},"activityList":{"items":[{"before":"b036fb7c7f0a1faea61eb33520549f0dc475eb7a","after":"c51784ed350eba463cbe6dc1606264ca69ec8a84","ref":"refs/heads/main","pushedAt":"2024-09-11T14:50:02.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Adopt swift-testing for Timeout tests (#2051)\n\nMotivation:\r\n\r\nswift-testing has a number of advantages over XCTest (parameterisation,\r\norganisation, failure messages etc.), we should start using it instead\r\nof XCTest.\r\n\r\nModifications:\r\n\r\n- Convert the Timeout tests\r\n\r\nResults:\r\n\r\nBetter tests","shortMessageHtmlLink":"Adopt swift-testing for Timeout tests (#2051)"}},{"before":"a98b0f327eccad2076585b9d45befe6aff4b948a","after":"b036fb7c7f0a1faea61eb33520549f0dc475eb7a","ref":"refs/heads/main","pushedAt":"2024-09-11T14:38:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"gjcairo","name":"Gus Cairo","path":"/gjcairo","primaryAvatarUrl":"https://github.com/avatars/u/5359423?s=80&v=4"},"commit":{"message":"Add `NIOTransportServices` H2 client transport (#2054)\n\nAdd a `NIOTransportServices` H2 client transport to gRPC v2.","shortMessageHtmlLink":"Add NIOTransportServices H2 client transport (#2054)"}},{"before":"cd019f66f9a2dc3c2f35e67b7be6748eaca16bbe","after":"a98b0f327eccad2076585b9d45befe6aff4b948a","ref":"refs/heads/main","pushedAt":"2024-09-11T09:48:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Update plugin bundling script (#2053)\n\nMotivation:\r\n\r\nThe plugin bundling script which is used when we do a release doesn't\r\nupdate the dependencies so will just use whatever version is currently\r\nresolved. This means protobuf might not be up-to-date and an older\r\nversion of `protoc-gen-swift` might get build.\r\n\r\nModifications:\r\n\r\n- Run package update before building\r\n\r\nResult:\r\n\r\nThe bundled `protoc-gen-swift` should be up-to-date","shortMessageHtmlLink":"Update plugin bundling script (#2053)"}},{"before":"40f316eeace7011bab5ba237b04bfb13e1c4c470","after":"cd019f66f9a2dc3c2f35e67b7be6748eaca16bbe","ref":"refs/heads/main","pushedAt":"2024-09-10T09:57:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Enable Swift 6 language mode in GRPCCore (#2046)\n\nMotivation:\r\n\r\nv2 should use Swift 6 language mode to take full advantage of the\r\ncompilers data race checking.\r\n\r\nModifications:\r\n\r\n- Enable Swift 6 language more for the code module\r\n- Add a bunch of missing explicit 'Sendable's\r\n\r\nResult:\r\n\r\n- Compiles with Swift 6 lang mode","shortMessageHtmlLink":"Enable Swift 6 language mode in GRPCCore (#2046)"}},{"before":"f8184b871593f86d19124f5675922481b2da3824","after":"40f316eeace7011bab5ba237b04bfb13e1c4c470","ref":"refs/heads/main","pushedAt":"2024-09-09T16:26:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Adopt swift-testing for metadata tests (#2050)\n\nMotivation:\r\n\r\nswift-testing has a number of advantages over XCTest (parameterisation,\r\norganisation, failure messages etc.), we should start using it instead\r\nof XCTest.\r\n\r\nModifications:\r\n\r\n- Convert the Metadata tests\r\n\r\nResults:\r\n\r\nBetter tests","shortMessageHtmlLink":"Adopt swift-testing for metadata tests (#2050)"}},{"before":"62b7f850a6698f10d4f67d418b752243d8141649","after":"f8184b871593f86d19124f5675922481b2da3824","ref":"refs/heads/main","pushedAt":"2024-09-09T16:05:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Add support for TLS on H2 NIOTS server transport (#2040)\n\n## Motivation\r\nWe currently have a NIOTS server transport implementation in gRPC v2,\r\nbut it doesn't support TLS.\r\n\r\n## Modifications\r\nThis PR adds support for TLS in the NIOTS-backed HTTP/2 implementation\r\nof the server transport for gRPC v2.\r\nIt also adds support for ALPN, to validate that the negotiated protocol,\r\nif required, is HTTP2 or `grpc-exp`. If it's not, an error will be\r\nfired/the channel will be closed, since we don't support H1.\r\n\r\n## Result\r\nWe now support TLS/ALPN when using the NIOTS server transport in gRPC\r\nV2.","shortMessageHtmlLink":"Add support for TLS on H2 NIOTS server transport (#2040)"}},{"before":"17b2054451d61c52f4d87e40e5507a149237fdbe","after":"62b7f850a6698f10d4f67d418b752243d8141649","ref":"refs/heads/main","pushedAt":"2024-09-09T13:44:10.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Add TLS support for NIOPosix H2 client (#2036)\n\n## Motivation\r\nWe currently have a `NIOPosix` client transport implementation in gRPC\r\nv2, but it doesn't support TLS.\r\n\r\n## Modifications\r\nThis PR adds support for TLS in the NIOPosix-backed HTTP/2\r\nimplementation of the client transport for gRPC v2.\r\n\r\n## Result\r\nWe now support TLS when using the NIOPosix client transport in gRPC V2.","shortMessageHtmlLink":"Add TLS support for NIOPosix H2 client (#2036)"}},{"before":"d3ef09d71e75c8260f9dcc9a1180dd625b057f75","after":"17b2054451d61c52f4d87e40e5507a149237fdbe","ref":"refs/heads/main","pushedAt":"2024-09-09T12:04:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Adopt swift-testing for status tests (#2049)\n\nMotivation:\r\n\r\nswift-testing has a number of advantages over XCTest (parameterisation,\r\norganisation, failure messages etc.), we should start using it instead\r\nof XCTest.\r\n\r\nModifications:\r\n\r\n- Convert the Status tests\r\n- Add a dependency on swift-testing on Linux (this can be removed when\r\nit's included as part of the toolchain)\r\n\r\nResults:\r\n\r\nBetter tests","shortMessageHtmlLink":"Adopt swift-testing for status tests (#2049)"}},{"before":"1b060a32100d125a31e554d38c78b5b556fc1784","after":"d3ef09d71e75c8260f9dcc9a1180dd625b057f75","ref":"refs/heads/main","pushedAt":"2024-09-09T11:22:32.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"gjcairo","name":"Gus Cairo","path":"/gjcairo","primaryAvatarUrl":"https://github.com/avatars/u/5359423?s=80&v=4"},"commit":{"message":"Default `UseAccessLevelOnImports` to `false` (#2047)\n\n## Motivation\r\n\r\nAfter the discussion on\r\nhttps://github.com/grpc/grpc-swift/pull/2042#discussion_r1746796122, I\r\nplayed a bit more with `InternalImportsByDefault` and the different\r\ngenerator options, got to the following conclusions:\r\n\r\n- If you add `import Foo` to some file, where `Foo` is also being\r\nimported with an explicit `internal` access-level modifier _in the\r\ngenerated code_, it will work as long as `InternalImportsByDefault` is\r\nenabled.\r\n- If you disable `InternalImportsByDefault` for the corresponding target\r\nin `Package.swift`, you get an `\"Ambiguous implicit access level for\r\nimport of 'Foo'; it is imported as 'internal' elsewhere\"` **error** (not\r\na warning). This means that if the code generator plugin(s) begin adding\r\nthe access level modifiers by default based on how they're built, they\r\ncould cause source-breakages for users unintentionally.\r\n- _This isn't any different between language mode 5 or 6_ - I tried\r\nchanging the target's language mode and the behaviour is the same as\r\ndescribed above in either case.\r\n\r\nGiven all this, defaulting `UseAccessLevelOnImports` to `false`\r\n**always** for now may be the easiest (and least surprising, from a\r\nusers' perspective) thing to do, until `InternalImportsByDefault` are\r\nenabled by default in a future Swift >6.0 version (as the proposal\r\nstates), where we can default to `true` again:\r\n```\r\n#if compiler(>=6.x) // where x is the version where internal imports by default is enabled\r\n// default to true\r\n#else\r\n// default to false\r\n#endif\r\n```\r\n\r\nThe rationale behind this is that adding access levels to imports on\r\nyour code is currently totally optional. If you choose to start adding\r\nthem explicitly, then it's okay to also have to tell your\r\ntooling/generators that they should also add them explicitly. If you\r\ndon't, they'll keep generating things the exact same way they've been\r\ndoing it, which is what users of the generator would expect.\r\n\r\n## Modifications\r\n- Default `UseAccessLevelOnImports` to `false` always.\r\n- Regenerate protos\r\n- Remove `InternalImportsByDefault` from test and executable targets,\r\nsince it doesn't make a lot of sense to have access level modifiers on\r\nimports here anyways as these targets cannot be imported.","shortMessageHtmlLink":"Default UseAccessLevelOnImports to false (#2047)"}},{"before":"d4d1a2ef1daec8ffe3093033e4ac6d1dffa44269","after":"1b060a32100d125a31e554d38c78b5b556fc1784","ref":"refs/heads/main","pushedAt":"2024-09-06T10:57:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Enable `InternalImportsByDefault` in remaining modules (#2042)\n\nThis PR enables `InternalImportsByDefault` on `GRPCHealth` and\r\n`InteroperabilityTests`.\r\nIt also regenerates the protos with the latest version of swift-protobuf\r\n(v1.28.1), and increases its min version to 1.28.1 to make sure that we\r\ndon't get build failures when using earlier generators.","shortMessageHtmlLink":"Enable InternalImportsByDefault in remaining modules (#2042)"}},{"before":"6f396ca3aed37ecb4f9c7b4d6fbb0b98df883860","after":"d4d1a2ef1daec8ffe3093033e4ac6d1dffa44269","ref":"refs/heads/main","pushedAt":"2024-09-05T13:44:53.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Make 'finish()' 'async' (#2044)\n\nMotivation:\r\n\r\nFinishing writes should be `async` as the underlying writer may need to\r\nflush and write out any buffered data.\r\n\r\nModifications:\r\n\r\n- Mark `finish()` as `async`\r\n- Refactor the in-proc client transport slightly to avoid async calls\r\nwhile holding a lock\r\n\r\nResult:\r\n\r\n`finish` is `async`","shortMessageHtmlLink":"Make 'finish()' 'async' (#2044)"}},{"before":"0a6b49f4e93ab5461d9d1697644bb0273fcb95da","after":"6f396ca3aed37ecb4f9c7b4d6fbb0b98df883860","ref":"refs/heads/main","pushedAt":"2024-09-05T13:31:47.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Use SwiftProtobuf's new CodeGenerator interface (#2043)\n\nMotivation:\r\n\r\nSwiftProtobuf 1.27.0 added a new `CodeGenerator` interface in 1.27.0 and\r\ndeprecated the old API. This didn't include (non-deprecated) access to\r\nthe source proto which is required for reflection data, however, this\r\nwas added in 1.28.0.\r\n\r\nModification:\r\n\r\n- Rename `options.swift` to `Options.swift`\r\n- Rewrite `main` as `GenerateGRPC`, the functionality is unchanged but\r\ndid require a bit of code shuffling. As part of this some global methods\r\nbecame private methods on the new `GenerateGRPC` `struct`.\r\n- Add support for protobuf editions.\r\n\r\nResult:\r\n\r\n- Fewer warnings\r\n- Can use protobuf editions","shortMessageHtmlLink":"Use SwiftProtobuf's new CodeGenerator interface (#2043)"}},{"before":"3be62d5ac7e4a9f1f43edd5774c947c3d30ceb93","after":"0a6b49f4e93ab5461d9d1697644bb0273fcb95da","ref":"refs/heads/main","pushedAt":"2024-09-05T12:34:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Remove swift-atomics from v2 (#2041)\n\nMotivation:\r\n\r\nSwift 6 includes built-in support for atomics in the Synchronization\r\nmodule. Currently we depend on the swift-atomics package which is no\r\nlonger necessary.\r\n\r\nModifications:\r\n\r\nRemove usages of swift-atomics from v2\r\n\r\nResult:\r\n\r\nFewer dependencies","shortMessageHtmlLink":"Remove swift-atomics from v2 (#2041)"}},{"before":"a06ade33b22b51ac1137bfb10f69fd9582983bd7","after":"3be62d5ac7e4a9f1f43edd5774c947c3d30ceb93","ref":"refs/heads/main","pushedAt":"2024-09-05T12:16:26.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Stop using deprecated protobuf API (#2045)\n\nMotivation:\r\n\r\nswift-protobuf 1.27.0 deprecated the `init` from `serializedData` in\r\nfavor of the `serializedBytes` variant.\r\n\r\nModifications:\r\n\r\n- Stop using `serializedData`\r\n\r\nResult:\r\n\r\nFewer warnings","shortMessageHtmlLink":"Stop using deprecated protobuf API (#2045)"}},{"before":"63168d007b52d8d5d7493af3f5feb4cf8cb7c801","after":"a06ade33b22b51ac1137bfb10f69fd9582983bd7","ref":"refs/heads/main","pushedAt":"2024-09-04T09:08:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Improve the names of a few commonly used APIs (#2014)\n\nMotivation:\r\n\r\nNaming is important; it should be clear and concise.\r\n\r\nModifications:\r\n\r\nThe follow renames all offer more precise names:\r\n- Rename `server.run()` to `server.serve()`\r\n- Rename `server.stopListening()` to `server.beginGracefulShutdown()`\r\n- Rename `client.close()` to `client.beginGracefulShutdown()`\r\n\r\nResult:\r\n\r\nClearer APIs","shortMessageHtmlLink":"Improve the names of a few commonly used APIs (#2014)"}},{"before":"493dbefc0a39d3e7c8cbeba474de3eb404d5ebc1","after":"63168d007b52d8d5d7493af3f5feb4cf8cb7c801","ref":"refs/heads/main","pushedAt":"2024-09-02T14:55:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Add the route-guide example for v2 (#2028)\n\nMotivation:\r\n\r\nExamples help illustrate how to use gRPC. The route guide example\r\nis also the base for one of the \"standard\" gRPC tutorials.\r\n\r\nModifications:\r\n\r\n- Add a route-guide example for v2\r\n\r\nResult:\r\n\r\nMore examples.","shortMessageHtmlLink":"Add the route-guide example for v2 (#2028)"}},{"before":"c450c1a78a5d648b2dfb0e7750020f50677b1bab","after":"493dbefc0a39d3e7c8cbeba474de3eb404d5ebc1","ref":"refs/heads/main","pushedAt":"2024-09-02T14:28:25.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Adopt `Mutex` where possible (#2026)\n\nMotivation:\r\n\r\nSwift 6 has a `Mutex` which we can use in place of `LockedValueBox` or\r\n`NIOLockedValueBox` in a bunch of places.\r\n\r\nModifications:\r\n\r\n- Use `Mutex` where possible\r\n- This causes a number of other changes too as `Mutex` doesn't allocate:\r\nthe allocations move to the type holding it instead. This makes sense as\r\nthe objects which were previously structs didn't have value semantics.\r\n\r\nResult:\r\n\r\nFewer uses of our own lock, no uses of NIOs lock","shortMessageHtmlLink":"Adopt Mutex where possible (#2026)"}},{"before":"d13926b0225defef5b38d4054bfac3167398ada8","after":"c450c1a78a5d648b2dfb0e7750020f50677b1bab","ref":"refs/heads/main","pushedAt":"2024-09-02T14:15:00.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"gjcairo","name":"Gus Cairo","path":"/gjcairo","primaryAvatarUrl":"https://github.com/avatars/u/5359423?s=80&v=4"},"commit":{"message":"Remove 'BufferedStream' (#2018)\n\nMotivation:\r\n\r\nWe use buffered stream in a couple of places which don't require\r\nbackpressure.\r\n\r\nModifications:\r\n\r\n- Replace occurrences with `AsyncStream`\r\n\r\nResult:\r\n\r\nLess code to maintain\r\n\r\n---------\r\n\r\nCo-authored-by: Gus Cairo ","shortMessageHtmlLink":"Remove 'BufferedStream' (#2018)"}},{"before":"3713967b74a76c97fbb25b219c6bc68c75725c28","after":"d13926b0225defef5b38d4054bfac3167398ada8","ref":"refs/heads/main","pushedAt":"2024-09-02T12:21:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Improve error message for missing reflection data (#2038)\n\nMotivation:\r\n\r\nThe message for missing reflection data isn't very helpful as it doesn't\r\nindicate what reflection data is missing.\r\n\r\nModifications:\r\n\r\n- Improve the error message\r\n- Add note about well-known-types\r\n\r\nResult:\r\n\r\nClearer error message","shortMessageHtmlLink":"Improve error message for missing reflection data (#2038)"}},{"before":"962608aafa25000371b1129f1e4bf1d6204dc924","after":"3713967b74a76c97fbb25b219c6bc68c75725c28","ref":"refs/heads/main","pushedAt":"2024-09-02T12:08:32.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Regenerate protos (#2039)\n\nswift-protobuf 1.28.1 includes generated code changes, our. CI fails\r\nwithout regenerating.","shortMessageHtmlLink":"Regenerate protos (#2039)"}},{"before":"397dcf7ba97d4f17d5589c398454264a392ed1cd","after":"962608aafa25000371b1129f1e4bf1d6204dc924","ref":"refs/heads/main","pushedAt":"2024-08-27T15:35:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"gjcairo","name":"Gus Cairo","path":"/gjcairo","primaryAvatarUrl":"https://github.com/avatars/u/5359423?s=80&v=4"},"commit":{"message":"Regenerate protos after swift-protobuf update to 1.28.0 (#2035)\n\n`swift-protobuf` [released\r\n1.28.0](https://github.com/apple/swift-protobuf/releases/tag/1.28.0)\r\nyesterday, and it changed the headers in the generated files to disable\r\n`swiftlint` (see https://github.com/apple/swift-protobuf/pull/1627).\r\nThis means that our CI is now failing the sanity step when it checks the\r\ngenerated files match the expected output of the `generate.sh` script.\r\n\r\nThis PR regenerates the protos with swift-protobuf 1.28.0 to include the\r\nupdated headers.","shortMessageHtmlLink":"Regenerate protos after swift-protobuf update to 1.28.0 (#2035)"}},{"before":"31b20015edcc86aad5b385c3cb71dc30c61f2b5a","after":null,"ref":"refs/heads/glbrntt-patch-3","pushedAt":"2024-08-26T08:33:39.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"}},{"before":"7e6f4cfac2febd67c3b7def5000bd7fab9f5a263","after":"397dcf7ba97d4f17d5589c398454264a392ed1cd","ref":"refs/heads/main","pushedAt":"2024-08-26T07:43:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Add a route guide tutorial (#2033)\n\nMotivation:\r\n\r\nThe Hello World tutorial is very basic, only covering unary RPCs. It\r\ndoesn't cover writing the service definition, generating code, creating\r\nclient/server.\r\n\r\nModifications:\r\n\r\n- Add the basic tutorial covering the route guide example\r\n\r\nResult:\r\n\r\nMore tutorials\r\n\r\n---------\r\n\r\nCo-authored-by: Gus Cairo ","shortMessageHtmlLink":"Add a route guide tutorial (#2033)"}},{"before":"1699a6fd99030b0b8973752660001e34bbdda860","after":"7e6f4cfac2febd67c3b7def5000bd7fab9f5a263","ref":"refs/heads/main","pushedAt":"2024-08-26T07:32:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Point to correct docs from README (#2034)","shortMessageHtmlLink":"Point to correct docs from README (#2034)"}},{"before":null,"after":"31b20015edcc86aad5b385c3cb71dc30c61f2b5a","ref":"refs/heads/glbrntt-patch-3","pushedAt":"2024-08-25T17:58:52.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Point to correct docs from README","shortMessageHtmlLink":"Point to correct docs from README"}},{"before":"82a2e2337090a80d210c8f6a9ab935be60829966","after":"1699a6fd99030b0b8973752660001e34bbdda860","ref":"refs/heads/main","pushedAt":"2024-08-23T11:44:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Add helpers for creating transports (#2029)\n\nMotivation:\r\n\r\nCreating an HTTP/2 transport requires quite a bit of typing and knowing\r\nwhat types to use. We can make use of type inference to make this a bit\r\neasier for users.\r\n\r\nModifications:\r\n\r\n- Add constrained extensions to `ClientTransport` and `ServerTransport`\r\nallowing for `http2NIO` and `http2NIOTS` transports to be created via\r\nstatic methods. This makes it possible for transports to be created\r\ninline in the `init` of a `GRPCClient` or `GRPCServer` without the users\r\nneed the full type.\r\n- Extend the `defaults` functions so that they can take an optional\r\ntrailing closure to further modify the defaults. This allows for configs\r\nto be created and modified inline when making a transport.\r\n- A config is now required to create client transports and the NIOTS\r\nserver transport as these will soon require a transport security config.\r\n\r\nResults:\r\n\r\nEasier to create clients/servers","shortMessageHtmlLink":"Add helpers for creating transports (#2029)"}},{"before":"a1c333b7352284d1b9d8ccab04e5936de490eb27","after":"82a2e2337090a80d210c8f6a9ab935be60829966","ref":"refs/heads/main","pushedAt":"2024-08-23T09:21:05.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Allow access level on imports to be disabled (#2032)\n\nMotivation:\r\n\r\nThe v2 code generator defaults to generating access levels on imports.\r\nSwiftProtobuf also has but hasn't yet been released. This causes\r\nproblems as explicit 'internal' imports in gRPC are ambiguous with the\r\nimplicit imports from Protobuf.\r\n\r\nModifications:\r\n\r\n- Allow an opt-out of explicit imports for v2 code generation\r\n\r\nResult:\r\n\r\nCan build against current version of Protobuf without\r\n`InternalImportsByDefault`.","shortMessageHtmlLink":"Allow access level on imports to be disabled (#2032)"}},{"before":"e3258e93577ecbdf448e6e1af86a3f744bd3777f","after":"a1c333b7352284d1b9d8ccab04e5936de490eb27","ref":"refs/heads/main","pushedAt":"2024-08-21T15:16:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Add a doc on generating stubs (#2027)\n\nMotivation:\r\n\r\nIt's not always easy to know how to control the code generator or the\r\nSwiftPM build plugin.\r\n\r\nModifications:\r\n\r\n- Add a narrative doc on generating stubs using both approaches\r\n\r\nResults:\r\n\r\nBetter docs","shortMessageHtmlLink":"Add a doc on generating stubs (#2027)"}},{"before":"ad52f944b2f08d8c5464623fd18f2eac1b664e8e","after":"e3258e93577ecbdf448e6e1af86a3f744bd3777f","ref":"refs/heads/main","pushedAt":"2024-08-21T12:29:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Fix echo example (#2025)\n\nMotivation:\r\n\r\nThe v2 echo example accidentally ignored the response message and\r\nprinted the text from the input message.\r\n\r\nModifications:\r\n\r\n- Use the response message\r\n\r\nResult:\r\n\r\nFewer warnings","shortMessageHtmlLink":"Fix echo example (#2025)"}},{"before":"431d8078ca1b5122c21343677ca3b10b23815df3","after":"ad52f944b2f08d8c5464623fd18f2eac1b664e8e","ref":"refs/heads/main","pushedAt":"2024-08-21T09:50:40.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://github.com/avatars/u/5047671?s=80&v=4"},"commit":{"message":"Add a 'Hello, World' tutorial (#2023)\n\nMotivation:\r\n\r\nTutorials are a great way to introduce new users to the library.\r\n\r\nModifications:\r\n\r\n- Add a 'hello, world' tutorial\r\n\r\nResult:\r\n\r\nEasier to get started","shortMessageHtmlLink":"Add a 'Hello, World' tutorial (#2023)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xMVQxNDo1MDowMi4wMDAwMDBazwAAAASzVgPv","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xMVQxNDo1MDowMi4wMDAwMDBazwAAAASzVgPv","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0yMVQwOTo1MDo0MC4wMDAwMDBazwAAAASgA-7R"}},"title":"Activity ยท grpc/grpc-swift"}