The Swift language implementation of gRPC.
APACHE-2.0 License
Bot releases are visible (Hide)
Published by glbrntt over 3 years ago
Published by glbrntt over 3 years ago
Published by glbrntt over 3 years ago
closeFuture
to the server context (#1147)EventLoop
(#1156)ConnectionManager
and add internal types for an upcoming connection pool (#1158, #1162, #1173, #1176, #1189)PlatformSupport.makeEventLoopGroup
in the basic tutorial (#1179, patch credit to @e-sung)Published by glbrntt over 3 years ago
protoc-gen-grpc-swift
to allow generated stub names to use the casing from their .proto definition (#1123)NIOSSL.TLSConfiguration
. (#1127)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.
Published by glbrntt over 3 years ago
This release includes two noteworthy changes that users should be aware of:
Published by glbrntt almost 4 years ago
ChannelPipeline
(#1062)ChannelPipeline
setup (#1064)GRPCIdleHandler
into a state machine (#1068)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.
GRPCChannel
protocol. (#986, #993, #1001, #1002, #1006, #1010, #1019, #1022, #1024, #1028, #1030, #1031, #1032, #1035, #1037)_BaseCallHandler
, UnaryCallHandler
, ClientStreamingCallHandler
, ServerStreamingCallHandler
and BidirectionalStreamingCallHandler
(#1046)Published by glbrntt almost 4 years ago
Published by glbrntt about 4 years ago
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.
GRPCStatus.Code
into a struct and remove the doNotUse
case (#942)ConnectionManager
(#950, #953)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.
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)numericCast
to the required type (#920)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.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.
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)NetworkPreference.best
on older platforms (#896)Published by glbrntt over 4 years ago
This release includes a few breaking changes in order to enable API evolution in the future.
NetworkImplementation
and NetworkPreference
enum
s into struct
s. This will only affect users switching over these types. (#866)GRPCStreamType
public enum which was only used as part of an error type. (#880)Published by glbrntt over 4 years ago
This release includes a number of breaking changes. The most important of which are detailed below:
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.public enum
s have been converted into public struct
s. At the call-site this change will not impact users. This change will break users who previously switch
ed over these enum
s. 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.
timeout
option on CallOptions
has been replaced with timeLimit
. (#842)enum
s 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)BaseClientCall
class. (#834)GRPCStatus
(#840)DispatchQueue
to be specified (#849)try
(#871)Published by glbrntt over 4 years ago
Published by glbrntt over 4 years ago
Note: client/server code may need to be regenerated as a result of this release.
Published by glbrntt over 4 years ago
Published by glbrntt over 4 years ago
Published by glbrntt over 4 years ago
swift-log
(#760, patch credit to @fabianfett)