Skip to content

Latest commit

 

History

History
85 lines (54 loc) · 4.61 KB

DEPRECATION.md

File metadata and controls

85 lines (54 loc) · 4.61 KB

gRPC Swift 0.x deprecation

What is this document?

This document outlines the current plan to deprecate the 0.x release series of gRPC Swift.

What is happening?

gRPC Swift versions v0.x based on gRPC-Core will soon be replaced with a re-implementation based on SwiftNIO.

We strongly suggest that new projects use the re-implementation from the nio branch which we consider to be production ready.

In the coming weeks this branch (currently master) containing the 0.x releases will be renamed cgrpc. The nio branch containing the new implementation will subsequently be renamed to master and become the default branch. A 1.0.0 tag will also be created.

Version Branch Now Branch After Deprecation
0.x master cgrpc
1.x nio master

What is it being replaced with?

We have rewritten gRPC Swift on top of SwiftNIO, an open-source asynchronous event-driven networking framework created by Apple. Our implementation will be written in Swift and will not wrap the gRPC Core C library.

Why is this happening?

There are a number of reasons we have rewritten gRPC Swift:

  • The 0.x releases are built on top of a C interface to the gRPC Core library provided by the gRPC project. This led to a number of memory safety issues and is easy to hold incorrectly.
  • Network connectivity changes (e.g. LTE to WiFi, 3G to LTE, etc.) are not handled well by the networking stack in the gRPC Core C library. Network.framework (where available, see below) alleviates this problem and has integration with SwiftNIO.
  • SwiftNIO has gained a lot of traction in the Swift on Server community due to its performance. We believe we can leverage this to improve the performance and stability of gRPC Swift.
  • Vendoring copies of the gRPC Core library and BoringSSL is a source of frustration for developers and users.

What will happen to the 0.x releases?

We will continue to patch the cgrpc branch for security fixes and serious bugs only. There will be no feature development on the cgrpc branch and the version of the gRPC Core library will not be updated (unless necessary for a security fix).

When is this happening?

We plan to deprecate versions 0.x and tag version 1.0.0 by the end of 2019.

Which Swift versions will be supported for 1.x?

Swift 5.0 and later.

Which platforms will be supported for 1.x?

We have the same platform support as SwiftNIO. That is:

Which package managers will be supported for 1.x?

We will provide support for Swift Package Manager as we believe that its integration with Xcode is the most convenient way to manage packages.

CocoaPods support is not currently planned. However, we may provide support if there is significant community interest.

Carthage will not be supported as it has been the source of a number of issues in the past.

Can I try this out now?

Absolutely! Head over to the nio branch and check out the quick-start guide or basic tutorial.

I can't find a feature I used in 0.x, can you help?

If there’s something you can't find that was in the previous implementation or if anything is unclear then please reach out to us by filing an issue. We also have a dedicated space in the Swift forums for the project.