--- title: WG-async triage meeting 2024-10-03 tags: ["WG-async", "triage-meeting", "minutes"] date: 2024-10-03 discussion: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/Meeting.202024-10-03 url: https://hackmd.io/Wztkip1ETQyBcLi4H6LYBw --- # WG-async meeting agenda - Meeting date: 2024-10-03 ## Attendance - People: TC, eholk, yosh ## Meeting roles - Minutes: ## 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 ### "#[inline(never)] does not work for async functions" rust#129347 **Link:** https://github.com/rust-lang/rust/issues/129347 eholk: Perhaps file this under "reasons why `async fn` was a mistake?" eholk: Maybe we should pick a reasonable default and then say you can desugar manually to control what the attribute applies to. This approach means we'd have to allow `#[inline]` on `async { }`. ```rust // for maximum control, you should be allowed to add either attribute at your option #[inline(never)] fn foo() -> impl Future<Output = ()> { #[inline(never)] async { () } } ``` - Probably want this to apply to both the function and to `poll`. - Probably want people to desugar if they need better control than that. ### "async code fails to compile with `-Znext-solver`" rust#129865 **Link:** https://github.com/rust-lang/rust/issues/129865 We replied to the submitter asking for a self-standing reproduction. ### "Bogus "implementation of `<whatever trait you want>` is not general enough" with RPITIT + async" rust#130113 **Link:** https://github.com/rust-lang/rust/issues/130113 We're replying with the tracking issues that lists all of these duplicates and near-duplicates. ### "Outlives requirements are not implied in the return type of `async fn`, and generally for RPIT" rust#130935 **Link:** https://github.com/rust-lang/rust/issues/130935 ```rust fn f<'a, T>() -> impl Future<Output = &'a T> { async { loop {} } //~^ ERROR the parameter type `T` may not live long enough } ``` This is OK: ```rust fn f<'a, T: 'a>() -> impl Future<Output = &'a T> { async { loop {} } } ``` This is also OK: ```rust fn f<'a, T>() -> &'a T { loop {} } ``` But this is not OK: ```rust async fn f<'a, T>() -> &'a T { //~^ ERROR the parameter type `T` may not live long enough loop {} } ``` This is about the behavior of implied bounds. ### "ICE: index out of bounds, instrument coverage" rust#131190 **Link:** https://github.com/rust-lang/rust/issues/131190 Interesting! ## Interesting aside Bonus points for explaining why this is true... ```rust struct S; impl From<Box<()>> for S { fn from(_: Box<()>) -> Self { S } } fn main() { let x: Box<_> = loop {}; //let _: S = x.into(); //~ ERROR type annotations needed // Receivers: // - Box<_> // - &Box<_> // - &mut Box<_> // - _ (?0) // <--- ERROR // - &?0 // - &mut ?0 let _: S = <_>::into(x); //~ OK } ``` ## Nominated RFCs, PRs, and issues ### "Generic Futures" rfcs#3434 **Link:** https://github.com/rust-lang/rfcs/pull/3434 ### "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 ### "Overly conservative async capture analysis when values are borrowed" rust#129325 **Link:** https://github.com/rust-lang/rust/issues/129325 ### "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` ### "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 None. ## P-critical issues None. ## WG-async work project board https://github.com/orgs/rust-lang/projects/29/views1/d