Compare commits

...
Author SHA1 Message Date
Alice Ryhl 2afa276c8c chore: prepare Tokio 0.2.25 (#3478) 2021-01-28 15:35:37 +01:00
Alice Ryhl 312c981e3f runtime: update panic messages to include version (#3460) 2021-01-28 14:39:15 +01:00
Linus Färnstrand 62e24b710c chore: upgrade mio dependency (#3207)
Brings in versions of net2 and miow that does not make invalid
memory layout assumptions on std::net::SocketAddr
2021-01-21 09:21:19 -08:00
Nylonicious dccc58aa37 task: add missing feature flags for task_local (#3236) 2020-12-10 08:29:12 +01:00
Luke Steensen 95b943506b chore: prepare 0.2.24 release (#3227) 2020-12-09 11:58:11 -05:00
Carl Lerche 3d17488d9a sync: fix mpsc bug related to closing the channel (#3215)
When closing a channel, it is possible to get into an invalid state when
outstanding permits release capacity back to the channel.
2020-12-07 11:04:37 -08:00
Alice Ryhl c63057ebc5 chore: prepare v0.2.23 release (#3114) 2020-11-12 11:40:26 -08:00
Alice Ryhl 1016de28fc ci: minimal version check (v0.2.x) (#3132) 2020-11-12 10:25:36 +01:00
13 changed files with 115 additions and 15 deletions
+20
View File
@@ -171,6 +171,26 @@ jobs:
- name: "test --workspace --all-features"
run: cargo check --workspace --all-features
minimal-versions:
name: minimal-versions
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.nightly }}
override: true
- name: Install cargo-hack
run: cargo install cargo-hack
- name: "check --all-features -Z minimal-versions"
run: |
# Remove dev-dependencies from Cargo.toml to prevent the next `cargo update`
# from determining minimal versions based on dev-dependencies.
cargo hack --remove-dev-deps --workspace
# Update Cargo.lock to minimal version dependencies.
cargo update -Z minimal-versions
cargo check --all-features
fmt:
name: fmt
runs-on: ubuntu-latest
+1 -1
View File
@@ -38,7 +38,7 @@ bytes = "0.5.0"
futures-core = "0.3.0"
futures-sink = "0.3.0"
futures-io = { version = "0.3.0", optional = true }
log = "0.4"
log = "0.4.6"
pin-project-lite = "0.1.4"
[dev-dependencies]
+49
View File
@@ -1,3 +1,52 @@
# 0.2.25 (January 28, 2021)
### Changes
- chore: upgrade mio dependency (#3207)
- runtime: update panic messages to include version (#3460)
### Fixes
- task: add missing feature flags for `task_local` (#3236)
# 0.2.24 (December 7, 2020)
### Fixes
- sync: fix mpsc bug related to closing the channel (#3215)
# 0.2.23 (November 12, 2020)
### Fixes
- time: report correct error for timers that exceed max duration (#2023)
- time: fix resetting expired timers causing panics (#2587)
- macros: silence `unreachable_code` warning in `select!` (#2678)
- rt: fix potential leak during runtime shutdown (#2649)
- sync: fix missing notification during mpsc close (#2854)
### Changes
- io: always re-export `std::io` (#2606)
- dependencies: update `parking_lot` dependency to 0.11.0 (#2676)
- io: rewrite `read_to_end` and `read_to_string` (#2560)
- coop: reset coop budget when blocking in `block_on` (#2711)
- sync: better Debug for Mutex (#2725)
- net: make `UnixListener::poll_accept` public (#2880)
- dep: raise `lazy_static` to `1.4.0` (#3132)
- dep: raise `slab` to `0.4.2` (#3132)
### Added
- io: add `io::duplex()` as bidirectional reader/writer (#2661)
- net: introduce split and `into_split` on `UnixDatagram` (#2557)
- net: ensure that unix sockets have both `split` and `into_split` (#2687)
- net: add `try_recv`/`from` & `try_send`/`to` to UnixDatagram (#1677)
- net: Add `UdpSocket::{try_send,try_send_to}` methods (#1979)
- net: implement `ToSocketAddrs` for `(String, u16)` (#2724)
- io: add `ReaderStream` (#2714)
- sync: implement map methods (#2771)
# 0.2.22 (July 21, 2020)
### Fixes
+6 -6
View File
@@ -8,12 +8,12 @@ name = "tokio"
# - README.md
# - Update CHANGELOG.md.
# - Create "v0.2.x" git tag.
version = "0.2.22"
version = "0.2.25"
edition = "2018"
authors = ["Tokio Contributors <[email protected]>"]
license = "MIT"
readme = "README.md"
documentation = "https://docs.rs/tokio/0.2.22/tokio/"
documentation = "https://docs.rs/tokio/0.2.25/tokio/"
repository = "https://github.com/tokio-rs/tokio"
homepage = "https://tokio.rs"
description = """
@@ -91,7 +91,7 @@ udp = ["io-driver"]
uds = ["io-driver", "mio-uds", "libc"]
[dependencies]
tokio-macros = { version = "0.2.4", path = "../tokio-macros", optional = true }
tokio-macros = { version = "0.2.6", optional = true }
bytes = "0.5.0"
pin-project-lite = "0.1.1"
@@ -99,13 +99,13 @@ pin-project-lite = "0.1.1"
# Everything else is optional...
fnv = { version = "1.0.6", optional = true }
futures-core = { version = "0.3.0", optional = true }
lazy_static = { version = "1.0.2", optional = true }
lazy_static = { version = "1.4.0", optional = true }
memchr = { version = "2.2", optional = true }
mio = { version = "0.6.20", optional = true }
mio = { version = "0.6.23", optional = true }
iovec = { version = "0.1.4", optional = true }
num_cpus = { version = "1.8.0", optional = true }
parking_lot = { version = "0.11.0", optional = true } # Not in full
slab = { version = "0.4.1", optional = true } # Backs `DelayQueue`
slab = { version = "0.4.2", optional = true } # Backs `DelayQueue`
tracing = { version = "0.1.16", default-features = false, features = ["std"], optional = true } # Not in full
[target.'cfg(unix)'.dependencies]
+3 -2
View File
@@ -200,8 +200,9 @@ impl Handle {
///
/// This function panics if there is no current reactor set.
pub(super) fn current() -> Self {
context::io_handle()
.expect("there is no reactor running, must be called from the context of Tokio runtime")
context::io_handle().expect(
"there is no reactor running, must be called from the context of a Tokio 0.2.x runtime",
)
}
/// Forces a reactor blocked in a call to `turn` to wakeup, or otherwise
+1 -1
View File
@@ -1,4 +1,4 @@
#![doc(html_root_url = "https://docs.rs/tokio/0.2.22")]
#![doc(html_root_url = "https://docs.rs/tokio/0.2.25")]
#![allow(
clippy::cognitive_complexity,
clippy::large_enum_variant,
+1 -1
View File
@@ -115,7 +115,7 @@ impl Handle {
/// # }
/// ```
pub fn current() -> Self {
context::current().expect("not currently running on the Tokio runtime.")
context::current().expect("not currently running on a Tokio 0.2.x runtime.")
}
/// Returns a Handle view over the currently running Runtime
-1
View File
@@ -957,7 +957,6 @@ where
#[cfg(feature = "stream")]
#[doc(hidden)]
#[deprecated(since = "0.2.21", note = "use `into_stream()`")]
impl<T> crate::stream::Stream for Receiver<T>
where
T: Clone,
+4
View File
@@ -917,6 +917,10 @@ impl Waiter {
let mut curr = WaiterState(self.state.load(Acquire));
loop {
if curr.is_closed() {
return 0;
}
if !curr.is_queued() {
assert_eq!(0, curr.permits_to_acquire());
}
+1 -1
View File
@@ -128,7 +128,7 @@ doc_rt_core! {
T::Output: Send + 'static,
{
let spawn_handle = runtime::context::spawn_handle()
.expect("must be called from the context of Tokio runtime configured with either `basic_scheduler` or `threaded_scheduler`");
.expect("must be called from the context of a Tokio 0.2.x runtime configured with either `basic_scheduler` or `threaded_scheduler`");
let task = crate::util::trace::task(task, "task");
spawn_handle.spawn(task)
}
+2
View File
@@ -31,6 +31,7 @@ use std::{fmt, thread};
///
/// [`tokio::task::LocalKey`]: struct@crate::task::LocalKey
#[macro_export]
#[cfg_attr(docsrs, doc(cfg(all(feature = "rt-util", feature = "rt-core"))))]
macro_rules! task_local {
// empty (base case for the recursion)
() => {};
@@ -90,6 +91,7 @@ macro_rules! __task_local_inner {
/// # }
/// ```
/// [`std::thread::LocalKey`]: struct@std::thread::LocalKey
#[cfg_attr(docsrs, doc(cfg(all(feature = "rt-util", feature = "rt-core"))))]
pub struct LocalKey<T: 'static> {
#[doc(hidden)]
pub inner: thread::LocalKey<RefCell<Option<T>>>,
+3 -2
View File
@@ -21,8 +21,9 @@ impl Handle {
///
/// This function panics if there is no current timer set.
pub(crate) fn current() -> Self {
context::time_handle()
.expect("there is no timer running, must be called from the context of Tokio runtime")
context::time_handle().expect(
"there is no timer running, must be called from the context of a Tokio 0.2.x runtime",
)
}
/// Tries to return a strong ref to the inner
+24
View File
@@ -512,3 +512,27 @@ fn ready_close_cancel_bounded() {
assert!(recv.is_woken());
}
#[tokio::test]
async fn permit_available_not_acquired_close() {
use futures::future::poll_fn;
let (mut tx1, mut rx) = mpsc::channel::<()>(1);
let mut tx2 = tx1.clone();
{
let mut ready = task::spawn(poll_fn(|cx| tx1.poll_ready(cx)));
assert_ready_ok!(ready.poll());
}
let mut ready = task::spawn(poll_fn(|cx| tx2.poll_ready(cx)));
assert_pending!(ready.poll());
rx.close();
drop(tx1);
assert!(ready.is_woken());
drop(tx2);
assert!(rx.recv().await.is_none());
}