Swiftpack.co - Package - grpc/grpc-swift

Build Status sswg:sandbox|94x20 Latest Version

gRPC Swift

This repository contains a gRPC Swift API and code generator.

It is intended for use with Apple's SwiftProtobuf support for Protocol Buffers. Both projects contain code generation plugins for protoc, Google's Protocol Buffer compiler, and both contain libraries of supporting code that is needed to build and run the generated code.

APIs and generated code is provided for both gRPC clients and servers, and can be built either with Xcode or the Swift Package Manager. Support is provided for all four gRPC API styles (Unary, Server Streaming, Client Streaming, and Bidirectional Streaming) and connections can be made either over secure (TLS) or insecure channels.

Versions

gRPC Swift has recently been rewritten on top of SwiftNIO as opposed to the core library provided by the gRPC project.

Version | Implementation | Branch | protoc Plugin | CocoaPod | Support --------|----------------|------------------------|-------------------------|-----------------------|----------------------------------------- 1.x | SwiftNIO | main | protoc-gen-grpc-swift | gRPC-Swift | Actively developed and supported 0.x | gRPC C library | cgrpc | proroc-gen-swiftgrpc | SwiftGRPC | No longer developed; security fixes only

The remainder of this README refers to the 1.x version of gRPC Swift.

Supported Platforms

gRPC Swift's platform support is identical to the platform support of Swift NIO.

Note that gRPC Swift uses NIO 2 and therefore requires Swift to be version 5.0 or higher.

Getting gRPC Swift

There are two parts to gRPC Swift: the gRPC library and an API code generator.

Getting the gRPC library

Swift Package Manager

The Swift Package Manager is the preferred way to get gRPC Swift. Simply add the package dependency to your Package.swift and depend on "GRPC" in the necessary targets:

dependencies: [
  .package(url: "https://github.com/grpc/grpc-swift.git", from: "1.0.0-alpha.19")
]

The syntax for target dependencies changed in Swift 5.2 and requires the package of each dependency to be specified.

For Swift 5.2 (swift-tools-version:5.2):

.target(
  name: ...,
  dependencies: [.product(name: "GRPC", package: "grpc-swift")]
)

For Swift 5.0 (swift-tools-version:5.0) and 5.1 (swift-tools-version:5.1):

.target(
  name: ...,
  dependencies: ["GRPC"]
)
Xcode

From Xcode 11 it is possible to add Swift Package dependencies to Xcode projects and link targets to products of those packages; this is the easiest way to integrate gRPC Swift with an existing xcodeproj.

Manual Integration

Alternatively, gRPC Swift can be manually integrated into a project:

  1. Build an Xcode project: swift package generate-xcodeproj,
  2. Add the generated project to your own project, and
  3. Add a build dependency on GRPC.

CocoaPods

gRPC Swift is currently available from CocoaPods. To integrate, add the following line to your Podfile:

    pod 'gRPC-Swift', '~> 1.0.0-alpha.19'

Then, run pod install from command line and use your project's generated .xcworkspace file. You might also need to add use_frameworks! to your Podfile.

⚠️ If you have conficting modules as a result of having a transitive dependency on 'gRPC-Core' see grpc/grpc-swift#945.

Getting the protoc Plugins

Binary releases of protoc, the Protocol Buffer Compiler, are available on GitHub.

To build the plugins, run make plugins in the main directory. This uses the Swift Package Manager to build both of the necessary plugins: protoc-gen-swift, which generates Protocol Buffer support code and protoc-gen-grpc-swift, which generates gRPC interface code.

To install these plugins, just copy the two executables (protoc-gen-swift and protoc-gen-grpc-swift) that show up in the main directory into a directory that is part of your PATH environment variable. Alternatively the full path to the plugins can be specified when using protoc.

Alternatively, you can get the latest precompiled version of the plugins by adding the following line to your Podfile:

    pod 'gRPC-Swift-Plugins'

The plugins are available in the Pods/gRPC-Swift-Plugins/ folder afterwards.

Examples

gRPC Swift has a number of tutorials and examples available. They are split across two directories:

  • /Sources/Examples contains examples which do not require additional dependencies and may be built using the Swift Package Manager.
  • /Examples contains examples which rely on external dependencies or may not be built by the Swift Package Manager (such as an iOS app).

Some of the examples are accompanied by tutorials, including:

  • A quick start guide for creating and running your first gRPC service.
  • A basic tutorial covering the creation and implementation of a gRPC service using all four call types as well as the code required to setup and run a server and make calls to it using a generated client.

Documentation

The docs directory contains documentation, including:

License

gRPC Swift is released under the same license as gRPC, repeated in LICENSE.

Contributing

Please get involved! See our guidelines for contributing.

Github

link
Stars: 1067

Used By

Total: 0

Releases

gRPC Swift 1.0.0-alpha.19 - 2020-08-27 12:37:12

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 - 2020-08-07 08:51:08

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

  • Various Cocopods fixes (#898, #916)
  • Various testing and CI improvements (#919, #910, #905, #903)

gRPC Swift 1.0.0-alpha.17 - 2020-07-16 09:36:30

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.Messages. 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 requiring GRPCProtobufPayload 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 - 2020-07-08 08:28:06

This release includes a few breaking changes in order to enable API evolution in the future.

SemVer Major

  • Turn NetworkImplementation and NetworkPreference enums into structs. 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

  • Fix incorrect documentation for certificate verification on the server builder (#882)
  • Remove 'nio' tag from Issue templates (#876)

gRPC Swift 1.0.0-alpha.15 - 2020-07-03 14:42:31

This release includes a number of breaking changes. The most important of which are detailed below:

  1. Timeouts. The 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.
  2. API evolution changes. A number of public enums have been converted into public structs. At the call-site this change will not impact users. This change will break users who previously switched over these enums. 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.

SemVer Major

  • Allow deadlines or timeouts to be set on RPCs. The timeout option on CallOptions has been replaced with timeLimit. (#842)
  • Replace a number of public enums 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)
  • 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

  • Fix a Cocoapod version issue in one of the examples (#851, patch credit to @zhungxd)
  • Add a generation of the gRPC-Swift-Plugins.podspec (#869, patch credit to @Lutzifer)
  • Make language more inclusive (#841)
  • Various infrastructure improvements (#858, #872)

gRPC Swift 1.0.0-alpha.14 - 2020-06-10 18:10:31

SemVer Patch

  • Updated Dependencies (#828, patch credit to @mRs-)
  • Ignore additional state changes after expecations have been met (#833)
  • Generate conformances files containing a message are passed to the plugin (#837)
  • Update CocoaPods for alpha13. (#835, #838)
  • Update CI (#832)

gRPC Swift 1.0.0-alpha.13 - 2020-06-08 16:54:38

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 - 2020-05-22 08:40:48

  • Update vendored gRPC-core to v1.24.3 (#804)

gRPC Swift 1.0.0-alpha.12 - 2020-05-13 13:09:01

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 - 2020-03-24 13:32:17

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 - 2020-03-19 13:09:41

⚠️ 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 - 2020-01-09 12:33:04

⚠️ This release contains a number of API breaking changes. ⚠️

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) gbrntt@gmail.com
  • 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)

gRPC Swift 1.0.0-alpha.8 - 2019-12-12 09:54:02

  • Correctly set the authority to the host rather than scheme (#637, patch credit to @adolfo)
  • Allow client error delegate to have a logger injected (#654)
    • ⚠️ This is a breaking change. Implementations of ClientErrorDelegate must now accept an additional argument loggerin didCatchError.
  • Fix compile issues in Google/NaturalLanguage (#643)
  • Don't log at info level (#651)
  • Ignore SSL unclean shutdown errors (#650)
  • Update dependencies (#649)
  • Update minimum required version of SwiftNIO SSL (#640)
  • Build protoc plugins in release mode (#647)
  • A number of performance improvements (#653, #645, #644, #641)

gRPC Swift 1.0.0-alpha.7 - 2019-11-14 12:30:51

Important: this change contains breaking changes to the generated client code.

  • License header checking script (#587)
  • Run CI on Swift 5.1 and Swift 5.0 (#588)
  • Add missing environment variable for interop tests (#589)
  • RPC state machine for client (#580)
  • Add/update GOVERNANCE.md, CODE-OF-CONDUCT.md and CONTRIBUTING.md (#595)
  • Add HelloWorld example (#590)
  • Add a RouteGuide example and tutorial (#598)
  • Fix up markdown (#600)
  • Reduce logging in the message reader (#602)
  • Workaround for SR-11564 (#608)
  • Provide a channel handler using the client state machine (#601)
  • Use string comparison instead of regex in the HTTPProtocolSwitcher (#618)
  • Update the client to use the new state machine backed channel handler (#625)
  • Update CI to use more recent Swift versions (#629)
  • Reduce logging verbosity (#632)
  • Inline service name into the generated path (#633)
  • Require a lock to access the connectivity state delegate (#634)
  • import FoundationNetworking if possible (#586)
  • Remove unexported executables from products (#592)
  • Fix interoperability tests. (#596)

Release 0.10.0 - 2019-10-25 09:27:09

  • Use protoToModuleMappings in input/output names. (#553)
  • Update vendored gRPC-core to v1.23.0. (#563)

gRPC Swift 1.0.0-alpha.6 - 2019-09-18 13:54:26

  • Fix deprecation warnings (#585) - George Barnett (3972a3f9)
  • Rename the plugin: protoc-gen-swiftgrpc -> protoc-gen-grpc-swift (#584) - George Barnett (ca683154)
  • Explain platform support in the readme. (#578) - Daniel Alm (99d51ca2)
  • Add MAINTAINERS.md. (#564) (#576) - George Barnett (e0c70ce6)

gRPC Swift 1.0.0-alpha.5 - 2019-09-03 09:29:30

  • Always use the same event loop for a client connection (#562)
  • Allow timeouts to be rounded so they may comply with the spec (#569)
  • Separate trailers from GRPCStatus (#572)
  • Replace Commander usage with our own CLI parsing (#570)
  • Split the Echo example into model, implementation and runtime (#567)
  • CI and version updates (#561, #571, #568, #573)

gRPC Swift 1.0.0-alpha.4 - 2019-08-20 10:32:14

  • Increase the minimum required version of NIOSSL (#559)
  • Increase the minimum required version of NIOHTTP/2 (#548)
  • Implement the connection backoff interoperability test (#557)
  • Default to using backoff for making connections (#554)
  • Make the connection backoff iterator continually produce backoff (#554)
  • Fix a rare thread safety issue in tests (#551)
  • Add server logging (#547)
  • Use protoToModuleMappings in input/output names (#555)
  • Package structure updates, typo fixes, dead code removal (#558, #556, #549, #546, #544)

gRPC Swift 1.0.0-alpha.3 - 2019-08-07 09:38:17

  • Add sendMessages and flush to StreamingRequestClientCall (#538)
  • Fix building for 32-bit architectures (#535)
  • Disable static stdlib linking. (#533)
  • Fix typo in metadata key for server-hostname (#531)

gRPC Swift 1.0.0-alpha.2 - 2019-07-25 17:48:18

Major Changes:

  • Provide restricted TLS configurations (#513)
  • Rename GRPCNIO to PlatformSupport (#522)
  • Remove onNext from connectivity state delegate (#506)

Patches:

  • Add client-side logging with swift-log (#514)
  • Delay creating event observers for client streaming calls (#523)
  • Fallback to the hostname for TLS if a hostname override isn't provided (#528)
  • Improvements to connectivity state management (#510, #529)
  • Avoid a conformance error in the interoperability test CLI when used with SwiftUI (#518)
  • Test fixes and improvents (#503, #524, #527, #521)
  • Typo fixes (#512)
  • Provide a git commit template. (#508, #509)
  • Revert to Apache 2.0 license verbatim [skip ci] (#504)
  • Add missing copyright headers (#505)

Release 0.9.1 - 2019-07-05 07:34:27

Relevant for library users:

  • Support tvOS (#446)
  • Improve Carthage compatibility (#493)
  • Avoid linking nghttp2 in Carthage project (#450)
  • Fix two memory leaks and update a link in the README. (#501)
  • Fix a compiler warning. (#499)
  • Fix libtool warning when compiling with bazel (#447)

Less visible changes:

  • Update the test certificates and increase their validity to 10 years. (#494)
  • Add a swift_versions flag to the Podspec. (#500)
  • Revert to Apache 2.0 license verbatim (#498)
  • Update README.md for examples to point to correct folders (#473)

gRPC Swift 1.0.0-alpha.1 - 2019-06-21 15:38:40

First "official" preview of SwiftGRPC based on SwiftNIOHTTP2. See README.md for a guide to the library's new interface.

Fixes for Swift 5 - 2019-04-18 19:42:04

This release contains fixes for Swift 5 warnings that were emitted by SwiftGRPC and SwiftProtobuf.

  • Bump version to 0.9.0 (#444) - Michael Rebello (d5f0c46)
  • Try de-flaking testMultipleConnectivityObserversAreCalled. (#441) - Daniel Alm (c0eca15)
  • Update SwiftProtobuf to 1.5.0 (#440) - Michael Rebello (2d822f1)
  • Run CI on both Swift 4.2 and 5, and fix Swift 5 warning (#426) - Michael Rebello (0f2af51)
  • Change the swiftc argument to use static Swift libraries. (#424) - Daniel Alm (6bbc15c)

Release 0.8.2 - 2019-04-11 15:36:31

  • Update vendored gRPC-core to v1.19.1. This commit also fixes a few minor problems in the vendoring scripts and updates a call in shim/channel.c to use a modified API.

  • Update ClientCancellingTests to give clients more time to cancel before the server finishes streaming.

  • Update Roots.swift to use the latest roots.pem from gRPC.

  • Add SleepingEchoProvider.

  • Updating podspec. gRPC-Core dependency is v1.19.0. There was no podspec published for gRPC-Core v1.19.1 but it has no changes in the C layer: vendoring v1.19.0 yields the same code as vendoring v1.19.1.

  • Changes from running "make project-carthage"

Release 0.8.1 - 2019-03-28 16:21:10

  • Update to 0.8.1 - Michael Rebello (f8738a6)
  • Disable iOS 12 cellular connectivity monitor by default - Michael Rebello (58a009b)
  • Implement async client test stub methods (#378) - Carlos Pages (630dfa5)
  • Temporarily disable NIOClientTimeoutTests.testBidirectionalStreamingTimeoutAfterSending on Linux for now (#409) - Daniel Alm (4df501a)
  • Use FileHandle instead of io.swift. (#408) - Martin Petrov (1d056f1)
  • Update Echo certificate and key (#407) - George Barnett (14734c7)
  • Rewrite LengthPrefixedMessageReader and tests (#397) - George Barnett (143255e)
  • Allow generating test stubs separately from the client implementation (#402) - Martin Petrov (869c168)
  • Generate client test stubs in a dedicated section. (#403) - Martin Petrov (90a5498)
  • Add public init to client call unary stubs. (#401) - Martin Petrov (dc2e8bb)
  • Mark unary async calls as @discardableResult. (#399) - Martin Petrov (f7807da)
  • Generate ClientCallUnary test stubs. (#398) - Martin Petrov (c0478aa)
  • Add/update scripts for vendoring dependencies (#396) - Michael Rebello (9745a76)
  • Fix crashes due to mismatching responses sent to the channel when event observer factories fail. (#395) - Daniel Alm (772b78e)
  • Enforce request cardinality for unary-request calls also for the case of zero request messages being sent. (#392) - Daniel Alm (d4a6366)
  • Add public factory methods for CallResult. (#394) - Martin Petrov (140d34a)
  • Make a few more write calls flushing. (#391) - Daniel Alm (30a7fbc)
  • Refactor some properties shared by all server-side call contexts into a common ServerCallContext protocol … (#389) - Daniel Alm (c082197)

Release 0.8.0 - 2019-03-01 19:29:11

  • Update CocoaPods & Carthage for 0.8.0 release (#370) - Michael Rebello (8b064bd)
  • Add ClientNetworkMonitor for tracking network changes (#387) - Michael Rebello (3b3c5c5)
  • First pass implementation of NIO client (#357) - George Barnett (97ff923)
  • Clean up gRPC.swift (#386) - Michael Rebello (ee0f374)
  • Add ability to manually shut down channels (#384) - Michael Rebello (930440a)
  • Update releasing instructions (#383) - Michael Rebello (f5c0d63)
  • Comments/cleanup to Package.swift. (#371) - Daniel Alm (ba335b2)
  • Refactor channel connectivity to avoid multiple spin loops (#380) - Michael Rebello (10aff09)
  • Improve error handling in NIO server. (#364) - George Barnett (158c4ef)
  • Fix channel credentials memory leak in shims (#369) - Kevin Sweeney (587218a)
  • Make ConnectivityObserver class final (#375) - Michael Rebello (5f24269)
  • Store the root certificates as a multi-line string literal. (#372) - Daniel Alm (ac3e175)
  • Run ChannelCrashTests on Linux/CI (#379) - Michael Rebello (b899a30)
  • Move ConnectivityState to new file & update initializer (#376) - Michael Rebello (9dff24d)
  • Merge pull request #350 from sergiocampama/http1 - Tim Burks (ac1939e)
  • Adds Echo Web example with functional prototype - Sergio Campama (86748a7)
  • Add HTTP1 Tests for GRPCSwiftNIO - Sergio Campama (eee57da)
  • Add gRPC Web support. - Sergio Campama (24c8e5d)
  • Proposal to fix #362. (#363) - Alexey Gordeev (0195dfd)
  • Allow client to specify metadata per call (#356) - Taeho Kim (3cd505a)
  • Update SwiftProtobuf to 1.3.1 (#367) - Michael Rebello (96bf49e)
  • Improve memory management in Channel (#368) - Kevin Sweeney (fcb8ab3)
  • XCode 10.1 + Carthage support (#360) - Dmitry Malakhov (99d3834)
  • Upgrade swift-nio to 1.12 - George Barnett (a43337c)
  • Allow "FileNaming" option to be set via CLI - George Barnett (78c5fed)
  • Bump podspec to 0.7.0 - Michael Rebello (6928fb2)

Release 0.7.0 - 2018-12-22 17:09:44

  • Support proto-gen-swift's proto-to-module mapping. (ff2d161 - Tony Allevato)
  • Update Linux build documentation (#346) (824814b - George Barnett)
  • Add libnghttp2 depdendency to Docker image (#338) (#344) (c3a03f1 - George Barnett)
  • Add environment flag for BoringSSL/OpenSSL on MacOS (#341) (54659b8 - james h)
  • First implementation of gRPC based on SwiftNIO (#281) (bf20e93 - Daniel Alm)
  • Remove .swift-version file (d3ad74b - Yosuke Ishikawa)
  • Add support for RPC status (#331) (b6dc500 - Sebastian Thiebaud)
  • Fix crash during Channel with subscription is destroying (#328) (2fd06dc - slavabulgakov)
  • Improve the documentation on building the protoc plugins and add a make plugin option. (48c274f - Daniel Alm)
  • Remove build-carthage altogether from CI for now. (7e6e28c - Daniel Alm)
  • Pull build-carthage to the beginning of the build process for faster CI iteration times on failing Carthage builds. (8cd1420 - Daniel Alm)
  • Minor tweaks in preparation for SwiftGRPCNIO. (00d18f6 - Daniel Alm)
  • Transmission type parameters for sync/async code generation (611e527 - Pontus Andersson)
  • Re-run make project-carthage (6cc5371 - Yosuke Ishikawa)
  • Replace absolute path with relative path after generating xcodeproj (30441f7 - Yosuke Ishikawa)
  • Docs/add question template (#310) (0faf1d6 - tikidunpon)
  • Add io.grpc. prefix to bundle identifier (c9b15b8 - Yosuke Ishikawa)
  • Update README.md (02b8fc5 - Daniel Alm)
  • Update README.md (8ff1778 - Daniel Alm)
  • Update README.md (ec7c3e4 - Daniel Alm)
  • Update README.md (52195d2 - Daniel Alm)
  • Tweak Echo Readme (see #273) (a387dd6 - Daniel Alm)
  • docs: add a mention about resolved issues about ssl. (5ba63b6 - tikidunpon)
  • docs: add issue template for bug reporting. (660adca - tikidunpon)

Release 0.6.0 - 2018-11-16 18:14:27

  • Cut a 0.6.0 release due to the breaking changes in SwiftProtobuf 1.1 (ed8a7e5 - GitHub)
  • Several fixes to the example projects. (696cd46 - Daniel Alm)
  • Update CLA link to point to CNCF CLA. (c3a071b - Tim Burks)
  • Update Carthage project with SwiftProtobuf 1.1.1 (9841080 - Michael Rebello)
  • Update examples to SwiftProtobuf 1.1.1 (a86b934 - Michael Rebello)
  • Update README with swift-protobuf version (9db4d0b - Michael Rebello)
  • Update SwiftProtobuf to 1.1.1 (6c6d9be - Michael Rebello)
  • Remove Linux RUNME.sh script (5dfda65 - Michael Rebello)

Release 0.5.1 - 2018-11-16 18:13:51

  • Fix -Wstrict-prototypes warning (c03c5c7 - Michael Rebello)
  • Bump podspec to 0.5.1 (021075e - Michael Rebello)
  • Project patch script rework. (4984951 - Daniel Alm)
  • Only make the Swift Xcode project (instead of a full Xcode build) on macOS CI, as that is covered by the Carthage build already. (165f684 - Daniel Alm)
  • Fix make clean and switch to Carthage debug builds on CI for improved performance. (3e8720e - Daniel Alm)
  • Support folding the output of individual build steps in the Travis log. (5130063 - Daniel Alm)
  • Lock the SwiftProtobuf dependency to 1.0.3, up to next minor (#289) (78ac010 - Daniel Alm)
  • version SwiftGRPC-Carthage.xcodeproj after CgRPC fix (55cc056 - Jonas Vautherin)
  • fix CgRPC target in generated xcodeproj files (bea6195 - Jonas Vautherin)
  • Add "Releasing" section for CocoaPods to the ReadMe (36dbda1 - Michael Rebello)
  • Update carthage xcodeproj (4cc9c3c - Jonas Vautherin)
  • version SwiftGRPC-Carthage.xcodeproj for Carthage (e07895f - Jonas Vautherin)
  • Add make target generating an xcodeproj for Carthage. (ea2babf - Jonas Vautherin)
  • fix make clean target (d8b2b51 - Jonas Vautherin)
  • [README] Update the link to the Echo sample project. (3eade39 - Shinping Bai)
  • PR Feedback (7340be3 - Brian Hatfield)
  • Expose google cgrpc credential mode (b4414b8 - Brian Hatfield)
  • Remove Czlib dependency from SimpleXcode example (325c9cf - koichi.tanaka)
  • Fix a header search path for CgRPC and some compile error for „Echo“ example (44dfc81 - koichi.tanaka)
  • Remove Czlib from README (0c3ce55 - koichi.tanaka)
  • Remove Czlib from dependencies (ec3c2a9 - koichi.tanaka)
  • Update Dockerfile (62e4e3c - GitHub)
  • add "make project" (05b27cb - GitHub)

Release 0.5.0 - 2018-11-16 18:13:18

  • Update podspec to version 0.5.0. (f11ad0b - Tim Burks)
  • Create ServerStatus in Core (045bc17 - ito_kyohei)
  • Code review fixes. (5f0531d - Daniel Alm)
  • Fix compilation under Linux. (3130eea - Daniel Alm)
  • Fix a bug and test for it. (b34303c - Daniel Alm)
  • Add a few more tests to ensure that trailing metadata is sent as expected. (22dee41 - Daniel Alm)
  • Reword documentation (c317f9d - Nate Armstrong)
  • Rename "services" to "serviceProviders". (a6e8cbb - Daniel Alm)
  • Add security tests to LinuxMain (df96858 - Nate Armstrong)
  • Document rootCerts param (22da1da - Nate Armstrong)
  • Update TestKeys generator and include cert files (1e19905 - Nate Armstrong)
  • Remove comment (d5ff00d - Nate Armstrong)
  • Add tests for mutual auth (18af90f - Nate Armstrong)
  • For service servers, replace inheritance with composition. (98f7fa6 - Daniel Alm)
  • Added requited designation to allow to create ServiceClient dynamically (12340a4 - Carlos Pages)
  • Make ChannelArgument extensible with custom values. (4f9e7a5 - Daniel Alm)
  • Make the build commands less verbose. (ec8f37b - Daniel Alm)
  • Pass pointer (2252397 - Nate Armstrong)
  • Fix memory leak and whitespace (706ed74 - Nate Armstrong)
  • Cast malloc result (a2b983a - Nate Armstrong)
  • Pass NULL if client certs or key are not given (f477ce5 - Nate Armstrong)
  • Update ServiceClient init (b795d14 - Nate Armstrong)
  • Add support for TLS mutual auth (0251dd8 - Nate Armstrong)
  • Fix building with a clean Xcode and add a CI run to ensure just that. (56ecb72 - Daniel Alm)
  • Fix linking with OpenSSL on Linux. (8ef093b - Daniel Alm)
  • Move another compiler directive into vendor-grpc.sh. (03f4309 - Daniel Alm)
  • Re-add swift-nio-zlib-support for macOS builds. (c12125b - Daniel Alm)
  • Update Google sample for recent API changes. (2cc6af7 - Tim Burks)
  • Move a compilation flag out of the Makefile and fix-project-settings.rb and into vendor-grpc.sh, which adds them to Sources/CgRPC/third_party/nanopb/pb.h. (4a16c13 - Daniel Alm)
  • Re-add swift-nio-zlib-support for macOS builds. (0368de9 - Daniel Alm)
  • Also update the Mac Travis system images to Xcode 9.3. (070170d - Daniel Alm)
  • Update .travis-install.sh to Swift 4.1.1. (470fb2f - Daniel Alm)
  • Update CgRPC to v1.12.0 and BoringSSL to 10.0.4 (I guess?). This change requires Swift 4.1 and Ruby (with the 'xcodeproj' gem) installed to compile if building via SPM. (75940a4 - Daniel Alm)
  • Link CgRPC with openssl instead of BoringSSL under Linux. (d56e1ca - Daniel Alm)
  • Add a few channel arguments (3cd89dd - Sebastian Thiebaud)
  • PR changes (0d25ef8 - Sebastian Thiebaud)
  • Remove print statements (ad6e022 - Sebastian Thiebaud)
  • PR changes (4ca615a - Sebastian Thiebaud)
  • Add comments (e853032 - Sebastian Thiebaud)
  • PR changes (0891482 - Sebastian Thiebaud)
  • Add timeout argument to makeCall (0d67da9 - ito_kyohei)
  • PR changes (255ce88 - Sebastian Thiebaud)
  • Make ServiceServer log calls to unknown methods. (e144258 - Daniel Alm)
  • Replace Metadata.description with Metadata.dictionaryRepresentation.description. (588963a - Daniel Alm)
  • Explicitly import dispatch (76faf09 - Chris Vanderschuere)
  • Implement connectivity state property and observers (#8) (0bd14d8 - Chris Vanderschuere)