Skip to content

Releases: grpc/grpc-swift

gRPC Swift 1.0.0-alpha.17

16 Jul 09:36
39c91a8
Compare
Choose a tag to compare
Pre-release

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

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 1.0.0-alpha.16

08 Jul 08:28
e461a84
Compare
Choose a tag to compare
Pre-release

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 1.0.0-alpha.15

03 Jul 14:42
4e91a40
Compare
Choose a tag to compare
Pre-release

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 1.0.0-alpha.14

10 Jun 18:10
399cfe1
Compare
Choose a tag to compare
Pre-release

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 1.0.0-alpha.13

08 Jun 16:54
dca180f
Compare
Choose a tag to compare
Pre-release

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)

Release 0.11.0

22 May 08:40
Compare
Choose a tag to compare
  • Update vendored gRPC-core to v1.24.3 (#804)

gRPC Swift 1.0.0-alpha.12

13 May 13:09
b83ee1e
Compare
Choose a tag to compare
Pre-release

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 1.0.0-alpha.11

24 Mar 13:32
373ffd5
Compare
Choose a tag to compare
Pre-release

SemVer Patch

  • Remove required platforms from SPM (#761)
  • Added .git ending for swift-log (#760, patch credit to @fabianfett)

gRPC Swift 1.0.0-alpha.10

19 Mar 13:09
ec809b7
Compare
Choose a tag to compare
Pre-release

⚠️ This release contains a number of API breaking changes. ⚠️

In order to support payloads other than Protocol Buffers, for example Flatbuffers, it was necessary for much of the surface API to be generic over a new protocol, GRPCPayload instead of Message. This therefore requires that services are regenerated.

We also took this opportunity to address the interface between the generated code and runtime library: clients previously relied on ClientConnection for transport, they now rely on an something conforming to GRPClient; such as ClientConnection.

Generated clients have also had "Service" removed from their name. For example, the client for the Bar service in the Foo package would previously have been generated as Foo_BarServiceClient and will now be generated as Foo_BarClient. If you have multiple references to generated clients in your code which need updating it is possible to create a deprecated type alias such that Xcode will provide fixits:

@available(*, deprecated, renamed: "Foo_BarClient")
typealias Foo_BarServiceClient = Foo_BarClient

The list of supported platforms has now been added to Package.swift; dependents using Swift Package Manager must now also declare their supported platforms.

SemVer Major:

  • Adds the ability to use different payloads (#710, patch credit to @mustiikhalil)
  • Rename generated clients from FooServiceClient to FooClient (#736)
  • Put the client connection behind a protocol (#727)
  • Add supported platforms to Package.swift (#696)
  • Add support for compression (#714, #707, #729)

SemVer Minor:

  • Add a builder to make configuring a server easier (#752)
  • Add a builder to make configuring a client connection easier (#733)

SemVer Patch:

  • Fix bug with BoringSSLError.invalidSNIName exception (#702, patch credit to @esen)
  • Use metadata in log messages (#720, patch credit to @mariosangiorgio)
  • Fixed basic tutorial typo (#724, patch credit to @JanC)
  • Generate documentation from proto comments (#743)
  • Normalize user-provider headers (#730)
  • Fixed a bug where in some cases conformace to GRPCProtobufPayload could be generated multiple times (#740)
  • Add tests for custom payloads (#719)
  • Reorder some of the server logic. (#717)
  • Document how to create certificates/private keys from a string (#699)
  • Various infrastructure and documentation improvements (#695, #698, #701, #704, #713, #718, #728, #731, #734)

gRPC Swift 1.0.0-alpha.9

09 Jan 12:33
be70633
Compare
Choose a tag to compare
Pre-release

⚠️ This release contains a number of API breaking changes. ⚠️

Many of the types which should be implementation details are now either internal or private. Similarly, a number of components have been refactored to be extensible in a way which doesn't break the API in the future.

In addition to the API changes:

  • Avoid protocol check after TLS handshake (#685, credit to @WilliamIzzo83)
  • log channel readiness and eventloop for debugging (#676, credit to @weissi)
  • Fix typo in the "grpc-exp" ALPN name (#681)
  • Miscelanoues CI and infrastructure improvements (#670, #691, #686, #677)

API Changes:

  • Make GRPCTimeout extensible and add documentation. (#689)
  • Make gRPC error types extensible (#669)
  • Rename asGRPCStatus() to makeGRPCStatus(), add documentation. (#690)
  • Remove outdated examples/documentation (#692)
  • Simplify compression representation. (#688)
  • Make LengthPrefixedMessageWriter internal (#673)
  • Make server request/response parts internal (#672)
  • Make LengthPrefixedMessageReader internal (#674)
  • Make GRPCClientUserEvent internal (#675)
  • Make client request/response parts internal (#671)
  • Make server CallHandlers more internal (#657) [email protected]
  • Make WebCORSHandler internal (#664)
  • Make GRPCClientChannelHandler underscore internal (#662)
  • Make HTTPProtocolSwitcher internal (#661)
  • Make GRPCServerCodec internal (#660)
  • Make TLSVerificationHandler internal (#659)
  • Make DelegatingErrorHandler underscored-internal (#658)
  • Make GRPCApplicationProtocolIdentifier internal (#665)
  • Make header names internal (#666)