diff --git a/actix-rt/CHANGES.md b/actix-rt/CHANGES.md index d3b74137..bb786c4c 100644 --- a/actix-rt/CHANGES.md +++ b/actix-rt/CHANGES.md @@ -3,6 +3,13 @@ ## Unreleased - 2021-xx-xx +## 2.0.0 - 2021-02-02 +* Remove all Arbiter-local storage methods. [#???] +* Re-export `tokio::pin`. [#???] + +[#???]: https://github.com/actix/actix-net/pull/??? + + ## 2.0.0-beta.3 - 2021-01-31 * Remove `run_in_tokio`, `attach_to_tokio` and `AsyncSystemRunner`. [#253] * Return `JoinHandle` from `actix_rt::spawn`. [#253] diff --git a/actix-rt/Cargo.toml b/actix-rt/Cargo.toml index 79513580..d8a873ba 100644 --- a/actix-rt/Cargo.toml +++ b/actix-rt/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "actix-rt" -version = "2.0.0-beta.3" +version = "2.0.0" authors = [ "Nikolay Kim ", "Rob Ede ", ] description = "Tokio-based single-threaded async runtime for the Actix ecosystem" -keywords = ["network", "framework", "async", "futures"] +keywords = ["async", "futures", "io", "runtime"] homepage = "https://actix.rs" repository = "https://github.com/actix/actix-net.git" documentation = "https://docs.rs/actix-rt" diff --git a/actix-rt/src/arbiter.rs b/actix-rt/src/arbiter.rs index 72e2d3e3..a3cb5272 100644 --- a/actix-rt/src/arbiter.rs +++ b/actix-rt/src/arbiter.rs @@ -1,7 +1,5 @@ use std::{ - any::{Any, TypeId}, cell::RefCell, - collections::HashMap, fmt, future::Future, pin::Pin, @@ -22,7 +20,6 @@ pub(crate) static COUNT: AtomicUsize = AtomicUsize::new(0); thread_local!( static HANDLE: RefCell> = RefCell::new(None); - static STORAGE: RefCell>> = RefCell::new(HashMap::new()); ); pub(crate) enum ArbiterCommand { @@ -121,7 +118,6 @@ impl Arbiter { System::set_current(sys); - STORAGE.with(|cell| cell.borrow_mut().clear()); HANDLE.with(|cell| *cell.borrow_mut() = Some(hnd.clone())); // register arbiter @@ -156,7 +152,6 @@ impl Arbiter { let hnd = ArbiterHandle::new(tx); HANDLE.with(|cell| *cell.borrow_mut() = Some(hnd.clone())); - STORAGE.with(|cell| cell.borrow_mut().clear()); local.spawn_local(ArbiterRunner { rx }); @@ -214,58 +209,6 @@ impl Arbiter { pub fn join(self) -> thread::Result<()> { self.thread_handle.join() } - - /// Insert item into Arbiter's thread-local storage. - /// - /// Overwrites any item of the same type previously inserted. - #[deprecated = "Will be removed in stable v2."] - pub fn set_item(item: T) { - STORAGE.with(move |cell| cell.borrow_mut().insert(TypeId::of::(), Box::new(item))); - } - - /// Check if Arbiter's thread-local storage contains an item type. - #[deprecated = "Will be removed in stable v2."] - pub fn contains_item() -> bool { - STORAGE.with(move |cell| cell.borrow().contains_key(&TypeId::of::())) - } - - /// Call a function with a shared reference to an item in this Arbiter's thread-local storage. - /// - /// # Panics - /// Panics if item is not in Arbiter's thread-local item storage. - #[deprecated = "Will be removed in stable v2."] - pub fn get_item(mut f: F) -> R - where - F: FnMut(&T) -> R, - { - STORAGE.with(move |cell| { - let st = cell.borrow(); - - let type_id = TypeId::of::(); - let item = st.get(&type_id).and_then(downcast_ref).unwrap(); - - f(item) - }) - } - - /// Call a function with a mutable reference to an item in this Arbiter's thread-local storage. - /// - /// # Panics - /// Panics if item is not in Arbiter's thread-local item storage. - #[deprecated = "Will be removed in stable v2."] - pub fn get_mut_item(mut f: F) -> R - where - F: FnMut(&mut T) -> R, - { - STORAGE.with(move |cell| { - let mut st = cell.borrow_mut(); - - let type_id = TypeId::of::(); - let item = st.get_mut(&type_id).and_then(downcast_mut).unwrap(); - - f(item) - }) - } } /// A persistent future that processes [Arbiter] commands. @@ -296,11 +239,3 @@ impl Future for ArbiterRunner { } } } - -fn downcast_ref(boxed: &Box) -> Option<&T> { - boxed.downcast_ref() -} - -fn downcast_mut(boxed: &mut Box) -> Option<&mut T> { - boxed.downcast_mut() -} diff --git a/actix-rt/src/lib.rs b/actix-rt/src/lib.rs index 9c846203..831958aa 100644 --- a/actix-rt/src/lib.rs +++ b/actix-rt/src/lib.rs @@ -12,7 +12,7 @@ //! //! The disadvantage is that idle threads will not steal work from very busy, stuck or otherwise //! backlogged threads. Tasks that are disproportionately expensive should be offloaded to the -//! blocking thread-pool using [`task::spawn_blocking`]. +//! blocking task thread-pool using [`task::spawn_blocking`]. //! //! # Examples //! ``` @@ -56,6 +56,8 @@ pub use self::arbiter::{Arbiter, ArbiterHandle}; pub use self::runtime::Runtime; pub use self::system::{System, SystemRunner}; +pub use tokio::pin; + pub mod signal { //! Asynchronous signal handling (Tokio re-exports). diff --git a/actix-rt/tests/tests.rs b/actix-rt/tests/tests.rs index 56ac2017..f54e9909 100644 --- a/actix-rt/tests/tests.rs +++ b/actix-rt/tests/tests.rs @@ -140,36 +140,6 @@ fn arbiter_drop_no_panic_fut() { arbiter.join().unwrap(); } -#[test] -#[allow(deprecated)] -fn arbiter_item_storage() { - let _ = System::new(); - - let arbiter = Arbiter::new(); - - assert!(!Arbiter::contains_item::()); - Arbiter::set_item(42u32); - assert!(Arbiter::contains_item::()); - - Arbiter::get_item(|&item: &u32| assert_eq!(item, 42)); - Arbiter::get_mut_item(|&mut item: &mut u32| assert_eq!(item, 42)); - - let thread = thread::spawn(move || { - Arbiter::get_item(|&_item: &u32| unreachable!("u32 not in this thread")); - }) - .join(); - assert!(thread.is_err()); - - let thread = thread::spawn(move || { - Arbiter::get_mut_item(|&mut _item: &mut i8| unreachable!("i8 not in this thread")); - }) - .join(); - assert!(thread.is_err()); - - arbiter.stop(); - arbiter.join().unwrap(); -} - #[test] #[should_panic] fn no_system_current_panic() { diff --git a/actix-server/Cargo.toml b/actix-server/Cargo.toml index a5f112b4..845dc03e 100755 --- a/actix-server/Cargo.toml +++ b/actix-server/Cargo.toml @@ -24,7 +24,7 @@ default = [] [dependencies] actix-codec = "0.4.0-beta.1" -actix-rt = { version = "2.0.0-beta.3", default-features = false } +actix-rt = { version = "2.0.0", default-features = false } actix-service = "2.0.0-beta.3" actix-utils = "3.0.0-beta.1" diff --git a/actix-service/Cargo.toml b/actix-service/Cargo.toml index f83939f2..ce18ba66 100644 --- a/actix-service/Cargo.toml +++ b/actix-service/Cargo.toml @@ -24,5 +24,5 @@ futures-core = { version = "0.3.7", default-features = false } pin-project-lite = "0.2" [dev-dependencies] -actix-rt = "2.0.0-beta.3" +actix-rt = "2.0.0" futures-util = { version = "0.3.7", default-features = false } diff --git a/actix-tls/Cargo.toml b/actix-tls/Cargo.toml index 8c13a2fd..acdd0419 100755 --- a/actix-tls/Cargo.toml +++ b/actix-tls/Cargo.toml @@ -41,7 +41,7 @@ uri = ["http"] [dependencies] actix-codec = "0.4.0-beta.1" -actix-rt = { version = "2.0.0-beta.3", default-features = false } +actix-rt = { version = "2.0.0", default-features = false } actix-service = "2.0.0-beta.3" actix-utils = "3.0.0-beta.1" @@ -67,7 +67,7 @@ tls-native-tls = { package = "native-tls", version = "0.2", optional = true } tokio-native-tls = { version = "0.3", optional = true } [dev-dependencies] -actix-rt = "2.0.0-beta.3" +actix-rt = "2.0.0" actix-server = "2.0.0-beta.2" bytes = "1" env_logger = "0.8" diff --git a/actix-tracing/Cargo.toml b/actix-tracing/Cargo.toml index 24888da3..23d785cb 100644 --- a/actix-tracing/Cargo.toml +++ b/actix-tracing/Cargo.toml @@ -23,5 +23,5 @@ tracing = "0.1" tracing-futures = "0.2" [dev_dependencies] -actix-rt = "2.0.0-beta.3" +actix-rt = "2.0.0" slab = "0.4" diff --git a/actix-utils/Cargo.toml b/actix-utils/Cargo.toml index 468cb8d7..8b19937f 100644 --- a/actix-utils/Cargo.toml +++ b/actix-utils/Cargo.toml @@ -17,7 +17,7 @@ path = "src/lib.rs" [dependencies] actix-codec = "0.4.0-beta.1" -actix-rt = { version = "2.0.0-beta.3", default-features = false } +actix-rt = { version = "2.0.0", default-features = false } actix-service = "2.0.0-beta.3" futures-core = { version = "0.3.7", default-features = false }