- Internal optimization to client code.
- Small fixes, such as ports in testing and enabling
timeline_test.dart
. - When the keep alive manager runs into a timeout, it will finish the transport instead of closing the connection, as defined in the gRPC spec.
- Upgrade to
package:lints
version 5.0.0 and Dart SDK version 3.5.0.
- Fix header and trailing not completing if the call is terminated. Fixes #727
- Set compressed flag correctly for grpc-encoding = identity. Fixes #669 (#693)
- Remove generated status codes.
- Remove dependency on
package:archive
. - Move
codec.dart
. - Work around hang during Flutter hot restart by adding default case handler in _GrpcWebConversionSink.add.
- Forward internal
GrpcError
on when throwing while sending a request. - Add support for proxies, see #33.
- Remove canceled
ServerHandler
s from tracking list. - Fix regression on fetching the remote address of a closed socket.
- Add const constructor to
GrpcError
fixing #606. - Make
GrpcError
non-final to allow implementations. - Only send keepalive pings on open connections.
- Fix interop tests.
- Remove
base
qualifier onResponseStream
. - Add support for clients to send KEEPALIVE pings.
package:http
now supports more versions:>=0.13.0 <2.0.0
.package:protobuf
new supports more versions:>=2.0.0 <4.0.0
.
ChannelOptions
now exposesconnectTimeout
, which is used on the socket connect. This is used to specify the maximum allowed time to wait for a connection to be established. IfconnectTime
is longer than the system level timeout duration, a timeout may occur sooner than specified inconnectTimeout
. On timeout, aSocketException
is thrown.- Require Dart 2.17 or greater.
- Fix issue #51, add support for custom error handling.
- Expose client IP address to server
- Add a
channelShutdownHandler
argument toClientChannel
and the subclasses. This callback can be used to react to channel shutdown or termination. - Export the
Code
protobuf enum from thegrpc.dart
library. - Require Dart 3.0.0 or greater.
- Expose a stream for connection state changes on ClientChannel to address #428. This allows users to react to state changes in the connection.
- Fix #576: set default
:authority
value for UDS connections tolocalhost
instead of using UDS path. Using path triggers checks in HTTP2 servers which attempt to validate:authority
value.
- Fix compilation on the Web with DDC.
- Require
package:googleapis_auth
^1.1.0
- Fix issues #421 and
#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 asgrpc-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 viaGrpcError.trailers
.
- Migrate library and tests to null safety.
- Require Dart 2.12 or greater.
- Added support for compression/decompression, which can be configured through
ChannelOptions
constructor'scodecRegistry
parameter or adding thegrpc-accept-encoding
tometadata
parameter ofCallOptions
on the client side andcodecRegistry
parameter toServer
on the server side. Outgoing rpc can be compressed using thecompression
parameter on theCallOptions
. - Fix issue #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).
Note: this is the last release supporting SDK < 2.12. Next release will be nullsafe and thus require SDK >= 2.12.
- Added support for client interceptors, which can be configured through
Client
constructor'sinterceptors
parameter. Interceptors will be executed byClient.$createStreamingCall
andClient.$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 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
andClientChannel
. - Fix issue #331 causing
an exception in
GrpcWebClientChannel.terminate()
.
- Added decoding/parsing of
grpc-status-details-bin
to pass all response exception details to theGrpcError
thrown in Dart, via #349. - Dart SDK constraint is bumped to
>=2.3.0 <3.0.0
due to language version in the generated protobuf code.
- 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.
- Expose a
validateClient
method for server credentials so gRPC server users may know when clients are loopback addresses.
- Plumb stacktraces through request / response stream error handlers.
- Catch and forward any errors decoding the response.
- Add the ability to bypass CORS preflight requests.
- Revert PR #287, which allowed using gRPC-web in native environments but also broke streaming.
- Relax
crypto
version dependency constraint from^2.1.5
to^2.1.4
.
- Added
applicationDefaultCredentialsAuthenticator
function for creating an authenticator using Application Default Credentials. - Less latency by using the
tcpNoDelay
option for sockets. - Support grpc-web in a non-web setting.
- Fix bug in grpc-web when receiving an empty trailer.
- Fix a state bug in the server.
- Fix bug introduced in 2.1.1 where the port would be added to the default authority when making a secure connection.
- Fix bug introduced in 2.1.0 where an explicit
authority
would not be used when making a secure connection.
- 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
toServer.serve
.
- GrpcError now implements Exception to indicate it can be reasonably handled.
- Fix computation of the audience given to metadata providers to include the scheme.
- Fix computation of authority. This should fix authorization.
- Fix imports to ensure
grpc_web.dart
has no accidental transitive dependencies on dart:io.
- Add initial support for grpc-web.
See
example/grpc-web
for an example of this working. - Breaking:
grpc.dart
no longer exposesClientConnection
. It was supposed to be an internal abstraction. - Breaking:
grpc.dart
no longer exposes the deprecatedServerHandler
. It was supposed to be an internal abstraction. service_api.dart
no longer exports Server - it has never been used by the generated code.
- Allow custom user agent with a
userAgent
argument forChannelOptions()
. - Allow specifying
authority
forChannelCredentials.insecure()
. - Add
userAgent
as an optional named argument forclientConnection.createCallHeaders()
.
- Fix bug where the server would crash if the client would break the connection.
- Add
service_api.dart
that only contains the minimal imports needed by the code generated by protoc_plugin.
- Support package:http2 1.0.0.
- Graduate package to 1.0.
- Removes stray files that where published by accident in version 0.6.8.
- Calling
terminate()
orshutdown()
on a channel doesn't throw error if the channel is not yet open.
- Support package:test 1.5.
- Support
package:http
>=0.11.3+17 <0.13.0
. - Update
package:googleapis_auth
to^0.2.5+3
.
- Interceptors are now async.
- Update dependencies to be compatible with Dart 2.
- Make fields of
StatusCode
const rather than final.
- Allow for non-ascii header values.
- More fixes to update to Dart 2 core library APIs.
- Updated implementation to use new Dart 2 APIs using dart2_fix.
- Dart SDK upper constraint raised to declare compatibility with Dart 2.0 stable.
- Breaking change: The package now exclusively supports Dart 2.
- Fixed tests to pass in Dart 2.
- Added support for Interceptors (issue #79); thanks to @mogol for contributing!
- Fixes for supporting Dart 2.
- 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.
- Split out TLS credentials to a separate class.
- 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.
- Updated generated code in examples using latest protoc compiler plugin.
- Dart 2.0 fixes.
- Changed license to Apache 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.
- Core gRPC functionality is implemented and passes gRPC compliance tests.
The API is shaping up, but may still change as more advanced features are implemented.
- Initial version.
This package is in a very early and experimental state. We do not recommend using it for anything but experiments.