-
Notifications
You must be signed in to change notification settings - Fork 159
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
Tracking issue for potentially useful features in future Rust versions #244
Comments
Thanks for writing this! AFAIK, As for |
rust-lang/log#552 may force us to break our MSRV policy sooner than expected. Short of removing logging entirely from Edit: it looks like Tokio is moving to excise logging entirely, see tokio-rs/mio#1666. I'm not sure if we should follow this precedent. |
Hmm does your MSRV policy apply to optional features too? Would it be reasonable to, say, put logging behind a feature gate and shim the macros when it’s not available so that your default build targets whatever ships with Debian but logging requires something newer? |
I avoid adding features, especially if we'd have to either remove them or make them no-ops when our MSRV goes up in the near future. I could be talked into a |
Why does this matter for In both cases this can be achieved by a The only aspect that should matter for What am I missing? |
Having a On top of that, pinning (Also, neat, I didn't know we had collaborators on this repo) |
You mean the Personally for my crates, I'm keeping a
Yeah that would be the worst possible solution. As It also removes the choice of MSRV from your downstream users. They couldn't even depend on the very latest everything if they wanted to because your crate is holding them back.
|
I agree that Cargo could be tooled better to handle Having different setups for a 1.48 MSRV and a 1.60 MSRV is not only a maintenance burden but complicated for users to handle, especially when they don't depend on Given the options of "bump practical MSRV to 1.60 but have a theoretical MSRV that takes a non-significant amount of effort to get to" or "remove logging, which we don't use very much anyways", I'd lean towards the second option. |
That it's ignored by downstream users is a feature though. Your MSRV is not your downstream user's MSRV, but they might want to depend on latest Rust instead. If they don't then they right now have to hand-craft a suitable For the |
https://www.phoronix.com/news/Debian-12.0-Release-Date Debian Bookworm has just been announced to be released on June 10th! It looks like it will contain Rustc 1.63, which would check off a lot of items on my wishlist here. |
Rise and grind, gamers! Debian Bookworm has now officially released as stable, and with it comes Meaning, we can now bump the MSRV for all of these crates much higher now. See all of the items above for a reason why this is very exciting! For anyone looking for a good first patch to contribute to Over the next week or so I'll start going down the list and taking care of this. |
As of the time of writing (updated 2024-01-14), the current MSRV for every crate in the
smol-rs
organization is as follows:async-broadcast
async-channel
async-compat
async-dup
async-executor
async-fs
async-io
async-lock
async-net
async-process
async-rustls
async-signal
async-task
atomic-waker
blocking
cache-padded
concurrent-queue
easy-parallel
event-listener
event-listener-strategy
fastrand
fastrand-contrib
futures-lite
nb-connect
parking
piper
polling
smol
smol-macros
vec-arena
waker-fn
The lowest MSRV here is 1.36 (aside from
cache-padded
, which we are planning on deprecating, see smol-rs/cache-padded#7). As a whole, the policy is usually to not bump the MSRV past the current Rust version used by Debian Stable (currenly 1.63), but once Debian Stable upgrades to a new Rust version, or a bump in an important crate (such aslibc
) happens, we will upgrade to a newer Rust version. This issue keeps track of features that may be useful tosmol
, but cannot be used yet because we don't have the required Rust version.IntoFuture
on certain structures (likeasync_process::Child
).futures-lite
may want to re-export the newly stableready!()
andpoll_fn
items. As before, this would be a breaking change.backtrace
may allow us to add backtraces to some of our futures.event_listener_strategy::Strategy
in a sounder way. (GAT nature ofStrategy::Future
event-listener-strategy#8)std::os::fd
module could be used to replace parts ofstd::os::unix::io
in a way that helps support WASI.must_use
can now be used successfully onasync fn
.pin!
macro could be used to reimplement thepin
macro infutures-lite
without unsafe code. This meansfutures-lite
could not contain any unsafe code.VecDeque::new
to avoid usingOnceCell
inblocking
. (Remove the dependency on async-lock blocking#59)futures-lite
orasync-io
.AsyncIterator
may replaceStream
infutures
.ReadBuf
is supported, we can use that inpiper
to avoid needing to initialize/zero out parts of the pipe.piper
v1.0.(Feel free to add any that I missed)
The text was updated successfully, but these errors were encountered: