Releases: yarpc/yarpc-go
Releases · yarpc/yarpc-go
v1.0.0-rc1
- Breaking: Rename the
Interceptor
andFilter
types to
UnaryInboundMiddleware
andUnaryOutboundMiddleware
respectively. - Breaking:
yarpc.Config
now accepts middleware using the
InboundMiddleware
andOutboundMiddleware
fields.
Before:
yarpc.Config{Interceptor: myInterceptor, Filter: myFilter}
Now:
yarpc.Config{
InboundMiddleware: yarpc.InboundMiddleware{Unary: myInterceptor},
OutboundMiddleware: yarpc.OutboundMiddleware{Unary: myFilter},
}
- Add support for Oneway middleware via the
OnewayInboundMiddleware
and
OnewayOutboundMiddleware
interfaces.
v0.5.0
- Breaking: A detail of inbound transports has changed.
Starting an inbound transport accepts a ServiceDetail, including
the service name and a Registry. The Registry now must
implementChoose(context.Context, transport.Request) (HandlerSpec, error)
instead ofGetHandler(service, procedure string) (HandlerSpec, error)
.
Note that in the prior release,Handler
becameHandleSpec
to
accommodate oneway handlers. - Upgrade to ThriftRW 1.0.
- TChannel:
NewInbound
andNewOutbound
now accept any object satisfying
theChannel
interface. This should work with existing*tchannel.Channel
objects without any changes. - Introduced
yarpc.Inbounds
to be used instead of[]transport.Inbound
when configuring a Dispatcher. - Add support for peer lists in HTTP outbounds.
v0.4.0
This release requires regeneration of ThriftRW code.
- Breaking: Procedure registration must now always be done directly
against theDispatcher
. Encoding-specific functionsjson.Register
,
raw.Register
, andthrift.Register
have been deprecated in favor of
theDispatcher.Register
method. Existing code may be migrated by running
the following commands on your go files.
gofmt -w -r 'raw.Register(d, h) -> d.Register(h)' $file.go
gofmt -w -r 'json.Register(d, h) -> d.Register(h)' $file.go
gofmt -w -r 'thrift.Register(d, h) -> d.Register(h)' $file.go
- Add
yarpc.InjectClients
to automatically instantiate and inject clients
into structs that need them. - Thrift: Add a
Protocol
option to change the Thrift protocol used by
clients and servers. - Breaking: Remove the ability to set Baggage Headers through yarpc, use
opentracing baggage instead - Breaking: Transport options have been removed completely. Encoding
values differently based on the transport is no longer supported. - Breaking: Thrift requests and responses are no longer enveloped by
default. Thethrift.Enveloped
option may be used to turn enveloping on
when instantiating Thrift clients or registering handlers. - Breaking: Use of
golang.org/x/net/context
has been dropped in favor
of the standard library'scontext
package. - Add support for providing peer lists to dynamically choose downstream
peers in HTTP Outbounds - Rename
Handler
interface toUnaryHandler
and separateOutbound
interface intoOutbound
andUnaryOutbound
. - Add
OnewayHandler
andHandlerSpec
to support oneway handlers.
Transport inbounds can choose which RPC types to accept
v0.3.1
Fix missing canonical import path to go.uber.org/yarpc
.
v0.3.0
v0.2.1
Loosen constraint on opentracing-go
to >= 0.9, < 2
.
v0.2.0
- Update thriftrw-go to
>= 0.2, < 0.3
. - Implemented a ThriftRW plugin. This should now be used instead of the
ThriftRW--yarpc
flag. Check the documentation of the
thrift
package for instructions on how to use it. - Adds support for OpenTracing. Pass an opentracing instance as a
Tracer
property of the YARPC config struct and both TChannel and HTTP transports will submit spans and propagate baggage. - Panics from user handlers are recovered. The panic is logged (stderr), and
an unexpected error is returned to the client about it. - Thrift clients can now make requests to multiplexed Apache Thrift servers
using thethrift.Multiplexed
client option.
v0.1.1
This release reverts the import path of the project back to github.com/yarpc/yarpc-go
, away from go.uber.org/yarpc
. This was done because:
- Glide
0.11
has a bug which causes installing these packages to fail - thriftrw
~0.1
's yarpc template is still usinggithub.com/yarpc/yarpc-go
.
Users should pin to the minor range >= 0.1.1, < 0.2.0
.
If you are using Glide, this can be represented as ~0.1.1
.
v0.1.0
This release represents the initial minor release of go.uber.org/yarpc
.
Users should pin to the minor range, aka >= 0.1.0, < 0.2.0
.
If you are using Glide, this can be represented as ~0.1
.