Skip to content

Releases: grpc/grpc-swift

gRPC Swift 1.3.0

13 Jul 14:17
14e1ea3
Compare
Choose a tag to compare

SemVer Minor

  • Introduce SwiftProtobufModuleName option to the protoc plugin (#1220, patch credit to @hdv)
  • Add support for Network.framework TLS options (#1221)

SemVer Patch

  • Bump version number to 1.3.0 (#1222)

gRPC Swift 1.2.0

08 Jul 13:24
01bd56e
Compare
Choose a tag to compare

SemVer Minor

SemVer Patch

  • Loop, don't recurse, over messages. (CVE-2021-36154)
  • Do not suppress data in Web to HTTP/2. (CVE-2021-36153)
  • Check Swift reserved names when generating function names (#1213, patch credit to @ialimz)
  • Use new NIOSSL API for making 'TLSConfiguration' (#1218)
  • Bump version number (#1219)

Other Changes

  • Migrate from travis.org to GitHub actions. (#1214)
  • Comment out testBidirectionalStreamingOnCloseAfterUserFunctionFails (#1216)

gRPC Swift 1.1.1

05 Jul 12:53
276f091
Compare
Choose a tag to compare

SemVer Patch

  • Bump the minimum version of Swift Argument Parser (#1211)
  • Bump version to 1.1.1 (#1212)

Other Changes

  • Fix broken link in tutorial (#1209, patch credit to @konekoya)
  • Update Cocoapods for 1.1.0 (#1201)

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