Try   HackMD

WG-async meeting agenda

  • Meeting date: 2024-08-08

Attendance

  • People: TC, eholk, Yosh, tmandry

Scheduled meetings

None.

Update these here.

Proposed meetings

None.

Update these here.

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 Sendness 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

use std::{sync::Arc, task::Wake};

struct S;
impl Wake for S {
    fn wake(self: Arc<Self>) {
        todo!()
    }
}
let foo = S;

Anonymous trait impl:

let foo = impl Wake {    
    fn wake(self: Arc<Self>) {
        todo!()
    }
};

wake_fn:

let foo = alloc::task::wake_fn(|| todo!());

No captures:

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:

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:

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:

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:

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