Skip to content

Releases: grpc/grpc-swift

gRPC Swift 1.1.0

08 Jun 13:27
f258d1c
Compare
Choose a tag to compare

SemVer Minor

  • Add a closeFuture to the server context (#1147)
  • Allow calls to run on a specified EventLoop (#1156)
  • Provide functions for making default client and server configurations (#1198)

SemVer Patch

  • Ignore errors when the client is in the idle state. (#1133)
  • Better handle DATA frames with end stream set (#1139)
  • Make storage on server contexts thread safe (#1146)
  • Adopt new SwiftNIO API for doing synchronous pipeline operations to reduce allocations (#1149, #1160)
  • Make 'NIOSSLContext' ahead of time to reduce allocations (#1184)
  • Use static trailers where possible to save allocations (#1151)
  • Fix bugs in gRPC-Web found by oss-fuzz (#1187)
  • Add remote and local IP addresses to logging metadata (#1195)
  • Refactor parts of the ConnectionManager and add internal types for an upcoming connection pool (#1158, #1162, #1173, #1176, #1189)
  • Add a static-source Logger (#1165)
  • Add in-source fuzzing support (#1177)
  • Bump version for 1.1.0 release (#1200)

Other Changes

  • Bump version of Google's SpeechToText Example Podfile (#1142, patch credit to @Raduan77)
  • Use PlatformSupport.makeEventLoopGroup in the basic tutorial (#1179, patch credit to @e-sung)
  • Update Cocoapods (#1130)
  • Update bug report template to include how code is built (#1140)
  • Add allocation counting tests (#1150, #1155, #1169, #1188)
  • Test against Swift 5.4 in CI (#1167)
  • Add an --iterations option to the Echo example (#1180)
  • Add fuzzing failure cases (#1190)
  • Fix compiler crash on Swift 5.2 when inlining test helper (#1192)
  • Add a security policy. (#1193)
  • Fix links in interceptors tutorial (#1197)

gRPC Swift 1.0.0

04 Feb 13:25
9e464a7
Compare
Choose a tag to compare

SemVer Patch

  • Add an option to protoc-gen-grpc-swift to allow generated stub names to use the casing from their .proto definition (#1123)
  • Set the ALPN tokens if not otherwise set by the user when providing TLS configuration via NIOSSL.TLSConfiguration. (#1127)
  • Add a versioned user-agent string to requests (#1128)

Other Changes

  • Update Cocoapods and the podspec generation script (#1122)
  • Test improvements (#1126, #1129)

gRPC Swift 1.0.0-alpha.24

01 Feb 11:21
34c984c
Compare
Choose a tag to compare
Pre-release

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.

SemVer Major

  • Remove deprecated and unreachable code (#1115)

SemVer Patch

  • Remove support for the 'old' way of handling RPCs on the server (#1113)
  • Drop the "OK" message from the static 'ok' status. (#1120)
  • Fix up some documentation, start an FAQs doc (#1121)

Other Changes

  • Update Cocoapods (#1111)
  • Add documentation about public API and compatability guarantees (#1116)
  • Use swift-argument-parser for examples and tools (#1118)
  • Move the pcap example into Source/Examples/ (#1119)

gRPC Swift 1.0.0-alpha.23

22 Jan 13:32
e70c2cf
Compare
Choose a tag to compare
Pre-release

This release includes two noteworthy changes that users should be aware of:

  • The minimum supported version of Swift has been raised to 5.2.
  • The interface between gRPC and the generated server code has changed. The old interface has been deprecated and will be removed in an upcoming release. Users are required to re-generate their server code, no other action is necessary.

SemVer Major

  • Raise the minimum Swift version to 5.2 (#1106)

SemVer Minor

  • Add client API for providing a custom SSL certificate verification callback (#1107, patch credit to @franck-clement-ug)
  • Expose the remote address on the server interceptor context (#1081)
  • Refactor how gRPC handles incoming RPCs on the server. Note that this change impacts how the generated server code and gRPC interact; users must therefore re-generate their server code. (#1093, #1095, #1097, #1098, #1100, #1101, #1110, #1105, #1102)

SemVer Patch

  • Added support of the protobuf optional feature (#1084, patch credit to @azatZul)
  • Compact the client 'ChannelPipeline' to reduce runtime costs (#1083)
  • Avoid unnecessary (and expensive) copies of client and server interceptor contexts (#1090, #1091, #1092)

Other Changes

  • Update Cocoapods (#1082)
  • Add a script for diffing cachegrind output (#1086)
  • Add a handful more perf tests. (#1096)

gRPC Swift 1.0.0-alpha.22

15 Dec 14:55
ea9c7c5
Compare
Choose a tag to compare
Pre-release

SemVer Major

  • Drop support for Swift 5.0 (#1070)

SemVer Minor

  • Allow the server to be gracefully shutdown. (#1076)
  • Generate service name for the client and proto service comments (#1059)

SemVer Patch

  • Only generate services described in files in the codegen request (#1058)
  • Store the HTTP/2 multiplexer instead of retrieving it from the ChannelPipeline (#1062)
  • Simplify client ChannelPipeline setup (#1064)
  • Extract the logic from the GRPCIdleHandler into a state machine (#1068)
  • Merge idle and keepalive handlers to reduce optional and force casts (#1079)
  • Refactor state machines to avoid generics (#1073, #1080)
  • Make a bunch of server code inlinable (#1077)
  • Add a unary server benchmark (#1074)
  • Remove unused code (#1078)

Other Changes

  • Update cocoapods (#1060)
  • Add an interceptors tutorial (#1061)
  • Provide cachegrind mode. (#1071)
  • Make testClientReconnectsAutomatically less flaky (#1075)

gRPC Swift 1.0.0-alpha.21

26 Nov 09:27
b81b8f2
Compare
Choose a tag to compare
Pre-release

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.

SemVer Major

  • Add support for client and server interceptors. This is a breaking change as it required an alteration to the GRPCChannel protocol. (#986, #993, #1001, #1002, #1006, #1010, #1019, #1022, #1024, #1028, #1030, #1031, #1032, #1035, #1037)
  • Move server (de)serialization to the server call handler resulting in a change in the generic constraints on _BaseCallHandler, UnaryCallHandler, ClientStreamingCallHandler, ServerStreamingCallHandler and BidirectionalStreamingCallHandler (#1046)
  • Remove HTTP/1 types from the public server API and switch server processing to be done on HTTP/2 concepts to avoid the cost of translating between HTTP/1 and HTTP/2 types on HTTP/2 connections. gRPC Web (HTTP/1) remains supported by translating from HTTP/1 to HTTP/2. (#1017, #1041, #1047, #1048, #1050)
  • Make 'GRPCStatus' a struct (#989)

SemVer Minor

  • Add new API to allow responses to be sent from server contexts without allocating a promise (#1020)
  • Enforce ALPN on the server and add new API to allow it to not be required. (#1055)

SemVer Patch

  • Ensure that when responses are sent from streaming contexts that they are sent on the event loop. (#1054)
  • Make the description of 'RPCTimedOut' static (#1009)
  • Tolerate identity compression as no compression (#1016)
  • Split path strings using UTF8 (#1027)
  • Provide more specific errors messages for failing channels (#984)
  • Tidy up some of the logic in the server call contexts (#1018)
  • Use the server hostname override as the :authority, if present (#1033)
  • Fix typo in 'requestDeserializer' (#1052)
  • Reduce some excessive server logging. (#1011)
  • Remove duplicated code. (#1013)

Other Changes

  • Add support for watchOS to the podspecs (#998, patch credit to @daltonclaybrook)
  • Fixed a typo in the protoc plugin name in README (#1021, patch credit to @chigichan24)
  • Add a performance benchmark with unary and bidirectional streaming tests (#990, #1003, #1004, #1012, #1043, #1045)
  • Pin the formatter version (#995)
  • Stop checking in Package.resolved (#1008)
  • Update CocoaPods to alpha.20 (#982)

Release 0.9.2

24 Nov 11:19
66f5a00
Compare
Choose a tag to compare
  • Fixes an issue for building with Carthage using Xcode 12

gRPC Swift 1.0.0-alpha.20

02 Oct 08:05
e2e138d
Compare
Choose a tag to compare
Pre-release

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

  • Update CocoaPods for alpha-19 (#956)
  • Add a missing call to 'close()' in examples (#965)
  • Enable logging in the SpeechToText example (#973)
  • Don't delay logging until the end of tests when GRPC_ALWAYS_LOG is enabled (#979)

gRPC Swift 1.0.0-alpha.19

27 Aug 12:37
640b0ef
Compare
Choose a tag to compare
Pre-release

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 the doNotUse 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

  • Update the quick start guide (#940, patch credit to @kingkangyu)
  • Various CI improvements (#923, #934, #936)
  • Update information relating to Cocoapods in README (#943, #944)
  • Fixed a performance benchmark (#948)

gRPC Swift 1.0.0-alpha.18

07 Aug 08:51
46d1a29
Compare
Choose a tag to compare
Pre-release

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