grpc-swift

The Swift language implementation of gRPC.

APACHE-2.0 License

Downloads
432
Stars
1.9K
Committers
108

Bot releases are hidden (Show)

grpc-swift - gRPC Swift 1.2.0

Published by glbrntt over 3 years ago

SemVer Minor

  • Limit the permitted length of received messages (CVE-2021-36155)

SemVer Patch

  • Loop, don't recurse, over messages. (CVE-2021-36154)
  • Do not suppress data in Web to HTTP/2. (CVE-2021-36153)
  • Check Swift reserved names when generating function names (#1213, patch credit to @ialimz)
  • Use new NIOSSL API for making 'TLSConfiguration' (#1218)
  • Bump version number (#1219)

Other Changes

  • Migrate from travis.org to GitHub actions. (#1214)
  • Comment out testBidirectionalStreamingOnCloseAfterUserFunctionFails (#1216)
grpc-swift - gRPC Swift 1.1.1

Published by glbrntt over 3 years ago

SemVer Patch

  • Bump the minimum version of Swift Argument Parser (#1211)
  • Bump version to 1.1.1 (#1212)

Other Changes

  • Fix broken link in tutorial (#1209, patch credit to @konekoya)
  • Update Cocoapods for 1.1.0 (#1201)
grpc-swift - gRPC Swift 1.1.0

Published by glbrntt over 3 years ago

SemVer Minor

  • Add a closeFuture to the server context (#1147)
  • Allow calls to run on a specified EventLoop (#1156)
  • Provide functions for making default client and server configurations (#1198)

SemVer Patch

  • Ignore errors when the client is in the idle state. (#1133)
  • Better handle DATA frames with end stream set (#1139)
  • Make storage on server contexts thread safe (#1146)
  • Adopt new SwiftNIO API for doing synchronous pipeline operations to reduce allocations (#1149, #1160)
  • Make 'NIOSSLContext' ahead of time to reduce allocations (#1184)
  • Use static trailers where possible to save allocations (#1151)
  • Fix bugs in gRPC-Web found by oss-fuzz (#1187)
  • Add remote and local IP addresses to logging metadata (#1195)
  • Refactor parts of the ConnectionManager and add internal types for an upcoming connection pool (#1158, #1162, #1173, #1176, #1189)
  • Add a static-source Logger (#1165)
  • Add in-source fuzzing support (#1177)
  • Bump version for 1.1.0 release (#1200)

Other Changes

  • Bump version of Google's SpeechToText Example Podfile (#1142, patch credit to @Raduan77)
  • Use PlatformSupport.makeEventLoopGroup in the basic tutorial (#1179, patch credit to @e-sung)
  • Update Cocoapods (#1130)
  • Update bug report template to include how code is built (#1140)
  • Add allocation counting tests (#1150, #1155, #1169, #1188)
  • Test against Swift 5.4 in CI (#1167)
  • Add an --iterations option to the Echo example (#1180)
  • Add fuzzing failure cases (#1190)
  • Fix compiler crash on Swift 5.2 when inlining test helper (#1192)
  • Add a security policy. (#1193)
  • Fix links in interceptors tutorial (#1197)
grpc-swift - gRPC Swift 1.0.0

Published by glbrntt over 3 years ago

SemVer Patch

  • Add an option to protoc-gen-grpc-swift to allow generated stub names to use the casing from their .proto definition (#1123)
  • Set the ALPN tokens if not otherwise set by the user when providing TLS configuration via NIOSSL.TLSConfiguration. (#1127)
  • Add a versioned user-agent string to requests (#1128)

Other Changes

  • Update Cocoapods and the podspec generation script (#1122)
  • Test improvements (#1126, #1129)
grpc-swift - gRPC Swift 1.0.0-alpha.24

Published by glbrntt over 3 years ago

This release removes all deprecated code and compatibility shims for
deprecated code
. This includes the interface between gRPC and generated
server code used by versions 1.0.0-alpha.22 and earlier.

SemVer Major

  • Remove deprecated and unreachable code (#1115)

SemVer Patch

  • Remove support for the 'old' way of handling RPCs on the server (#1113)
  • Drop the "OK" message from the static 'ok' status. (#1120)
  • Fix up some documentation, start an FAQs doc (#1121)

Other Changes

  • Update Cocoapods (#1111)
  • Add documentation about public API and compatability guarantees (#1116)
  • Use swift-argument-parser for examples and tools (#1118)
  • Move the pcap example into Source/Examples/ (#1119)
grpc-swift - gRPC Swift 1.0.0-alpha.23

Published by glbrntt over 3 years ago

This release includes two noteworthy changes that users should be aware of:

  • The minimum supported version of Swift has been raised to 5.2.
  • The interface between gRPC and the generated server code has changed. The old interface has been deprecated and will be removed in an upcoming release. Users are required to re-generate their server code, no other action is necessary.

SemVer Major

  • Raise the minimum Swift version to 5.2 (#1106)

SemVer Minor

  • Add client API for providing a custom SSL certificate verification callback (#1107, patch credit to @franck-clement-ug)
  • Expose the remote address on the server interceptor context (#1081)
  • Refactor how gRPC handles incoming RPCs on the server. Note that this change impacts how the generated server code and gRPC interact; users must therefore re-generate their server code. (#1093, #1095, #1097, #1098, #1100, #1101, #1110, #1105, #1102)

SemVer Patch

  • Added support of the protobuf optional feature (#1084, patch credit to @azatZul)
  • Compact the client 'ChannelPipeline' to reduce runtime costs (#1083)
  • Avoid unnecessary (and expensive) copies of client and server interceptor contexts (#1090, #1091, #1092)

Other Changes

  • Update Cocoapods (#1082)
  • Add a script for diffing cachegrind output (#1086)
  • Add a handful more perf tests. (#1096)
grpc-swift - gRPC Swift 1.0.0-alpha.22

Published by glbrntt almost 4 years ago

SemVer Major

  • Drop support for Swift 5.0 (#1070)

SemVer Minor

  • Allow the server to be gracefully shutdown. (#1076)
  • Generate service name for the client and proto service comments (#1059)

SemVer Patch

  • Only generate services described in files in the codegen request (#1058)
  • Store the HTTP/2 multiplexer instead of retrieving it from the ChannelPipeline (#1062)
  • Simplify client ChannelPipeline setup (#1064)
  • Extract the logic from the GRPCIdleHandler into a state machine (#1068)
  • Merge idle and keepalive handlers to reduce optional and force casts (#1079)
  • Refactor state machines to avoid generics (#1073, #1080)
  • Make a bunch of server code inlinable (#1077)
  • Add a unary server benchmark (#1074)
  • Remove unused code (#1078)

Other Changes

  • Update cocoapods (#1060)
  • Add an interceptors tutorial (#1061)
  • Provide cachegrind mode. (#1071)
  • Make testClientReconnectsAutomatically less flaky (#1075)
grpc-swift - gRPC Swift 1.0.0-alpha.21

Published by glbrntt almost 4 years ago

This release introduces interceptors and server performance improvements.

Interceptors are a new API layer which provides users with an entry point to the request and response streams, allowing cross cutting concerns such as logging or metrics to be implemented and cleanly shared across multiple RPCs. Note that using interceptors requires client and server code to be regenerated.

This release also includes significant changes to the internal server implementation to improve performance. Notably the implementation uses HTTP/2 concepts directly rather than translating to the simpler HTTP/1 types and back, as such the HTTP/1 concepts in the public API have been deprecated and will be removed in the future. Additionally, the generic constraints on the server call handlers have changed.

SemVer Major

  • Add support for client and server interceptors. This is a breaking change as it required an alteration to the GRPCChannel protocol. (#986, #993, #1001, #1002, #1006, #1010, #1019, #1022, #1024, #1028, #1030, #1031, #1032, #1035, #1037)
  • Move server (de)serialization to the server call handler resulting in a change in the generic constraints on _BaseCallHandler, UnaryCallHandler, ClientStreamingCallHandler, ServerStreamingCallHandler and BidirectionalStreamingCallHandler (#1046)
  • Remove HTTP/1 types from the public server API and switch server processing to be done on HTTP/2 concepts to avoid the cost of translating between HTTP/1 and HTTP/2 types on HTTP/2 connections. gRPC Web (HTTP/1) remains supported by translating from HTTP/1 to HTTP/2. (#1017, #1041, #1047, #1048, #1050)
  • Make 'GRPCStatus' a struct (#989)

SemVer Minor

  • Add new API to allow responses to be sent from server contexts without allocating a promise (#1020)
  • Enforce ALPN on the server and add new API to allow it to not be required. (#1055)

SemVer Patch

  • Ensure that when responses are sent from streaming contexts that they are sent on the event loop. (#1054)
  • Make the description of 'RPCTimedOut' static (#1009)
  • Tolerate identity compression as no compression (#1016)
  • Split path strings using UTF8 (#1027)
  • Provide more specific errors messages for failing channels (#984)
  • Tidy up some of the logic in the server call contexts (#1018)
  • Use the server hostname override as the :authority, if present (#1033)
  • Fix typo in 'requestDeserializer' (#1052)
  • Reduce some excessive server logging. (#1011)
  • Remove duplicated code. (#1013)

Other Changes

  • Add support for watchOS to the podspecs (#998, patch credit to @daltonclaybrook)
  • Fixed a typo in the protoc plugin name in README (#1021, patch credit to @chigichan24)
  • Add a performance benchmark with unary and bidirectional streaming tests (#990, #1003, #1004, #1012, #1043, #1045)
  • Pin the formatter version (#995)
  • Stop checking in Package.resolved (#1008)
  • Update CocoaPods to alpha.20 (#982)
grpc-swift - Release 0.9.2

Published by glbrntt almost 4 years ago

  • Fixes an issue for building with Carthage using Xcode 12
grpc-swift - gRPC Swift 1.0.0-alpha.20

Published by glbrntt about 4 years ago

SemVer Minor

  • Add an option to the client builder to configure the TLS certificate verification mode (#980)

SemVer Patch

  • Fixed a bug where the client would re-establish a connection if the connection was dropped and there were no active RPCs (#967)
  • Increased the client idle timeout and removed the default server idle timeout to align with defaults used by grpc/grpc (#968)
  • Added log messages for when the active stream count reaches and drops below the HTTP/2 max concurrent streams limit (#974)
  • Avoid the possibility of making outcalls in 'ClientCallTransport' before updating internal state (#970)
  • Update the logged connection ID on transient failures (#969)
  • Update formatting (#957)

Other Changes

  • Update CocoaPods for alpha-19 (#956)
  • Add a missing call to 'close()' in examples (#965)
  • Enable logging in the SpeechToText example (#973)
  • Don't delay logging until the end of tests when GRPC_ALWAYS_LOG is enabled (#979)
grpc-swift - gRPC Swift 1.0.0-alpha.19

Published by glbrntt about 4 years ago

This release includes two sets of breaking changes. The first is a result of performance work on the server, as a result server code must be regenerated. Service provider implementations are not affected by this change. The second breaking change replaces the GRPCStatus.Code enum with an equivalent struct and removes the doNotUse case.

SemVer Major

  • Performance improvements to RPC handling for the server. Note: this changes requires server code to be regenerated. (#924, #925, #931, #932, #935)
  • Turn GRPCStatus.Code into a struct and remove the doNotUse case (#942)

SemVer Patch

  • Fixed a bug where trailers-only responses without a content-type header would result in a status code being syntesized rather than propagating any status code present in the trailers. (#927)
  • Fixed a few incorrect "source" labels emitted in logs (#933)
  • Added additional HTTP/2 information to logs (#938)
  • Allow the gRPC module name to be customised when generating code (#945, #952)
  • Fixed a few edge cases which would lead to a precondition failure in the ConnectionManager (#950, #953)
  • Update NIO version to 2.22.0 and NIOHTTP2 to 1.14.1. (#954)
  • Added SwiftFormat to CI and baselined the existing codebase (#929, #936)

Other Changes

  • Update the quick start guide (#940, patch credit to @kingkangyu)
  • Various CI improvements (#923, #934, #936)
  • Update information relating to Cocoapods in README (#943, #944)
  • Fixed a performance benchmark (#948)
grpc-swift - gRPC Swift 1.0.0-alpha.18

Published by glbrntt about 4 years ago

This release includes breaking changes to the ServerErrorDelegate protocol. The functions transformLibraryError(_:) and transformRequestHandlerError(_:) now return the GRPCStatus and HTTPHeaders: this allows users to send additional metatada to clients. The original API returning just GRPCStatus has been deprecated and will be removed prior to 1.0.0.

As part of this release, gRPC will no longer log by default. A logger must be provided to gRPC in order for logs to be emitted.

SemVer Major

  • Allow the server error delegate to return HTTPHeaders in addition to the gRPC status in order to allow for additional metatada to be sent to the client. (#873, patch credit to @FranzBusch)

SemVer Minor

  • Added configuration to allow for loggers to be specified on the client and server (#902)
  • Added configuration to allow clients and servers to provide a debugging channel initializer (#908, #911)

SemVer Patch

  • Mitigate an issue where insecure connections using Network.framework may stall in the event of zero-length writes. (#917)
  • Removed some unnecessary copy-on-writes (#906)
  • Reduced code duplication between builders and configuration (#907)
  • Update to SwiftNIO HTTP/2 1.13.0 (#922)
  • Switch a numericCast to the required type (#920)

Other Changes

  • Various Cocopods fixes (#898, #916)
  • Various testing and CI improvements (#919, #910, #905, #903)
grpc-swift - gRPC Swift 1.0.0-alpha.17

Published by glbrntt over 4 years ago

This release includes changes to how gRPC Swift supports SwiftProtobuf messages. As such service code will need to be regenerated.

gRPC Swift provides support for any message types conforming to the GRPCPayload protocol. SwiftProtobuf.Message followed the same code path as all other message types and required conformance to GRPCPayload. This was done by generating conformance to GRPCProtobufPayload which provided a default implementation of the methods required by GRPCPayload for SwiftProtobuf.Messages. However, generating this conformance caused numerous issues and required the user to pass their message definitions to the gRPC code generator. As such we now support SwiftProtobuf.Message separately to GRPCPayload: generating conformance to GRPCProtobufPayload is no longer required and users are no longer required to pass their message definitions to the gRPC code generator; only their service definitions.

SemVer Major

  • Support SwiftProtobuf.Message without requiring GRPCProtobufPayload conformance. This change will require users to regenerate their code in order to remove the now redundant conformance. (#886, #888, #889, #894)

SemVer Minor

  • Add support for ping-based keepalive to both client and server. (#850, #893, patch credit to @SebastianThiebaud)

SemVer Patch

  • Fix an aggressive assert which cause a fatal error when using NetworkPreference.best on older platforms (#896)

Other Changes

  • Reduce the size of input in some tests (#890)
grpc-swift - gRPC Swift 1.0.0-alpha.16

Published by glbrntt over 4 years ago

This release includes a few breaking changes in order to enable API evolution in the future.

SemVer Major

  • Turn NetworkImplementation and NetworkPreference enums into structs. This will only affect users switching over these types. (#866)
  • Remove GRPCStreamType public enum which was only used as part of an error type. (#880)

SemVer Patch

  • Fixed a bug where clients may hit a preconditon failure on idle connections. (#875)
  • Fixed a bug where payload conformance would not be generated for nested messages. (#879)
  • Provide a new codegen option to allow test clients to be generated separately from real clients. (#881)

Other Changes

  • Fix incorrect documentation for certificate verification on the server builder (#882)
  • Remove 'nio' tag from Issue templates (#876)
grpc-swift - gRPC Swift 1.0.0-alpha.15

Published by glbrntt over 4 years ago

This release includes a number of breaking changes. The most important of which are detailed below:

  1. Timeouts. The CallOptions.timeout property has been deprecated in favour of timeLimit which allows either a timeout or a deadline to be set. The type used for timeouts has changed from GRPCTimeout to SwiftNIO's TimeAmount for better compatability with the rest of the Swift on Server ecosystem.
  2. API evolution changes. A number of public enums have been converted into public structs. At the call-site this change will not impact users. This change will break users who previously switched over these enums. Changed types include RequestIDProvider, ConnectionTarget, and Compression. In addition, the client call implementations were reworked and the BaseClientCall class was removed as a result.

This release also includes a number of changes to the generated code, including
the ability to generate test clients.

SemVer Major

  • Allow deadlines or timeouts to be set on RPCs. The timeout option on CallOptions has been replaced with timeLimit. (#842)
  • Replace a number of public enums with struct in order to make the API more evolvable in the future. This includes RequestIDProvider, ConnectionTarget, and Compression. This will only affect users who switch over these cases. (#839, #861, #867)
  • Provide an internal transport abstraction for client RPCs. The user facing impact is the removal of the BaseClientCall class. (#834)

SemVer Minor

  • Added an 'isOk' to property to GRPCStatus (#840)
  • Added a configuration option to allow the connectivity state delegate DispatchQueue to be specified (#849)
  • Added a configuration option which allows users to 'fast-fail' an RPC rather than waiting for a active connection (#860)
  • Added an option to the code generator to enable users to generate 'test clients' (#855, #864, #870, #856, #865)

SemVer Patch

  • Provide more specific errors to failed promises on calls rather than the error status (#859)
  • Fix a bug which prevented the user-agent header being overridden via user provided customMetadata (#845, patch credit to @ikait)
  • Fixed a race condition when scheduling a timeout on an RPC (#847)
  • No longer send requests in a call object initialisation (#848)
  • Remove a warning from a now-redundant try (#871)

Other Changes

  • Fix a Cocoapod version issue in one of the examples (#851, patch credit to @zhungxd)
  • Add a generation of the gRPC-Swift-Plugins.podspec (#869, patch credit to @Lutzifer)
  • Make language more inclusive (#841)
  • Various infrastructure improvements (#858, #872)
grpc-swift - gRPC Swift 1.0.0-alpha.14

Published by glbrntt over 4 years ago

SemVer Patch

  • Updated Dependencies (#828, patch credit to @mRs-)
  • Ignore additional state changes after expecations have been met (#833)
  • Generate conformances files containing a message are passed to the plugin (#837)
  • Update CocoaPods for alpha13. (#835, #838)
  • Update CI (#832)
grpc-swift - gRPC Swift 1.0.0-alpha.13

Published by glbrntt over 4 years ago

Note: client/server code may need to be regenerated as a result of this release.

SemVer Major

  • Rewrite client connection management (#798)

SemVer Minor

  • Make HTTP/2 flow control window size configurable for clients and servers (#786, patch credit to @johnkassebaum)
  • Make idle timeout configurable (#824)

SemVer Patch

  • Bidirectional Streaming iOS Example (#776, patch credit to @Jake-Prickett)
  • protoc-gen-grpc-swift: generate only requested files (#794, patch credit to @jagobagascon)
  • protoc-gen-grpc-swift: when generating a grpc-swift service do not add an import for its own module (#796, patch credit to @jagobagascon)
  • docs: add ProtoPathModuleMappings to the plugin options list (#797, patch credit to @jagobagascon)
  • Add a server-idle handler (#818)
  • Log errors from the server channel. (#791)
  • Cache CI dependencies (#827)
  • Run tests with TSAN where available, add macOS CI for Swift 5.2 (#799)
  • Revert #782 and suppress warnings (#825)
  • Update our issue templates (#806)
  • Update GitHub issue templates (#812)
  • Fix up test using connectivity state delegate (#815)
  • Add high level differences between 1.x and 0.y to README (#814)
  • Update build_podspecs script and re-run (#792)
  • Provide conformance for messages provided by SwiftProtobuf (#811)
  • workaround SR-12939 (#826, patch credit to @weissi)
grpc-swift - Release 0.11.0

Published by glbrntt over 4 years ago

  • Update vendored gRPC-core to v1.24.3 (#804)
grpc-swift - gRPC Swift 1.0.0-alpha.12

Published by glbrntt over 4 years ago

SemVer Minor

  • Add a retry limit to ConnectionBackoff (#784)

SemVer Patch

  • Fix pushing CocoaPods. (#790)
  • Suppress #file/#filePath warnings on recent compilers (#782)
  • Discard excess read bytes in LengthPrefixedMessageReader. (#781)
  • Provide Pod Specific Descriptions and Script Cleanup (#775, patch credit to @Jake-Prickett)
  • Bump version to 1.0.0-alpha.11 (#774, patch credit to @nathanhleung)
  • Add Cocoapod Support for SwiftGRPC (#764, patch credit to @Jake-Prickett)
  • Point build badge to master branch (#769)
  • Change Swift 5.2 development to release for CI (#765)
grpc-swift - gRPC Swift 1.0.0-alpha.11

Published by glbrntt over 4 years ago

SemVer Patch

  • Remove required platforms from SPM (#761)
  • Added .git ending for swift-log (#760, patch credit to @fabianfett)
Package Rankings
Top 0.83% on Cocoapods.org
Top 17.72% on Formulae.brew.sh
Top 11.36% on Carthage
Top 2.15% on Swiftpackageindex.com