You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is non-exhaustive and none of these are certain, so please provide feedback and suggest further breaking changes
Checkboxes indicate merge to the 0.3.x staging branch
trillium
remove impl Handler for Arc<Handler> -- the primary use case for this is internal to trillium, and should be implemented for a newtype wrapper, as we can ensure that we call init prior to cloning. There is no implementation of init that will avoid a sharp edge for someone
consider making Handler not object-safe by returning impl Future instead of using async_trait and instead introducing a BoxedHandler; this would be worth only worth it if it represents a performance improvement.
use Swansong instead of Stopper + CloneCounter + CloneCounterObserver
Introduce IntoHandler and require all Handler implementations to #[derive(IntoHandler)] or impl IntoHandler for Whatever { type Handler = Self; fn into_handler(self) -> Self { self } }
figure out if there's a way to avoid trillium reexports trillium-http types from locking server-minor versions; ideally trillium-http could make breaking changes that only require a trillium patch change as long as the reexported types aren't breaking
trillium-http
make all fields on Upgrade private and add accessor functions
replace all reexported error types with intrinsic variants that don't contain external implementation details (and allow breaking changes in the contained types)
Synthetic::len should return usize (if Synthetic isn't removed entirely)
treat non-utf8 header value content as opaque data (using String::from_utf8_lossy) instead of trying to retain the full content. Trillium goes above and beyond what the spec says is necessary
remove httparse deferred for 0.3.1 since this has no external api changes.
consider making Handler not object-safe by returning impl Future instead of using async_trait and instead introducing a BoxedHandler; this would be worth only worth it if it represents a performance improvement.
It would also be worth it if it's performance-neutral, since it would substantially improve the quality of the documentation, and eliminate the need to append (and maintain) "here's the actual async fn signature".
jbr
linked a pull request
Apr 5, 2024
that will
close
this issue
Breaking Changes
Note
This is non-exhaustive and none of these are certain, so please provide feedback and suggest further breaking changes
Checkboxes indicate merge to the 0.3.x staging branch
trillium
remove
impl Handler for Arc<Handler>
-- the primary use case for this is internal to trillium, and should be implemented for a newtype wrapper, as we can ensure that we call init prior to cloning. There is no implementation of init that will avoid a sharp edge for someoneremove Conn::headers and Conn::headers_mut -- it's better for callers to be explicit about whether they want request headers or response headers #610
remove trillium::Init for now #609
make Info not Clone #608
pare Info down, lean on StateSet (add a StateSet to trillium::Info #398)
consider making Handler not object-safe by returning
impl Future
instead of using async_trait and instead introducing a BoxedHandler; this would be worth only worth it if it represents a performance improvement.use
Swansong
instead of Stopper + CloneCounter + CloneCounterObserverIntroduce IntoHandler and require all Handler implementations to
#[derive(IntoHandler)]
orimpl IntoHandler for Whatever { type Handler = Self; fn into_handler(self) -> Self { self } }
figure out if there's a way to avoid trillium reexports trillium-http types from locking server-minor versions; ideally trillium-http could make breaking changes that only require a trillium patch change as long as the reexported types aren't breaking
trillium-http
Swansong
instead of StopperString::from_utf8_lossy
) instead of trying to retain the full content. Trillium goes above and beyond what the spec says is necessaryremove httparsedeferred for 0.3.1 since this has no external api changes.The text was updated successfully, but these errors were encountered: