-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Timer::reset can't soundly have an optimized implementation #3027
Labels
A-rt
Area: runtime traits/utils
C-performance
Category: performance. This is making existing behavior go faster.
E-easy
Effort: easy. A task that would be a great starting point for a new contributor.
Milestone
Comments
seanmonstar
added
the
B-breaking-change
Blocked: this is an "API breaking change".
label
Nov 8, 2022
Sigh, yea, I forgot about this. And Rust still hasn't made this any easier; we can't just say
|
|
seanmonstar
added
E-easy
Effort: easy. A task that would be a great starting point for a new contributor.
A-rt
Area: runtime traits/utils
C-performance
Category: performance. This is making existing behavior go faster.
and removed
B-breaking-change
Blocked: this is an "API breaking change".
C-bug
Category: bug. Something is wrong. This is bad!
labels
Jan 5, 2023
seanmonstar
pushed a commit
that referenced
this issue
Jul 6, 2023
mmastrac
added a commit
to denoland/deno
that referenced
this issue
Jul 31, 2023
Includes a lightly-modified version of hyper-util's `TokioIo` utility. Hyper changes: v1.0.0-rc.4 (2023-07-10) Bug Fixes http1: http1 server graceful shutdown fix (#3261) ([f4b51300](hyperium/hyper@f4b5130)) send error on Incoming body when connection errors (#3256) ([52f19259](hyperium/hyper@52f1925), closes hyperium/hyper#3253) properly end chunked bodies when it was known to be empty (#3254) ([fec64cf0](hyperium/hyper@fec64cf), closes hyperium/hyper#3252) Features client: Make clients able to use non-Send executor (#3184) ([d977f209](hyperium/hyper@d977f20), closes hyperium/hyper#3017) rt: replace IO traits with hyper::rt ones (#3230) ([f9f65b7a](hyperium/hyper@f9f65b7), closes hyperium/hyper#3110) add downcast on Sleep trait (#3125) ([d92d3917](hyperium/hyper@d92d391), closes hyperium/hyper#3027) service: change Service::call to take &self (#3223) ([d894439e](hyperium/hyper@d894439), closes hyperium/hyper#3040) Breaking Changes Any IO transport type provided must not implement hyper::rt::{Read, Write} instead of tokio::io traits. You can grab a helper type from hyper-util to wrap Tokio types, or implement the traits yourself, if it's a custom type. ([f9f65b7a](hyperium/hyper@f9f65b7)) client::conn::http2 types now use another generic for an Executor. Code that names Connection needs to include the additional generic parameter. ([d977f209](hyperium/hyper@d977f20)) The Service::call function no longer takes a mutable reference to self. The FnMut trait bound on the service::util::service_fn function and the trait bound on the impl for the ServiceFn struct were changed from FnMut to Fn.
0xE282B0
pushed a commit
to 0xE282B0/hyper
that referenced
this issue
Jan 12, 2024
This commit allows downcasting pinned `Sleep` object to support implementations of `Timer::reset`. One example where this is useful is when using `TokioSleep`, i.e. `Sleep` provided by tokio. Closes hyperium#3027
0xE282B0
pushed a commit
to 0xE282B0/hyper
that referenced
this issue
Jan 16, 2024
This commit allows downcasting pinned `Sleep` object to support implementations of `Timer::reset`. One example where this is useful is when using `TokioSleep`, i.e. `Sleep` provided by tokio. Closes hyperium#3027 Signed-off-by: Sven Pfennig <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
A-rt
Area: runtime traits/utils
C-performance
Category: performance. This is making existing behavior go faster.
E-easy
Effort: easy. A task that would be a great starting point for a new contributor.
In 1.0.0-rc.1, the new
Timer
trait has a method to reset an existingSleep
to a new deadline. The default implementation simply creates a newSleep
and writes it over the old one, but presumably this method exists to it can be overridden with a better implementation when working with a timer like Tokio's that can have its deadline dynamically adjusted.However, since the
Sleep
is provided as adyn Sleep
andSleep
has no downcasting APIs, there is no safe way to confirm that theSleep
instance is one created by thisTimer
implementation. That effectively means that the current default implementation is the only sound way of implementing the method.The text was updated successfully, but these errors were encountered: