Releases: grpc/grpc-swift
Release 0.9.2
- Fixes an issue for building with Carthage using Xcode 12
gRPC Swift 1.0.0-alpha.20
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
gRPC Swift 1.0.0-alpha.19
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.Codeinto a struct and remove thedoNotUsecase (#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
gRPC Swift 1.0.0-alpha.18
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
HTTPHeadersin 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
numericCastto the required type (#920)
Other Changes
gRPC Swift 1.0.0-alpha.17
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.Messagewithout requiringGRPCProtobufPayloadconformance. 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.beston older platforms (#896)
Other Changes
- Reduce the size of input in some tests (#890)
gRPC Swift 1.0.0-alpha.16
This release includes a few breaking changes in order to enable API evolution in the future.
SemVer Major
- Turn
NetworkImplementationandNetworkPreferenceenums intostructs. This will only affect users switching over these types. (#866) - Remove
GRPCStreamTypepublic 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
gRPC Swift 1.0.0-alpha.15
This release includes a number of breaking changes. The most important of which are detailed below:
- Timeouts. The
CallOptions.timeoutproperty has been deprecated in favour oftimeLimitwhich allows either a timeout or a deadline to be set. The type used for timeouts has changed fromGRPCTimeoutto SwiftNIO'sTimeAmountfor better compatability with the rest of the Swift on Server ecosystem. - API evolution changes. A number of
public enums have been converted intopublic structs. At the call-site this change will not impact users. This change will break users who previouslyswitched over theseenums. Changed types includeRequestIDProvider,ConnectionTarget, andCompression. In addition, the client call implementations were reworked and theBaseClientCallclass 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
timeoutoption onCallOptionshas been replaced withtimeLimit. (#842) - Replace a number of public
enums withstructin order to make the API more evolvable in the future. This includesRequestIDProvider,ConnectionTarget, andCompression. 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
BaseClientCallclass. (#834)
SemVer Minor
- Added an 'isOk' to property to
GRPCStatus(#840) - Added a configuration option to allow the connectivity state delegate
DispatchQueueto 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
gRPC Swift 1.0.0-alpha.14
gRPC Swift 1.0.0-alpha.13
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
- Update vendored gRPC-core to v1.24.3 (#804)