Skip to content

Releases: grpc/grpc

gRPC v1.1.0-pre1

29 Jan 04:17
Compare
Choose a tag to compare
gRPC v1.1.0-pre1 Pre-release
Pre-release

Release candidate for gRPC v1.1.0

Objective-C 1.0.2 Release

29 Nov 04:01
Compare
Choose a tag to compare

This release include bug fix for gRPC Objective-C.

  • #8735 Send RST_STREAM from client when it receives trailing metadata without the corresponding RST_STREAM.

Release 1.0.1

02 Feb 01:51
Compare
Choose a tag to compare

Release 1.0.1

Please see the notes for the previous releases here: https://github.com/grpc/grpc/releases. Also please see http://grpc.io/ for all information regarding this product.

C Core:

  • #8402: Make initial connect retry backoff configurable
  • #8735: Send RST_STREAM from client when it receives trailing metadata without the corresponding RST_STREAM

C#:

  • Added support for netstandard1.5 target in the NuGet packages
  • .NET Core (CoreCLR) is now fully supported

Objective C:

  • #8402: Make initial connect retry backoff configurable

PHP:

  • #7896: reject metadata keys that are not legal

Ruby:

  • #8265: fix to ruby protoc plugin

Node:

  • Removed some deprecated native function calls
  • Update dependencies

Release 1.0.0

19 Aug 04:14
Compare
Choose a tag to compare

Release 1.0.0

Please see the notes for the previous releases here: https://github.com/grpc/grpc/releases. Also please see http://grpc.io/ for all information regarding this product.

This is the first GA (General Availability) release of gRPC, and can be considered ready for production. The API can now be considered stable. For the corresponding Java release, you can read their release notes, and grab the release here: https://github.com/grpc/grpc-java/releases/tag/v1.0.0

Cross language features:

C-core:

  • Performance boost using delayed writes.
  • Added support for SO_REUSEPORT.
  • New error propagation system.
  • Default log verbosity is now ERROR.
  • Various optimizations and fixes.

Python:

  • [Made handlers optional in grpc.server](https://github.com/grpc/grpc/pull/7160).
  • Python 3 support.
  • Added a reference implementation of server health-checking as the package grpcio-health-checking.
  • Added distutils custom command for gRPC proto generation to grpcio-tools.
  • Many behind-the-scenes fixes.

Ruby:

  • Removed Core::CompletionQueue from the public API. Removed all function parameters that required CompletionQueues.
  • Split trailing metadata out into a separate instance variable on calls.
  • Due to a protobuf change, the generated filenames changed to have a "_rb" suffix added to them.

PHP:

Csharp:

  • Support for use of the Grpc nuget package with dotnet CLI tooling #7230.
  • Async library dependency updated from Ix-Async.1.2.5 to System.Interactive.3.0.0.

Objective-c:

Major highlights include:

  • #7359 protoc and the gRPC plugin for Objective-C are now distributed as pods, so versions mismatches among them and the Protobuf and gRPC runtimes are an issue of the past.
  • (Various pull requests) Compressed data and connectivity changes are now handled more robustly.
  • #6849 gRPC can now be integrated as dynamic frameworks (use_frameworks! in your Podfile), which means it can be used alongside pods written in Swift.

Other important changes are:

  • #7264 BoringSSL's podspec (starting at v5.0) now builds correctly for devices (not only simulator).
  • #7288 Well-known protos ([the .proto files distributed with protoc](https://github.com/google/protobuf/tree/master/src/google/protobuf)) can now be used when compiling pods as dynamic frameworks.
  • #6855 Support for multiple services defined in the same .proto file.
  • #7572 The default response size limit was reduced to 4MB. The limit can now be adjusted by the app if necessary.

Node:

  • Split node health check code into a separate package: grpc-health-check
  • Fixed an issue propagating some authentication errors.
  • Fixed a memory leak when using call credentials

Objective-C 1.0.0 Pre-release 1

19 Jul 03:12
Compare
Choose a tag to compare
Pre-release

gRPC for Objective-C didn't have a 0.15 release, so we're pre-releasing 1.0.0 for Objective-C now. Other languages are also pre-released already or going to be soon.

Major highlights include:

  • #7264 BoringSSL's podspec (as v5.0) now builds correctly for devices (not only simulator).
  • #7288 Well-known protos (the .proto files distributed with protoc) can now be used when compiling pods as dynamic frameworks.
  • #7359 protoc and the gRPC plugin for Objective-C are now distributed as pods, so versions mismatches among them and the Protobuf and gRPC runtimes are an issue of the past.
  • #6855 Support for multiple services defined in the same .proto file.
  • (Various pull requests) Compressed data and connectivity changes are now handled more robustly.
  • #6849 gRPC can now be integrated as dynamic frameworks (use_frameworks! in your Podfile), which means it can be used alongside pods written in Swift.

Development Release 0.15.0

01 Jul 18:03
Compare
Choose a tag to compare
Pre-release

Release 0.15.0

Please see the notes for the previous releases here: https://github.com/grpc/grpc/releases

Development release of https://github.com/grpc/grpc.

c-core:

  • Fixed issues & continuously running tests for C/C++ for different compilers (GCC 4.4, 4.6, 5.3 and clang 3.5, 3.7, 3.7)

Python:

  • 10X performance improvement
  • Stability fixes
  • Python3.4 Alpha Support
  • Source distributions now run with Python3.4 on Linux
  • Preview of final API, some breaking changes are expected prior to GA:
  • #7062
  • Generated example code now uses the final API

Ruby:

  • API change: Metadata and channel arguments are now single hash arguments instead of keyword arguments
  • Improved the library's ability to respond to signals

PHP:

  • Added getTrailingMetadata API #6632
  • Added an optional Channel argument to BaseStub constructor #6634
  • Implemented more interop tests #6631
  • Added stress test client #6417

C#:

  • Stability fixes (#6984, #6991, #7023)
  • Documentation improvements (#6909, #6993,
  • Decrease default log verbosity (#6890)
  • Performance improvements (latency & throughput)
  • Expose setting for gRPC threadpool size & number of completion queues used (#6699)
  • Better behavior in shutdown situations (#6560, #6754)
  • API: Client side streaming writes now throw RpcException if call has already finished (#6493)
  • API: Improvements of streaming API behavior in some corner cases (#6699)
  • Assorted API improvements (#6809, #6827)
  • Stopped generating the FooService.NewClient factory method (#7008)
  • Significant progress on CoreCLR support (added project.json files and all unit tests are passing on Linux, Mac and Windows). Official NuGet doesn't support CoreCLR yet. (#6104)

Node:

  • Include proto well-known types with the grpc-tools package
  • Add API for redirecting logs from the library and changing log verbosity
  • Fix bug where the library would segfault when it received a compressed message

Benchmarking:

  • continously running performance benchmarks in all the languages (except PHP and ObjectiveC)

Development Release 0.14.1

20 May 21:38
Compare
Choose a tag to compare
Pre-release

Release 0.14.1

Please see the notes for the previous releases here: https://github.com/grpc/grpc/releases

Development release of https://github.com/grpc/grpc.

Cross language features:

c-core:

  • Added compression tracer ("compression") for the display of compression statistics.
  • Changes to support GCC 6.0
  • Fixes for memory leaks, uses after free, race conditions, and compiler compatibility.

cpp:

  • Added plugin mechanism for ServerBuilder.
  • Propagated comments from proto file to generated grpc.pb.h file.

python:

  • Created grpc-tools package, which enables installing protoc and the Python gRPC plugin for protoc in a PyPI wheel/source distribution
  • Removed deprecated alpha code
  • Began distributing manylinux1 wheels (pip install grpcio on linux no longer downloads from beyond PyPI)

ruby:

  • Created grpc-tools package, which enables installing protoc and the Ruby grpc plugin for protoc in a gem.
  • Modified one error code to match the specification: if a server is overwhelmed with requests, it will now respond to new requests with RESOURCE_EXHAUSTED.
  • Fixed an occasional case where a client or server would crash if there were too many simultaneous calls associated with a single connection
  • Add peer_cert method to Ruby call object
  • Make ruby clients and servers properly terminate on Ctrl+C, and make server processes properly stop when the server shuts down
  • Allow users to set a user agent option on stubs

php:

  • Fixed a memory leak in byte_buffer cleanup #6096

csharp:

API improvements

  • Adjusted behavior of request stream & response stream in some corner cases to improve usability (#6416)
  • Don't use interfaces for generated client and server stubs to make adding a new RPC to a .proto file non-breaking (#5928)

NuGet packages

  • Grpc.Core NuGet package now works correctly with DNX-style project.json projects and get rid of grpc.native.csharp package (#6115)
  • Set assembly versions according to the best practices (#6281)

Protoc codegen plugin

  • Use comments from .proto file in the generated code (#6348)
  • Allow generating just clientside/serverside code (#6284)
  • Allow generating code with internal visibility (#6284)

Other

  • performance and stability improvements (e.g. in handling unary calls on server-side and throughput improvements) (#6498, #6434, #6420)
  • implemented stress test client and integrated C# into stress test framework
  • improvements to performance worker and started running C# performance tests continuously
  • migrated all unit tests to NUnit 3.2

node:

  • Made all client methods take the callback as the last argument whether or not any optional arguments are passed. For now, the old argument order can be forced with the 'deprecatedArgumentOrder' option on client class creation and grpc.load
  • Added support for service definitions generated with protoc.
  • Created grpc-tools package, which enables installing protoc and the Node grpc plugin for protoc using npm.
  • Made Node servers accept partial implementations for services, and respond to any unimplemented methods with an UNIMPLEMENETED status.
  • Modified one error code to match the specification: failing to parse a request results in an INTERNAL error.
  • Fixed a bug where a client would occasionally hang after finishing a call.

Development Release 0.13.1

05 Apr 20:26
Compare
Choose a tag to compare
Pre-release

Release 0.13.1

Please see the notes for the previous releases here: https://github.com/grpc/grpc/releases

Development release of github.com/grpc/grpc.

c-core:

  • Fixes for memory leaks, uses after free, race conditions, and compiler compatibility.
  • Allow ‘.’ in metadata keys.

python:

  • Defect fixes.

ruby:

  • Fix some import errors.
  • Fix a rare crash at exit.
  • Fix some synchronization bugs.
  • Fix credentials getting garbage collected too early.
  • Fix a couple of memory leaks.

csharp:

  • Improved stability thanks to many fixes in C core.
  • Fix loading of native library for web apps or whenever using assembly shadowing (#5810)
  • Grpc.Tools NuGet package now contain pre-compiled protoc and grpc\_csharp\_plugin binaries for Linux, Windows and Mac OS X. That eliminates the need to install protoc and C# protoc plugin on Linux and Mac to generate the C# code (#5464).
  • Preconditions class have been renamed to GrpcPreconditions (#5309).

node:

  • Add options to expose some Protobuf.js code generation options.
  • Make the client report message deserialization failure details.
  • Fix a race condition in the client when receiving status.

Development Release 0.13.0

23 Feb 01:29
Compare
Choose a tag to compare
Pre-release

Release 0.13.0

Please see the notes for the previous releases here: https://github.com/grpc/grpc/releases

Development release of github.com/grpc/grpc.

c-core:

  • Switch from OpenSSL to BoringSSL as the default SSL stack.
  • Support building backwards compatible .so’s on Linux with modern toolchains.
  • Fixed compilation on 32bit linux.
  • Support for VS2015 is now continuously tested.
  • Support for Windows 64bit (VS2013, VS2015).
  • Internal security cleanup.
  • New API to overwrite default SSL roots.
  • Fix Windows bug capping throughput to 1qps.
  • Expanded metadata key allowable values to include ‘.’

cpp:

  • Support mixing sync/async/generic method handlers in the same service.
  • New API to cancel rpc in synchronous handler.
  • Bug fixes and test improvements.

python:

  • Single-package install of the gRPC Python runtime.
  • Behind-the-scenes fixes and improvements.
  • n.b. Due to delays with Windows, its package (and only its package) is against a different git commit than the rest, with a minor cosmetic change to the version number from 4c015b8 (MacOS + Linux and source releases remain at the tagged git commit release-0_13_0)

ruby:

  • Single-line installation of the gRPC Ruby package on Linux, MacOS, and Windows, without the need of any compiler.

csharp:

  • Simplified installation - C# NuGet package now works on Windows, Linux and Mac out of the box without the need to preinstall libgrpc or libgrpc_csharp_ext (#4820).
  • Supports for both 32bit and 64bit runtimes on all supported platforms.
  • Fixed latency issue on Windows (#4503).
  • Updated protoc plugin to generate code compatible with protobuf-3.0.0beta2.

node:

  • Single-line installation of the gRPC Node package on Linux, Mac, and Windows.
  • A couple of minor bug fixes.

Development Release 0.12.0

14 Jan 22:54
Compare
Choose a tag to compare
Pre-release

Release 0.12.0

Please see the notes for the previous releases here: https://github.com/grpc/grpc/releases

Development release of github.com/grpc/grpc.

c-core:

  • gpr_timespec is now platform agnostic (#4397)
  • Windows support:
  • C core can be build on Windows x64
  • We are no longer using _USE_32BIT_TIME_T
  • Better support for VS2015, nuget packages are now VS2015 ready.
  • Migrated to OpenSSL 1.0.2d nuget package.
  • API breakage grpc_credentials objects.
  • grpc_credentials have been deleted.
  • We now have grpc_channel_credentials that can be set on a channel.
  • And grpc_call_credentials that can be set on a call.
  • These credentials can be composed using:
    - grpc_composite_channel_credentials_create which takes a grpc_channel_credentials and grpc_call_credentials as parameters and return a grpc_channel_credentials.
    - grpc_composite_call_credentials_create which take two grpc_call_credentials as parameters and return a grpc_call_credentials.

cpp:

  • API breakage Credentials objects.
  • Credentials class has been deleted.
  • We now have ChannelCredentials that can be set on a channel.
  • And CallCredentials that can be set on a call (i.e. ClientContext in C++).
  • These credentials can be composed using:
    - CompositeChannelCredentials which takes a ChannelCredentials and CallCredentials as parameters and return a ChannelCredentials.
    - CompositeCallCredentials which take two CallCredentials as parameters and return a CallCredentials.

python:

  • API breakage Credentials objects.
  • Credentials class has been deleted.
  • We now have ChannelCredentials that can be set on a channel.
  • And CallCredentials that can be set on a call
  • These credentials can be composed using
    - composite_call_credentials to combine two CallCredentials objects into a single CallCredentials
    - composite_channel_credentials to combine a ChannelCredentials and a CallCredentials into a ChannelCredentials
  • API breakage: secure_channel now takes a ChannelCredentials rather than a Credentials.
  • Added auth plugin API. This allows construction of a CallCredentials object based around a behavior that is evaluated per-call, passed the call’s metadata, and returns the metadata to use for the call instead.

ruby:

  • API breakage Credentials objects.
  • Credentials class has been deleted.
  • We now have ChannelCredentials that can be set on a channel
  • And CallCredentials that can be set on a call
  • These credentials can be composed using
    - ChannelCredentials#compose, which takes any number of CallCredentials and returns a ChannelCredentials
    - CallCredentials#compose, which takes any number of CallCredentials and returns a CallCredentials.
  • API breakage: Channel and ClientStub constructors now accept the ChannelCredentials argument as the last mandatory positional argument instead of an optional keyword argument. Alternatively, the symbol :this_channel_is_insecure can be passed to indicate that credentials are needed.
  • Added auth plugin API. This allows for CallCredentials to be created with a proc that adds arbitrary metadata.
  • Now throws an error if passed invalid metadata keys or values

php:

  • API breakage Credentials objects.
  • Credentials class has been deleted.
  • We now have ChannelCredentials that can be set on a channel
  • And CallCredentials that can be set on a call
  • These credentials can be composed using
    - ChannelCredentials::createComposite, which takes a ChannelCredentials and a CallCredentials and returns a ChannelCredentials
    - CallCredentials::createComposite, which takes 2 CallCredentials and returns a CallCredentials.
  • Added auth plugin API. This allows for CallCredentials to be created with a callback function that adds arbitrary metadata. (#4394)
  • Applications can now specify primary user agent string in a spec-compliant way (#4090)
  • Implemented all remaining regular and auth interop tests (#3758, #3854)
  • Validate and normalize metadata keys (#3790)
  • Added more unit test code coverage (#3900)

csharp:

  • New plugin-enabled auth API has been introduced.
  • Applications can now specify primary user agent string in a spec-compliant way (#4365)
  • Use ConfigureAwait(false) in await statements where needed (#4292)
  • grpc.native.csharp package renamed to comply with dnu tool rules (#3749)
  • Misc:
  • Code coverage now generated for C# (currently at 90%).
  • Implemented C# performance worker to conduct performance tests.
  • Added simple support for performance instrumentation to facilitate future optimization efforts.

node:

  • Bundled C core with Node library. Node gRPC now has no external dependencies.
  • API breakage Credentials class
  • The Credentials class has been deleted, and replaced with the credentials submodule
  • We now have ChannelCredentials that can be set on a channel. They are returned by credentials.CreateSsl
  • And CallCredentials that can be set on a call. They are returned by credentials.createFromMetadataGenerator and credentials.createFromGoogleCredential.
  • These credentials can be composed using
    - credentials.combineChannelCredentials, which takes a ChannelCredentials and any number of CallCredentials, and returns a ChannelCredentials
    - credentials.combineCallCredentials, which takes any number of CallCredentials and returns a CallCredentials.
  • Added auth plugin credentials API. This allows for CallCredentials to be created with callbacks that add arbitrary metadata.