grpc-dart/CHANGELOG.md

327 lines
10 KiB
Markdown

## 4.0.0
* Set compressed flag correctly for grpc-encoding = identity. Fixes [#669](https://github.com/grpc/grpc-dart/issues/669) (https://github.com/grpc/grpc-dart/pull/693)
* Remove generated status codes.
* Remove dependency on `package:archive`.
* Move `codec.dart`.
## 3.2.4
* Forward internal `GrpcError` on when throwing while sending a request.
* Add support for proxies, see [#33](https://github.com/grpc/grpc-dart/issues/33).
* Remove canceled `ServerHandler`s from tracking list.
* Fix regression on fetching the remote address of a closed socket.
## 3.2.3
* Add const constructor to `GrpcError` fixing #606.
* Make `GrpcError` non-final to allow implementations.
* Only send keepalive pings on open connections.
* Fix interop tests.
## 3.2.2
* Remove `base` qualifier on `ResponseStream`.
* Add support for clients to send KEEPALIVE pings.
## 3.2.1
* `package:http` now supports more versions: `>=0.13.0 <2.0.0`.
* `package:protobuf` new supports more versions: `>=2.0.0 <4.0.0`.
## 3.2.0
* `ChannelOptions` now exposes `connectTimeout`, which is used on the
socket connect. This is used to specify the maximum allowed time to wait
for a connection to be established. If `connectTime` is longer than the system
level timeout duration, a timeout may occur sooner than specified in
`connectTimeout`. On timeout, a `SocketException` is thrown.
* Require Dart 2.17 or greater.
* Fix issue [#51](https://github.com/grpc/grpc-dart/issues/51), add support for custom error handling.
* Expose client IP address to server
* Add a `channelShutdownHandler` argument to `ClientChannel` and the subclasses.
This callback can be used to react to channel shutdown or termination.
* Export the `Code` protobuf enum from the `grpc.dart` library.
* Require Dart 3.0.0 or greater.
## 3.1.0
* Expose a stream for connection state changes on ClientChannel to address
[#428](https://github.com/grpc/grpc-dart/issues/428).
This allows users to react to state changes in the connection.
* Fix [#576](https://github.com/grpc/grpc-dart/issues/576): set default
`:authority` value for UDS connections to `localhost` instead of using
UDS path. Using path triggers checks in HTTP2 servers which
attempt to validate `:authority` value.
## 3.0.2
* Fix compilation on the Web with DDC.
## 3.0.1
* Require `package:googleapis_auth` `^1.1.0`
* Fix issues [#421](https://github.com/grpc/grpc-dart/issues/421) and
[#458](https://github.com/grpc/grpc-dart/issues/458). Validate
responses according to gRPC/gRPC-Web protocol specifications: require
200 HTTP status and a supported `Content-Type` header to be present, as well
as `grpc-status: 0` header. When handling malformed responses make effort
to translate HTTP statuses into gRPC statuses.
* Add GrpcOrGrpcWebClientChannel which uses gRPC on all platforms except web,
on which it uses gRPC-web.
* `GrpcError` now exposes response trailers via `GrpcError.trailers`.
## 3.0.0
* Migrate library and tests to null safety.
* Require Dart 2.12 or greater.
## 2.9.0
* Added support for compression/decompression, which can be configured through
`ChannelOptions` constructor's `codecRegistry` parameter or adding the
`grpc-accept-encoding` to `metadata` parameter of `CallOptions` on the client
side and `codecRegistry` parameter to `Server` on the server side.
Outgoing rpc can be compressed using the `compression` parameter on the
`CallOptions`.
* Fix issue [#206](https://github.com/grpc/grpc-dart/issues/206). Prevent an
exception to be thrown when a web connection stream is closed.
* Add XHR raw response to the GrpcError for a better debugging
([PR #423](https://github.com/grpc/grpc-dart/pulls/423)).
Note: this is the last release supporting SDK < 2.12. Next release will
be nullsafe and thus require SDK >= 2.12.
## 2.8.0
* Added support for client interceptors, which can be configured through
`Client` constructor's `interceptors` parameter. Interceptors will be
executed by `Client.$createStreamingCall` and `Client.$createUnaryCall`.
Using interceptors requires regenerating client stubs using version 19.2.0 or
newer of protobuf compiler plugin.
* `Client.$createCall` is deprecated because it does not invoke client
interceptors.
* Fix issue [#380](https://github.com/grpc/grpc-dart/issues/380) causing
incorrect duplicated headers in gRPC-Web requests.
* Change minimum required Dart SDK to 2.8 to enable access to Unix domain sockets.
* Add support for Unix domain sockets in `Socket.serve` and `ClientChannel`.
* Fix issue [#331](https://github.com/grpc/grpc-dart/issues/331) causing
an exception in `GrpcWebClientChannel.terminate()`.
## 2.7.0
* Added decoding/parsing of `grpc-status-details-bin` to pass all response
exception details to the `GrpcError` thrown in Dart, via
[#349](https://github.com/grpc/grpc-dart/pull/349).
* Dart SDK constraint is bumped to `>=2.3.0 <3.0.0` due to language version
in the generated protobuf code.
## 2.6.0
* Create gRPC servers and clients with [Server|Client]TransportConnection.
This allows callers to provide their own transport configuration, such
as their own implementation of streams and sinks instead of sockets.
## 2.5.0
* Expose a `validateClient` method for server credentials so gRPC server
users may know when clients are loopback addresses.
## 2.4.1
* Plumb stacktraces through request / response stream error handlers.
* Catch and forward any errors decoding the response.
## 2.4.0
* Add the ability to bypass CORS preflight requests.
## 2.3.0
* Revert [PR #287](https://github.com/grpc/grpc-dart/pull/287), which allowed
using gRPC-web in native environments but also broke streaming.
## 2.2.0+1
* Relax `crypto` version dependency constraint from `^2.1.5` to `^2.1.4`.
## 2.2.0
* Added `applicationDefaultCredentialsAuthenticator` function for creating an
authenticator using [Application Default Credentials](https://cloud.google.com/docs/authentication/production).
* Less latency by using the `tcpNoDelay` option for sockets.
* Support grpc-web in a non-web setting.
## 2.1.3
* Fix bug in grpc-web when receiving an empty trailer.
* Fix a state bug in the server.
## 2.1.2
* Fix bug introduced in 2.1.1 where the port would be added to the default authority when making a
secure connection.
## 2.1.1
* Fix bug introduced in 2.1.0 where an explicit `authority` would not be used when making a secure
connection.
## 2.1.0
* Do a health check of the http2-connection before making request.
* Introduce `ChannelOptions.connectionLimit` the longest time a single connection is used for new
requests.
* Use Tcp.nodelay to improve client call speed.
* Use SecureSocket supportedProtocols to save a round trip when establishing a secure connection.
* Allow passing http2 `ServerSettings` to `Server.serve`.
## 2.0.3
* GrpcError now implements Exception to indicate it can be reasonably handled.
## 2.0.2
* Fix computation of the audience given to metadata providers to include the scheme.
## 2.0.1
* Fix computation of authority. This should fix authorization.
## 2.0.0+1
* Fix imports to ensure `grpc_web.dart` has no accidental transitive dependencies on dart:io.
## 2.0.0
* Add initial support for grpc-web.
See `example/grpc-web` for an example of this working.
* **Breaking**: `grpc.dart` no longer exposes `ClientConnection`. It was supposed to be an internal
abstraction.
* **Breaking**: `grpc.dart` no longer exposes the deprecated `ServerHandler`.
It was supposed to be an internal abstraction.
* `service_api.dart` no longer exports Server - it has never been used by the generated code.
## 1.0.3
* Allow custom user agent with a `userAgent` argument for `ChannelOptions()`.
* Allow specifying `authority` for `ChannelCredentials.insecure()`.
* Add `userAgent` as an optional named argument for `clientConnection.createCallHeaders()`.
## 1.0.2
* Fix bug where the server would crash if the client would break the connection.
## 1.0.1
* Add `service_api.dart` that only contains the minimal imports needed by the code generated by
protoc_plugin.
## 1.0.0+1
* Support package:http2 1.0.0.
## 1.0.0
* Graduate package to 1.0.
## 0.6.8+1
* Removes stray files that where published by accident in version 0.6.8.
## 0.6.8
* Calling `terminate()` or `shutdown()` on a channel doesn't throw error if the
channel is not yet open.
## 0.6.7
* Support package:test 1.5.
## 0.6.6
* Support `package:http` `>=0.11.3+17 <0.13.0`.
* Update `package:googleapis_auth` to `^0.2.5+3`.
## 0.6.5
* Interceptors are now async.
## 0.6.4
* Update dependencies to be compatible with Dart 2.
## 0.6.3
* Make fields of `StatusCode` const rather than final.
## 0.6.2
* Allow for non-ascii header values.
## 0.6.1
* More fixes to update to Dart 2 core library APIs.
## 0.6.0+1
* Updated implementation to use new Dart 2 APIs using
[dart2_fix](https://github.com/dart-lang/dart2_fix).
## 0.6.0
* Dart SDK upper constraint raised to declare compatibility with Dart 2.0 stable.
## 0.5.0
* Breaking change: The package now exclusively supports Dart 2.
* Fixed tests to pass in Dart 2.
* Added support for Interceptors ([issue #79](https://github.com/grpc/grpc-dart/issues/79)); thanks to [@mogol](https://github.com/mogol) for contributing!
## 0.4.1
* Fixes for supporting Dart 2.
## 0.4.0
* Moved TLS credentials for server into a separate class.
* Added support for specifying the address for the server, and support for
serving on an ephemeral port.
## 0.3.1
* Split out TLS credentials to a separate class.
## 0.3.0
* Added authentication metadata providers, optimized for use with Google Cloud.
* Added service URI to metadata provider API, needed for Json Web Token generation.
* Added authenticated cloud-to-prod interoperability tests.
* Refactored connection logic to throw initial connection errors early.
## 0.2.1
* Updated generated code in examples using latest protoc compiler plugin.
* Dart 2.0 fixes.
* Changed license to Apache 2.0.
## 0.2.0
* Implemented support for per-RPC metadata providers. This can be used for
authentication providers which may need to obtain or refresh a token before
the RPC is sent.
## 0.1.0
* Core gRPC functionality is implemented and passes
[gRPC compliance tests](https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md).
The API is shaping up, but may still change as more advanced features are implemented.
## 0.0.1
* Initial version.
This package is in a very early and experimental state. We do not recommend
using it for anything but experiments.