mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-07 00:00:09 +02:00
tokio: raise MSRV to 1.71 (#7658)
This commit is contained in:
@@ -28,7 +28,7 @@ env:
|
|||||||
# - tokio-util/Cargo.toml
|
# - tokio-util/Cargo.toml
|
||||||
# - tokio-test/Cargo.toml
|
# - tokio-test/Cargo.toml
|
||||||
# - tokio-stream/Cargo.toml
|
# - tokio-stream/Cargo.toml
|
||||||
rust_min: '1.70'
|
rust_min: '1.71'
|
||||||
# This excludes unstable features like io_uring,
|
# This excludes unstable features like io_uring,
|
||||||
# which require '--cfg tokio_unstable'.
|
# which require '--cfg tokio_unstable'.
|
||||||
TOKIO_STABLE_FEATURES: "full,test-util"
|
TOKIO_STABLE_FEATURES: "full,test-util"
|
||||||
|
|||||||
@@ -186,12 +186,13 @@ When updating this, also update:
|
|||||||
|
|
||||||
Tokio will keep a rolling MSRV (minimum supported rust version) policy of **at
|
Tokio will keep a rolling MSRV (minimum supported rust version) policy of **at
|
||||||
least** 6 months. When increasing the MSRV, the new Rust version must have been
|
least** 6 months. When increasing the MSRV, the new Rust version must have been
|
||||||
released at least six months ago. The current MSRV is 1.70.
|
released at least six months ago. The current MSRV is 1.71.
|
||||||
|
|
||||||
Note that the MSRV is not increased automatically, and only as part of a minor
|
Note that the MSRV is not increased automatically, and only as part of a minor
|
||||||
release. The MSRV history for past minor releases can be found below:
|
release. The MSRV history for past minor releases can be found below:
|
||||||
|
|
||||||
* 1.39 to now - Rust 1.70
|
* 1.48 to now - Rust 1.71
|
||||||
|
* 1.39 to 1.47 - Rust 1.70
|
||||||
* 1.30 to 1.38 - Rust 1.63
|
* 1.30 to 1.38 - Rust 1.63
|
||||||
* 1.27 to 1.29 - Rust 1.56
|
* 1.27 to 1.29 - Rust 1.56
|
||||||
* 1.17 to 1.26 - Rust 1.49
|
* 1.17 to 1.26 - Rust 1.49
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ name = "tokio-macros"
|
|||||||
# - Create "tokio-macros-x.y.z" git tag.
|
# - Create "tokio-macros-x.y.z" git tag.
|
||||||
version = "2.5.0"
|
version = "2.5.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.70"
|
rust-version = "1.71"
|
||||||
authors = ["Tokio Contributors <[email protected]>"]
|
authors = ["Tokio Contributors <[email protected]>"]
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/tokio-rs/tokio"
|
repository = "https://github.com/tokio-rs/tokio"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ name = "tokio-stream"
|
|||||||
# - Create "tokio-stream-0.1.x" git tag.
|
# - Create "tokio-stream-0.1.x" git tag.
|
||||||
version = "0.1.17"
|
version = "0.1.17"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.70"
|
rust-version = "1.71"
|
||||||
authors = ["Tokio Contributors <[email protected]>"]
|
authors = ["Tokio Contributors <[email protected]>"]
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/tokio-rs/tokio"
|
repository = "https://github.com/tokio-rs/tokio"
|
||||||
|
|||||||
@@ -734,22 +734,15 @@ mod rand {
|
|||||||
#[cfg(not(loom))]
|
#[cfg(not(loom))]
|
||||||
pub(crate) mod rand {
|
pub(crate) mod rand {
|
||||||
use std::collections::hash_map::RandomState;
|
use std::collections::hash_map::RandomState;
|
||||||
use std::hash::{BuildHasher, Hash, Hasher};
|
use std::hash::BuildHasher;
|
||||||
use std::sync::atomic::AtomicU32;
|
use std::sync::atomic::AtomicU32;
|
||||||
use std::sync::atomic::Ordering::Relaxed;
|
use std::sync::atomic::Ordering::Relaxed;
|
||||||
|
|
||||||
static COUNTER: AtomicU32 = AtomicU32::new(1);
|
static COUNTER: AtomicU32 = AtomicU32::new(1);
|
||||||
|
|
||||||
pub(crate) fn seed() -> u64 {
|
pub(crate) fn seed() -> u64 {
|
||||||
let rand_state = RandomState::new();
|
|
||||||
|
|
||||||
let mut hasher = rand_state.build_hasher();
|
|
||||||
|
|
||||||
// Hash some unique-ish data to generate some new state
|
// Hash some unique-ish data to generate some new state
|
||||||
COUNTER.fetch_add(1, Relaxed).hash(&mut hasher);
|
RandomState::new().hash_one(COUNTER.fetch_add(1, Relaxed))
|
||||||
|
|
||||||
// Get the seed
|
|
||||||
hasher.finish()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ name = "tokio-test"
|
|||||||
# - Create "tokio-test-0.4.x" git tag.
|
# - Create "tokio-test-0.4.x" git tag.
|
||||||
version = "0.4.4"
|
version = "0.4.4"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.70"
|
rust-version = "1.71"
|
||||||
authors = ["Tokio Contributors <[email protected]>"]
|
authors = ["Tokio Contributors <[email protected]>"]
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/tokio-rs/tokio"
|
repository = "https://github.com/tokio-rs/tokio"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ name = "tokio-util"
|
|||||||
# - Create "tokio-util-0.7.x" git tag.
|
# - Create "tokio-util-0.7.x" git tag.
|
||||||
version = "0.7.16"
|
version = "0.7.16"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.70"
|
rust-version = "1.71"
|
||||||
authors = ["Tokio Contributors <[email protected]>"]
|
authors = ["Tokio Contributors <[email protected]>"]
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://github.com/tokio-rs/tokio"
|
repository = "https://github.com/tokio-rs/tokio"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use std::borrow::Borrow;
|
|||||||
use std::collections::hash_map::RandomState;
|
use std::collections::hash_map::RandomState;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::future::Future;
|
use std::future::Future;
|
||||||
use std::hash::{BuildHasher, Hash, Hasher};
|
use std::hash::{BuildHasher, Hash};
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
use tokio::runtime::Handle;
|
use tokio::runtime::Handle;
|
||||||
use tokio::task::{AbortHandle, Id, JoinError, JoinSet, LocalSet};
|
use tokio::task::{AbortHandle, Id, JoinError, JoinSet, LocalSet};
|
||||||
@@ -391,13 +391,13 @@ where
|
|||||||
|
|
||||||
fn insert(&mut self, mut key: K, mut abort: AbortHandle) {
|
fn insert(&mut self, mut key: K, mut abort: AbortHandle) {
|
||||||
let hash_builder = self.hashes_by_task.hasher();
|
let hash_builder = self.hashes_by_task.hasher();
|
||||||
let hash = hash_one(hash_builder, &key);
|
let hash = hash_builder.hash_one(&key);
|
||||||
let id = abort.id();
|
let id = abort.id();
|
||||||
|
|
||||||
// Insert the new key into the map of tasks by keys.
|
// Insert the new key into the map of tasks by keys.
|
||||||
let entry =
|
let entry =
|
||||||
self.tasks_by_key
|
self.tasks_by_key
|
||||||
.entry(hash, |(k, _)| *k == key, |(k, _)| hash_one(hash_builder, k));
|
.entry(hash, |(k, _)| *k == key, |(k, _)| hash_builder.hash_one(k));
|
||||||
match entry {
|
match entry {
|
||||||
Entry::Occupied(occ) => {
|
Entry::Occupied(occ) => {
|
||||||
// There was a previous task spawned with the same key! Cancel
|
// There was a previous task spawned with the same key! Cancel
|
||||||
@@ -673,9 +673,9 @@ where
|
|||||||
/// ```
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn reserve(&mut self, additional: usize) {
|
pub fn reserve(&mut self, additional: usize) {
|
||||||
let hash_builder = self.hashes_by_task.hasher();
|
self.tasks_by_key.reserve(additional, |(k, _)| {
|
||||||
self.tasks_by_key
|
self.hashes_by_task.hasher().hash_one(k)
|
||||||
.reserve(additional, |(k, _)| hash_one(hash_builder, k));
|
});
|
||||||
self.hashes_by_task.reserve(additional);
|
self.hashes_by_task.reserve(additional);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -701,9 +701,8 @@ where
|
|||||||
#[inline]
|
#[inline]
|
||||||
pub fn shrink_to_fit(&mut self) {
|
pub fn shrink_to_fit(&mut self) {
|
||||||
self.hashes_by_task.shrink_to_fit();
|
self.hashes_by_task.shrink_to_fit();
|
||||||
let hash_builder = self.hashes_by_task.hasher();
|
|
||||||
self.tasks_by_key
|
self.tasks_by_key
|
||||||
.shrink_to_fit(|(k, _)| hash_one(hash_builder, k));
|
.shrink_to_fit(|(k, _)| self.hashes_by_task.hasher().hash_one(k));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Shrinks the capacity of the map with a lower limit. It will drop
|
/// Shrinks the capacity of the map with a lower limit. It will drop
|
||||||
@@ -732,9 +731,9 @@ where
|
|||||||
#[inline]
|
#[inline]
|
||||||
pub fn shrink_to(&mut self, min_capacity: usize) {
|
pub fn shrink_to(&mut self, min_capacity: usize) {
|
||||||
self.hashes_by_task.shrink_to(min_capacity);
|
self.hashes_by_task.shrink_to(min_capacity);
|
||||||
let hash_builder = self.hashes_by_task.hasher();
|
self.tasks_by_key.shrink_to(min_capacity, |(k, _)| {
|
||||||
self.tasks_by_key
|
self.hashes_by_task.hasher().hash_one(k)
|
||||||
.shrink_to(min_capacity, |(k, _)| hash_one(hash_builder, k))
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Look up a task in the map by its key, returning the key and abort handle.
|
/// Look up a task in the map by its key, returning the key and abort handle.
|
||||||
@@ -743,8 +742,7 @@ where
|
|||||||
Q: ?Sized + Hash + Eq,
|
Q: ?Sized + Hash + Eq,
|
||||||
K: Borrow<Q>,
|
K: Borrow<Q>,
|
||||||
{
|
{
|
||||||
let hash_builder = self.hashes_by_task.hasher();
|
let hash = self.hashes_by_task.hasher().hash_one(key);
|
||||||
let hash = hash_one(hash_builder, key);
|
|
||||||
self.tasks_by_key.find(hash, |(k, _)| k.borrow() == key)
|
self.tasks_by_key.find(hash, |(k, _)| k.borrow() == key)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -765,18 +763,6 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the hash for a given key.
|
|
||||||
#[inline]
|
|
||||||
fn hash_one<S, Q>(hash_builder: &S, key: &Q) -> u64
|
|
||||||
where
|
|
||||||
Q: ?Sized + Hash,
|
|
||||||
S: BuildHasher,
|
|
||||||
{
|
|
||||||
let mut hasher = hash_builder.build_hasher();
|
|
||||||
key.hash(&mut hasher);
|
|
||||||
hasher.finish()
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<K, V, S> JoinMap<K, V, S>
|
impl<K, V, S> JoinMap<K, V, S>
|
||||||
where
|
where
|
||||||
V: 'static,
|
V: 'static,
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ name = "tokio"
|
|||||||
# - Create "v1.x.y" git tag.
|
# - Create "v1.x.y" git tag.
|
||||||
version = "1.47.1"
|
version = "1.47.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.70"
|
rust-version = "1.71"
|
||||||
authors = ["Tokio Contributors <[email protected]>"]
|
authors = ["Tokio Contributors <[email protected]>"]
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|||||||
+3
-2
@@ -186,12 +186,13 @@ When updating this, also update:
|
|||||||
|
|
||||||
Tokio will keep a rolling MSRV (minimum supported rust version) policy of **at
|
Tokio will keep a rolling MSRV (minimum supported rust version) policy of **at
|
||||||
least** 6 months. When increasing the MSRV, the new Rust version must have been
|
least** 6 months. When increasing the MSRV, the new Rust version must have been
|
||||||
released at least six months ago. The current MSRV is 1.70.
|
released at least six months ago. The current MSRV is 1.71.
|
||||||
|
|
||||||
Note that the MSRV is not increased automatically, and only as part of a minor
|
Note that the MSRV is not increased automatically, and only as part of a minor
|
||||||
release. The MSRV history for past minor releases can be found below:
|
release. The MSRV history for past minor releases can be found below:
|
||||||
|
|
||||||
* 1.39 to now - Rust 1.70
|
* 1.48 to now - Rust 1.71
|
||||||
|
* 1.39 to 1.47 - Rust 1.70
|
||||||
* 1.30 to 1.38 - Rust 1.63
|
* 1.30 to 1.38 - Rust 1.63
|
||||||
* 1.27 to 1.29 - Rust 1.56
|
* 1.27 to 1.29 - Rust 1.56
|
||||||
* 1.17 to 1.26 - Rust 1.49
|
* 1.17 to 1.26 - Rust 1.49
|
||||||
|
|||||||
@@ -39,14 +39,8 @@ pub(crate) mod rand {
|
|||||||
|
|
||||||
pub(crate) fn seed() -> u64 {
|
pub(crate) fn seed() -> u64 {
|
||||||
let rand_state = RandomState::new();
|
let rand_state = RandomState::new();
|
||||||
|
|
||||||
let mut hasher = rand_state.build_hasher();
|
|
||||||
|
|
||||||
// Hash some unique-ish data to generate some new state
|
// Hash some unique-ish data to generate some new state
|
||||||
COUNTER.fetch_add(1, Relaxed).hash(&mut hasher);
|
rand_state.hash_one(COUNTER.fetch_add(1, Relaxed))
|
||||||
|
|
||||||
// Get the seed
|
|
||||||
hasher.finish()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user