--- title: WG-async triage meeting 2024-08-08 tags: ["WG-async", "triage-meeting", "minutes"] date: 2024-08-08 discussion: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/Meeting.202024-08-08 url: https://hackmd.io/qbe18CS-SWmsJHzdZWWzhQ --- # WG-async meeting agenda - Meeting date: 2024-08-08 ## Attendance - People: TC, eholk, Yosh, tmandry ## Scheduled meetings None. Update these [here](https://github.com/orgs/rust-lang/projects/40/views/1). ## Proposed meetings None. Update these [here](https://github.com/orgs/rust-lang/projects/40/views/1). ## Announcements or custom items (Meeting attendees, feel free to add items here!) ## Untriaged issues ### "Weirdness around async function with error "implementation of FnOnce is not general enough"" rust#114177 **Link:** https://github.com/rust-lang/rust/issues/114177 errs note: el classico `Send` bound problem, not fixable Tracking issue: https://github.com/rust-lang/rust/issues/110338 ### "rustc fails to prove `Send`ness for an `async` block where a `!Send` value is dropped before an `.await` point" rust#128095 **Link:** https://github.com/rust-lang/rust/issues/128095 errs note: i'm planning on rebasing and FCPing the PR i linked at the bottom of that ### "Add LocalWaker support" libs-team#191 **Link:** https://github.com/rust-lang/libs-team/issues/191 ### "Context reactor hook" libs-team#347 **Link:** https://github.com/rust-lang/libs-team/issues/347 ## Nominated RFCs, PRs, and issues ### "Add a method for constructing a `Waker` from a `Fn()`" libs-team#415 **Link:** https://github.com/rust-lang/libs-team/issues/415 ```rust use std::{sync::Arc, task::Wake}; struct S; impl Wake for S { fn wake(self: Arc<Self>) { todo!() } } let foo = S; ``` Anonymous trait impl: ```rust let foo = impl Wake { fn wake(self: Arc<Self>) { todo!() } }; ``` `wake_fn`: ```rust let foo = alloc::task::wake_fn(|| todo!()); ``` No captures: ```rust let foo = Waker::from_fn(|| todo!()); ``` After discussion, we agreed that `wake_fn` is well motivated, and we were separately open to a `core::task::Waker::from_fn` that didn't use `Arc`. Summary is here: https://github.com/rust-lang/libs-team/issues/415#issuecomment-2276596757 ### "Generic Futures" rfcs#3434 **Link:** https://github.com/rust-lang/rfcs/pull/3434 ### Misc It'd be nice if the `Into*` traits around futures could work like this: ```rust trait IntoFuture { type Output; async fn into_future(self) -> Self::Output; } // or similar for IntoAsyncGen trait IntoAsyncGen { type Item; async gen fn into_async_gen(self) -> Self::Item; } ``` The trait as it exists today: ```rust pub trait IntoFuture { type Output; type IntoFuture: Future<Output = Self::Output>; fn into_future(self) -> Self::IntoFuture; } ``` Inferred associated types handle this without modifying the trait: ```rust impl T for IntoFuture { type Output = (); async fn into_future(self) -> Self::Output { .. } fn into_future(self) -> impl Future<Output = Self::Output> { .. } } ``` What you can write today with ATPIT: ```rust impl T for IntoFuture { type Output = (); type IntoFuture = impl Future<Output = Self::Output>; async fn into_future(self) -> Self::Output { .. } fn into_future(self) -> Self::IntoFuture { .. } } ``` ### "Tracking Issue for `waker_getters`" rust#96992 **Link:** https://github.com/rust-lang/rust/issues/96992 ### "Tracking Issue for `task::Waker::noop`" rust#98286 **Link:** https://github.com/rust-lang/rust/issues/98286 ### "Rename `AsyncIterator` back to `Stream`, introduce an AFIT-based `AsyncIterator` trait" rust#119550 **Link:** https://github.com/rust-lang/rust/pull/119550 ### "Clarification needed on what happens when `Future::poll` wakes an old waker" rust#119698 **Link:** https://github.com/rust-lang/rust/issues/119698 ### "Context reactor hook" libs-team#347 **Link:** https://github.com/rust-lang/libs-team/issues/347 ## WG RFCs, PRs, and issues nominated for T-lang/T-types None. ## Pending PRs on the WG-async repo None. ## `S-waiting-on-team` ### "Initial support for auto traits with default bounds" rust#120706 **Link:** https://github.com/rust-lang/rust/pull/120706 ### "Rename `AsyncIterator` back to `Stream`, introduce an AFIT-based `AsyncIterator` trait" rust#119550 **Link:** https://github.com/rust-lang/rust/pull/119550 ## Proposed FCPs **Check your boxes!** None. ## Active FCPs ### "Tracking Issue for `Ready::into_inner()`" rust#101196 **Link:** https://github.com/rust-lang/rust/issues/101196 ## P-critical issues None. ## WG-async work project board https://github.com/orgs/rust-lang/projects/29/views1/d