Releases: grpc/grpc-swift
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)
gRPC Swift 1.0.0-alpha.11
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
⚠️ 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
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)