Releases: grpc/grpc-swift
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.Code
into a struct and remove thedoNotUse
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
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
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
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.Message
s. 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 requiringGRPCProtobufPayload
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 1.0.0-alpha.16
This release includes a few breaking changes in order to enable API evolution in the future.
SemVer Major
- Turn
NetworkImplementation
andNetworkPreference
enum
s intostruct
s. 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
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.timeout
property has been deprecated in favour oftimeLimit
which allows either a timeout or a deadline to be set. The type used for timeouts has changed fromGRPCTimeout
to SwiftNIO'sTimeAmount
for better compatability with the rest of the Swift on Server ecosystem. - API evolution changes. A number of
public enum
s have been converted intopublic struct
s. At the call-site this change will not impact users. This change will break users who previouslyswitch
ed over theseenum
s. Changed types includeRequestIDProvider
,ConnectionTarget
, andCompression
. In addition, the client call implementations were reworked and theBaseClientCall
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 onCallOptions
has been replaced withtimeLimit
. (#842) - Replace a number of public
enum
s withstruct
in 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
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
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)
gRPC Swift 1.0.0-alpha.12
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)