Releases: github/twirp-rs
twirp-v0.9.0
Breaking
- Remove
SERVICE_FQN
to avoid upgrade confusion (#222)
Breaking: Allow custom headers and extensions for twirp clients and servers; unify traits; unify error type (#212)
- No more
Context
. The same capabilities now exist via http request and response Extensions and Headers. - Clients and servers now share a single trait (the rpc interface).
- It is possible to set custom headers on requests (client side) and it's possible for server handlers to read request headers and set custom response headers.
- The same ☝🏻 is true for extensions to allow interactivity with middleware.
- All the above is accomplished by using
http::request::Request<In>
andhttp::response::Response<Out>
whereIn
andOut
are the individual rpc message types. - We have unifyied and simplified the error types. There is now just
TwirpErrorResponse
which models the twirp error response spec.
Breaking: Generate service fqn (#221)
Applications will need to remove any manual service nesting they are doing today.
In 0.8.0, server consumers of this library have to know how to properly construct the fully qualified service path by using nest
on an axum
Router
like so:
let twirp_routes = Router::new()
.nest(haberdash::SERVICE_FQN, haberdash::router(api_impl));
This is unnecessary in 0.9.0 (the generated router
function for each service does that for you). Instead, you would write:
let twirp_routes = haberdash::router(api_impl);
It is still canonical (but not required) to then nest with a /twirp
prefix (the examples show this).
Other
twirp-build-v0.9.0
- See the changelog for twirp for this release.
v0.8.0
This is the first official release of twirp
and twirp-build
. Unofficial community releases have been done under twirp-rs
and twirp-build-rs
, which should be considered as independent forks from this project going forward from this date.
The v0.8.0
version number has been chosen as the next logical version number following the GitHub Blackbird team's internal version bumps that were consumed internally, but not published to crates.io.
Going forward, the plan is to rely only on publicly-published versions of this crate, which should result in smaller and more frequent releases.
The changelog below is based on the difference between the community v0.3.0 release and the current release. Dependabot PRs have been removed from the list below because there were an annoying amount of them. It is safe to assume that all dependencies were substantially upgraded.
What's Changed
- Update prost-build to 0.13 by @tclem in #59
- Update prost and prost-wkt by @tclem in #60
- Remove unused dependencies by @tclem in #66
- Add a generic client error by @tclem in #67
- Make fields on Timings private, expose total elapsed by @tclem in #68
- cargo upgrade by @tclem in #70
- Don't require
Client
to be wrapped inArc
by @tclem in #71 - Update prost-wkt-{types,build} crates to 0.6 by @nickpresta in #74
- Still support Arc by @jorendorff in #86
- Don't require
Arc
inrouter
by @tclem in #85 - update README: add type serde derive type annotations in prost_build by @kristopherbullinger in #102
- stack overflow fix: use fully-qualified T method syntax by @kristopherbullinger in #104
- dependabot weekly instead of daily by @hendrikvanantwerpen in #130
- Update to Rust 1.83 by @CleanCut in #141
- Bump dependencies by @CleanCut in #149
- Bump to axum 0.8 by @CleanCut in #151
- Make the error type configurable by @jorendorff in #153
- An actions- and pull request-based release workflow by @CleanCut in #158
- actions: Add explict permissions. by @gorzell in #174
- Fix link to twirp-build by @look in #184
- Remove Debug trait from service traits by @aneubeck in #183
- Use syn/quote for codegen by @blinsay in #185
New Contributors
(Omitted since this is the first official release)
Full Changelog: https://github.com/github/twirp-rs/commits/v0.8.0