Major Version Changes (Q1 2020)
Google Cloud client libraries released earlier than February 17th 2020 are incompatible with Grpc.Core.Api 2.x - which means they're incompatible with anyone trying to use the Microsoft gRPC libraries in .NET Core 3.0.
This was effectively a forcing factor for us to make a series of breaking changes, and bump the major version of all libraries. While we are making forced breaking changes, we took the opportunity to make a few other improvements at the same time.
The bulk of the changes were within GAX as that's where a lot of our common code for interacting with gRPC resides, but there will be some API-specific changes too.
We made the following changes:
- Upgraded the Grpc.Core dependency to the latest 2.x release.
- Removed the System.Interactive.Async dependency, replacing it with Microsoft.Bcl.AsyncInterfaces.
- Changed our target platforms to .NET 4.6.1 and .NET Standard 2.0
- Revisited our retry configuration to bring it in line with gRPC "native" retry configuration.
- Removed all obsolete members from all libraries.
- Removed all retry-related members that are not generated by the new microgenerator.
- Removed method signatures in generated API classes with nullable primitive types representing optional parameters. The new overloads just use the non-nullable primitive types.
- Where individual APIs had their own copies of common resource names (such as LocationName), we updated them to use the common resource names instead.
There are more details of breaking changes in the "Breaking changes (Feb 2020)" guide. Some individual APIs had additional breaking changes; see the version history for each API for details.
Considerations around dropping .NET 4.5 support
While dropping support for .NET Standard 1.x was reasonably uncontroversial, dropping support for .NET 4.5 may have a greater impact on our customers.
The Microsoft.Bcl.AsyncInterfaces NuGet package does not support .NET 4.5, which makes it hard for us to do so. We have released the new libraries without .NET 4.5 support as that was the technically-simplest approach, but we have a backup plan to reintroduce .NET 4.5 compatiblity if we absolutely have to in order to meet customer demands. If this happens, it's very likely that we'll only release individual API libraries where there's significant demand, to improve the likelihood of being able to drop .NET 4.5 in future major versions.
GAX 3.0.0 was released on 2020-03-16, and the client libraries depending on it were released later in the same week.