owned this note
owned this note
Published
Linked with GitHub
---
title: "wg-async sprint planning meeting"
tags: WG-async
url: https://hackmd.io/gPgXC4fsTZOgOnd-Bwhoag
---
# wg-async sprint planning meeting
<details><summary>Template</summary>
## Template
<!-- TODO: Link header to Zulip thread -->
### Agenda
- Announcements and other updates
- Update sprint doc
- Sprint retrospective
- Identify sprint goals
- Plan meetings for the next month
### Sprint goals
<!-- This is the template, you probably don't want to
edit this. -->
#### General
#### Async fundamentals
#### Polish
Goals:
Issues: ([project board])
#### Portability across runtimes
#### Tooling
#### Keyword Generics
#### Onboarding
</details>
[polish issues]: https://github.com/orgs/rust-lang/projects/29
[project board]: https://github.com/orgs/rust-lang/projects/29
<!-- BEGIN MEETING NOTES -->
## [January 2024] (2024-01-03 - 2024-01-31)
[January 2024]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/Planning.20meeting.202023-01-04
### Agenda
- Announcements and other updates
- Update sprint doc
- Sprint retrospective
- Identify sprint goals
- Plan meetings for the next month
### Sprint goals
#### General
- [ ] (tmandry) Publish my (personal) roadmap thoughts
- [ ] (compiler-errors) MVP implementation of correctly-functioning `async` closures (i.e. able to borrow from the closure)
- [ ] (yosh) Publish design post for `async Drop`
- [ ] (yosh) Land a draft RFC for maybe-async trait definitions in the effects initiative repo (stretch goal)
#### Async fundamentals
- [x] (eholk) Publish blog post(s) on potential mechanisms for implementing async cancellation
- Published https://theincredibleholk.org/blog/2023/11/14/a-mechanism-for-async-cancellation/ and https://theincredibleholk.org/blog/2023/11/08/cancellation-async-state-machines/
- [ ] (vincenzopalazzo): deeep drive Context reactor hook https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/Context.20reactor.20hook/near/39918898
#### Polish
Goals:
Issues: ([project board])
#### Portability across runtimes
#### Tooling
#### Keyword Generics
#### Onboarding
#### Async fundamentals
## [December 2023] (12/08 - 2024-01-03)
Skipped for the holidays.
## [November 2023] (11/02 - 12/07)
[November 2023]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/Sprint.20planning.202023-11-02
### Agenda
- Announcements and other updates
- Update sprint doc
- Sprint retrospective
- Identify sprint goals
- Plan meetings for the next month
### Sprint goals
#### General
#### Async fundamentals
- [x] (eholk) Publish blog post(s) on potential mechanisms for implementing async cancellation
- Published https://theincredibleholk.org/blog/2023/11/14/a-mechanism-for-async-cancellation/ and https://theincredibleholk.org/blog/2023/11/08/cancellation-async-state-machines/
- [ ] (vincenzopalazzo): deeep drive Context reactor hook https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/Context.20reactor.20hook/near/39918898
#### Polish
Goals:
Issues: ([project board])
#### Portability across runtimes
#### Tooling
#### Keyword Generics
#### Onboarding
## [October 2023] (10/5 - 11/2)
[October 2023]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/sprint.20planning.202023-10-05
### Agenda
- Announcements and other updates
- Update sprint doc
- Sprint retrospective
- Identify sprint goals
- Plan meetings for the next month
### Sprint goals
#### General
- [ ] (vincenzopalazzo): Working on the board https://github.com/orgs/rust-lang/projects/34/views/1
#### Async fundamentals
- [ ] (eholk) Publish blog post(s) on potential mechanisms for implementing async cancellation
- Status: made progress but still not published. Should be done this sprint... 🤞
- [x] (TC) Restart conversation around TAIT/ATPIT
#### Polish
Goals:
Issues: ([project board])
#### Portability across runtimes
- [ ] (vincenzopalazzo): compare tokio and async std on how they expand async main
#### Tooling
#### Keyword Generics
#### Onboarding
## [September 2023] (8/31 - 10/5)
[September 2023]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/sprint.20planning.202023-08-31
### Agenda
- Update sprint doc
- Sprint retrospective
- Identify sprint goals
- Plan meetings for the next month
### Sprint goals
#### General
- [ ] (vincenzopalazzo): compare tokio and async std on how they expand async main
#### Async fundamentals
- [x] (TC) [RFC](https://github.com/rust-lang/rfcs/pull/3498) for 2024 lifetime capture rules
- [ ] (tmandry) Restart conversation around RTN
- [ ] (TC) Restart conversation around TAIT/ATPIT
- [x] (tmandry) Make sure there's a plan for stabilization PRs
- [ ] (vincenzopalazzo): deeep drive Context reactor hook https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/Context.20reactor.20hook/near/399188988
#### Polish
Goals:
- [x] (vincenzopalazzo): Deep drive on the issue https://github.com/rust-lang/rust/issues/74497
- [ ] (vincenzopalazzo): Working on the board https://github.com/orgs/rust-lang/projects/34/views/1
- [x] (vincenzopalazzo): Looking at the issue https://github.com/rust-lang/rust/issues/114912
Issues: ([project board])
- [ ] (vincenzopalazzo): compare tokio and async std on how they expand async main
- [ ] (vincenzopalazzo):(Implementing) deeep drive Context reactor hook https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/Context.20reactor.20hook
#### Portability across runtimes
#### Tooling
#### Keyword Generics
#### Onboarding
## [August 2023] (8/3 - 9/7)
[August 2023]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/sprint.20planning.202023-08-03
### Agenda
- Update sprint doc
- Sprint retrospective
- Identify sprint goals
- Plan meetings for the next month
### Sprint goals
#### General
#### Async fundamentals
- [ ] (TC) RFC for RPIT capture rules
- [ ] (tmandry) Restart conversation around RTN
- Status: not done :(
- [ ] (tmandry) Make sure there's a plan for stabilization PRs
- Status: blocked
#### Polish
Goals:
- [ ] (vincenzopalazzo): Deep drive on the issue https://github.com/rust-lang/rust/issues/74497
- [ ] (vincenzopalazzo): Working on the board https://github.com/orgs/rust-lang/projects/34/views/1
Issues: ([project board])
- [ ] (vincenzopalazzo): compare tokio and async std on how they expand async main
- [ ] (vincenzopalazzo):(Implementing) deeep drive Context reactor hook https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/Context.20reactor.20hook
#### Portability across runtimes
#### Tooling
#### Keyword Generics
#### Onboarding
## [July 2023] (7/6 - 8/3)
[July 2023]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/sprint.20planning.202023-07-06
### Agenda
- Update sprint doc
- Sprint retrospective
- Identify sprint goals
- Plan meetings for the next month
### Sprint goals
#### General
#### Async fundamentals
- [ ] (yosh) Write blog post on async drop
- [ ] (nikomatsakis) Post RFC for Associated Return Types / Return Type Notation
- [x] (tmandry) Help prep a lang team discussion for [#112194](https://github.com/rust-lang/rust/issues/112194)
- Status: Discussion happened last week that gives us a clear path forward, 🎉
#### Polish
Issues: ([project board])
Goals:
- [ ] (vincenzopalazzo): Deep drive on the issue https://github.com/rust-lang/rust/issues/74497
#### Portability across runtimes
- [ ] (vincenzopalazzo): compare tokio and async std on how they expand async main
- [x] (vincenzopalazzo): deeep drive Context reactor hook https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/Context.20reactor.20hook
- Status: reading and understand how the pattern was applied, and now planning to implement inside rio
#### Tooling
#### Keyword Generics
#### Onboarding
## [June 2023] (6/1 - 7/6)
[June 2023]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/planning.20meeting.202023-06-01
### Agenda
- Update sprint doc
- Sprint retrospective
- Identify sprint goals
- Plan meetings for the next month
### Sprint goals
#### General
#### Async fundamentals
- [ ] (nikomatsakis) Post RFC for Associated Return Types / Return Type Notation
- [x] (tmandry) Respond to RPITIT RFC comments
- Status: I think I got to most of these
- [ ] (tmandry) Write a high-level plan for async iterators
#### Polish
Goals:
- [x] (vincenzopalazzo): Working on the issue https://github.com/rust-lang/rust/issues/74497 and discuss in the triage meeting
Issues: ([project board])
#### Portability across runtimes
- [ ] (vincenzopalazzo): compare tokio and async std on how they expand async main
#### Tooling
#### Keyword Generics
#### Onboarding
## [May 2023] (5/4 - 6/1)
[May 2023]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/planning.20meeting.202023-05-04
### Agenda
- Update sprint doc
- Sprint retrospective
- Identify sprint goals and [polish issues]
- Plan meetings for the next month
### Sprint goals
#### General
- [ ] (tmandry/nikomatsakis) Draft/outline decision doc on 2024 goals
#### Async fundamentals
- [ ] (tmandry,nikomatsakis) Write a high-level plan for:
- [x] [async closures](https://rust-lang.github.io/async-fundamentals-initiative/roadmap/async_closures.html)
- [ ] async iterators
- [ ] (eholk, tmandry, nikomatsakis) Post RFC for Associated Return Types
- Status: not yet but did have a meeting with the lang team.
- [x] (nikomatsakis,tmandry) Discuss capture rules and `#[refine]` for RPITIT, identify any blockers
#### Polish
Goals:
- [x] (vincenzopalazzo): Nominate and discuss for the next triage meeting https://github.com/rust-lang/rust/issues/74497
Issues: ([project board])
#### Portability across runtimes
- [ ] (vincenzopalazzo): compare tokio and async std on how they expand async main
#### Tooling
#### Keyword Generics
#### Onboarding
## [April 2023] (4/6 - 5/4)
[April 2023]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/planning.20meeting.202023-04-06
### Agenda
- Update sprint doc
- Sprint retrospective
- Identify sprint goals and [polish issues]
- Plan meetings for the next month
### Sprint goals
#### General
- [x] (tmandry) Blog post about 2023 goals
- [ ] (tmandry/nikomatsakis) Make a decision on 2024 goals
#### Async fundamentals
- [ ] (luciofranco) Tower AFIT case study
- [ ] (eholk) Finish off RTN RFC draft, get it ready to post
- Status: Still working on it
- [ ] (nikomatsakis) Write trait transformers RFC
- Status: Not planned
- [x] (tmandry,nikomatsakis) Make a decision on Send bound approach
- [ ] (tmandry,nikomatsakis) Write a high-level plan for:
- [ ] async closures
- [ ] async iterators
- Status: Had some thoughts on closures but haven't had time to write them down yet
- [x] (tmandry, maybe compiler-errors) Resurrect and revise RPITIT RFC
#### Polish
Goals:
- [x] (vincenzopalazzo): working on resurrect the following board issue https://github.com/rust-lang/rust/issues/74497
Issues: ([project board])
#### Portability across runtimes
- [ ] (vincenzopalazzo): compare tokio and async std on how they expand async main
#### Tooling
- [x] (vincenzopalazzo) Improve the query code for the triage bot
#### Keyword Generics
#### Onboarding
- [x] (vincenzopalazzo) Mentoring on this issue https://github.com/rust-lang/rust/issues/107899
## [March 2023] (3/2 - 4/6)
[March 2023]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/planning.20meeting.202023-03-02
### Agenda
- Update sprint doc
- Sprint retrospective
- Identify sprint goals and [polish issues]
- Plan meetings for the next month
### Sprint goals
#### General
- [x] (tmandry,nikomatsakis) Revise vision and get doc ready for next deep dive
- [x] (tmandry) Experiement with Github projects for tracking the vision
- [ ] (tmandry/nikomatsakis; stretch) Publish vision blog post (will do next month if not this month)
#### Async fundamentals
- [ ] (eholk) Post RFC for async Send bounds
- Status: Draft available [here](https://hackmd.io/KJaC_dhZTmyR_Ja9ghdZvg)st.
- [ ] (eholk) Prototype async Send bounds implementation
- Status: Didn't happen / deprioritized
- [ ] (tmandry,nikomatsakis) Get all AFIT case studies scheduled
- [ ] (tmandry,nikomatsakis) Discuss and write a high-level plan for: async closures, async iterators, dyn dispatch
- Status: Discussed closures and iterators, but haven't produced a plan yet
- [ ] (tmandry) Resurrect and revise RPITIT RFC to be ready to post (and maybe post it)
#### Polish
Goals:
- [ ] (eholk, possibly triage meeting) Revisit issues, close the ones that seem fixed well enough
- Status: didn't happen
- [x] (vincenzopalazzo): working on resurrect the following board issue https://github.com/rust-lang/rust/issues/74497
Issues: ([project board])
#### Portability across runtimes
- [ ] (vincenzopalazzo): compare tokio and async std on how they expand async main
#### Tooling
- [x] (vincenzopalazzo) Improve the query code for the triage bot
#### Keyword Generics
#### Onboarding
- [x] (vincenzopalazzo) Mentoring on this issue https://github.com/rust-lang/rust/issues/107899
## [2023-02-02 - 2023-03-02]
[2023-02-02 - 2023-03-02]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/Planning.20meeting.202023-02-02
### Agenda
- Update sprint doc
- Sprint retrospective
- Identify sprint goals and [polish issues]
- Plan meetings for the next month
### Sprint goals
#### General
* [ ] (tmandry, nikomatsakis) Finish initial outline for 2024 Vision Doc revamp, share with the wg for feedback
* Status: Had a deep dive, more revision left to do
#### Async fundamentals
- [ ] (eholk) Get "lucky AFIDT" working, where it works if the returned future just happens to be `PointerSized`.
- Status: didn't make much progress here because I was focused on async Send bounds instead
* [ ] (nikomatsakis) Another blog post on return type notation / Send bounds
* [ ] (tmandry) Write down questions around AFIT that we have for maintainers of popular crates
* Status: Had some conversations, but not a formal list written down
* [ ] (tmandry, stretch) Start drafting RFC for return type notation
* Ping compiler-errors to collaborate
* Status: Not started
#### Polish
Goals:
- [ ] (eholk, possibly triage meeting) Revisit issues, close the ones that seem fixed well enough
- Status: didn't do it :(
- [ ] (eholk) get a solid reduced test case for a "higher ranked lifetime error."
- Started working on this and realized we already had a pretty reasonable test case on some other issues
- [x] (vincenzopalazzo): finish the patch for https://github.com/rust-lang/rust/issues/80658
- [x] proposed patch https://github.com/rust-lang/rust/pull/107902
Issues: ([project board])
#### Portability across runtimes
- [x] (vincenzopalazzo): finsih the runtime abstraction (related PR https://github.com/vincenzopalazzo/rio/pull/15)
- Started to deep drive insied the async runtime implementation such as tokio to see how the async main is implemented.
#### Tooling
- [x] (vincenzopalazzo): improve penguing https://github.com/vincenzopalazzo/penguin/issues/3
- [x] Some improvments https://github.com/vincenzopalazzo/penguin/pull/8
#### Keyword Generics
#### Onboarding
## [2023-01-12 - 2023-02-02]
[2023-01-12 - 2023-02-02]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/planning.20meeting.202023-01-12
### Agenda
- Update sprint doc
- Sprint retrospective
- Identify sprint goals and [polish issues]
- Plan meetings for the next month
### Sprint goals
#### General
#### Async fundamentals
- [ ] (Yosh): author first async concurrency RFC ("join")
- [ ] (Yosh): publish first blog post on async Drop
- [ ] (Yosh): publish blog post explaining structured concurrency in Rust
- [ ] (Yosh): publish blog post on halt points
- Async Fn in Dyn Trait (AFIDT)
- [ ] (eholk): Blog post discussing AFIDT wrappers, like `Boxing<T>`
- Status: not exactly the one I meant to write, but I did get this post out: https://blog.theincredibleholk.org/blog/2023/01/24/who-makes-the-boxes/
- [ ] (eholk): prototype AFIDT for impls that just work by luck (i.e. the futures just happen to be word sized and coercible into `dyn*`)
- Status: in progress, branch at https://github.com/eholk/rust/tree/afidt
- [ ] (tmandry): Blog post on return type notation and Send bounds
- [ ] First draft
- [ ] PR is up
- [ ] Published
- Status: Niko published https://smallcultfollowing.com/babysteps/blog/2023/02/01/async-trait-send-bounds-part-1-intro/
- [ ] (tmandry): Schedule a deep dive on AFIT in the real world
- Status: Unsuccessful ☠️
#### Polish
Goals:
- [ ] (eholk): Make a doc of polish issues that would be good for pairing on next month
- Status: didn't get through all the issues, but I did make a few notes here: https://hackmd.io/wrN1Kti-RDuIxKNFTYdYqw
Issues: ([project board])
- [x] (eholk): https://github.com/rust-lang/rust/issues/102383 - merge fix and do another crater run
- Status: crater run found more ICEs that I haven't had time to investigate yet.
- [ ] (vincenzopalazzo): finish the patch for https://github.com/rust-lang/rust/issues/80658
#### Portability across runtimes
- [ ] (Yosh): publish blog post with feedback on Nick's async IO trait designs
#### Tooling
#### Keyword Generics
- (Yosh): publish six-month project update on the internals blog (tldr for here: things are going really well!)
#### Onboarding
- [ ] (vincenzopalazzo): improve penguing https://github.com/vincenzopalazzo/penguin/issues/3
## 2022-12-01 - 2023-01-05
<!-- TODO: Link header to Zulip thread -->
### Agenda
- Update sprint doc
- Sprint retrospective
- Identify sprint goals and [polish issues]
- Plan meetings for the next month
### Sprint goals
#### General
#### Async fundamentals
- (eholk) AFIDT
- [ ] Get started implementing a version of dyn* conversion traits
- Probably not so urgent to get AFIDT working
- [x] Document where we are and where we need to get to in order to light up AFIDT
- https://blog.theincredibleholk.org/blog/2022/12/19/async-fn-in-trait-object-update/
- (tmandry+nikomatsakis) Return type notation
- [x] Decide next step (blog post, design meeting, etc)
- [ ] Produce first draft of materials for this step
#### Polish
Goals:
- [ ] Firm up a process for revisiting old issues (`I-async-nominated`)
Issues: ([project board])
#### Portability across runtimes
#### Tooling
#### Keyword Generics
#### Onboarding
## [2022-11-10] - 2022-12-01
[2022-11-10]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/planning.20meeting.202022-11-10
### Agenda
- Update sprint doc
- Sprint retrospective
- Identify sprint goals and [polish issues]
- Plan meetings for the next month
### Sprint goals
#### General
#### Async fundamentals
* [x] (tmandry) Finish revising and post AFIT blog post
* Status: Posted
* [ ] (tmandry or nikomatsakis) Draft blog post about "return type notation"
* Status: We drafted something, more reference-level/design review material, but aren't sure what to do with it just yet
* [ ] (eholk) Do another pass on `dyn*` conversion traits
* Status: I don't think much significant happened here
* [ ] (vincenzopalazzo) discuss with team how move on the initiative [Async Main and Test initiative](https://vincenzopalazzo.github.io/async-main-and-tests-initiative/index.html)
* [ ] (bryangarza) Create up-to-date list of AFIT tests (what we have vs what is missing) Consolidate https://hackmd.io/SwRcXCiWQV-WRJ4BYs53fA + https://hackmd.io/oz-pwQhNRPa3gFykJkGdpA
- [ ] (yosh) continue work on `futures-concurrency`, bringing it up to production quality in preparation for the RFC
#### Polish
Goals:
* [ ] (eholk) Spend some more time defining and refining goals. Take a pass over the project board and make sure it's up to date.
* Status: we had a backlog review session and are working on plans to revisit old issues periodically
Issues: ([project board])
- [ ] (vincenzopalazzo) Move the discussion of [#102201](https://github.com/rust-lang/rust/issues/102201) t-type team
- [ ] (vincenzopalazzo) Investicate the example [#102211](https://github.com/rust-lang/rust/issues/102211) (Bogus higher-ranked lifetime error in an async block)
- [ ] (bryangarza) Fix [#102383](https://github.com/rust-lang/rust/issues/102383) (Drop tracking ICE involving await in left hand side of assignment)
* [ ] (pnkfelix) prototype fix for #62958
#### Portability across runtimes
#### Tooling
* [ ] (tmandry) Open a PR to rust-dbg-ext with support library demo
* Status: I have a branch up. It needs cleanup, no PR yet.
#### Keyword Generics
#### Onboarding
- [ ] (vincenzopalazzo): make smarted the triage bot to be able to resurrect old issues
## [2022-10-06] - 2022-11-03
[2022-10-06]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/sprint.20planning.202022-10-06
### Agenda
- Update sprint doc
- Sprint retrospective
- Identify sprint goals and [polish issues]
- Plan meetings for the next month
### Sprint goals
#### General
* [ ] (nrc) status update blog post
* [ ] (yosh) halt points blog post
* [ ] (yosh) first draft of async iteration RFC
#### Async fundamentals
* [ ] (tmandry/nikomatsakis) Write stakeholder meeting summary
* Status: Not started
* [x] (tmandry) Put stakeholder meeting notes on initiative site
* Status: Done
* [x] (tmandry) Write blog post about giving AFIT impl a spin
* Status: Written but needs to be revised some, then posted
* [ ] (tmandry or nikomatsakis) Write blog post about "return type notation"
* Status: Not started
* [ ] (tmandry or nikomatsakis) RPITIT test listing
* Status: Not started
* [ ] (tmandry/nikomatsakis/eholk) Prep for deep dive
* Status: Cancelled/postponed
* [ ] (eholk) First pass at `dyn*` conversion traits
* [ ] Share design with group
* Status: Wrote up a [doc](https://hackmd.io/tNiv30enTJ6lGwnFx_lE6w), had a design meeting. Discovered some of the fundamental tradeoffs and got some new proposals. Still need to finalize and implement though.
* [ ] Do initial implementation of traits, using them for conversion into and from `dyn*`.
#### Polish
Goals:
* [ ] (eholk) Fix remaining drop tracking issues
* Status: on hold while we see how https://github.com/rust-lang/rust/pull/101692 shakes out.
* [ ] (pnkfelix) investigate #62958: discussed with @compiler-errors, working on prototype fix
Issues: ([project board])
- [ ] (eholk) Fix [#102383](https://github.com/rust-lang/rust/issues/102383) (needed to enable drop-tracking)
- [ ] (vincenzopalazzo) Clarify and Fix [#102201](https://github.com/rust-lang/rust/issues/102201) (need to improve suggestion)
- [ ] (vincenzopalazzo) Reproduce and Investigate [#102211](https://github.com/rust-lang/rust/issues/102211) (Bogus higher-ranked lifetime error in an async block)
#### Portability across runtimes
- [ ] (nrc) incorporate feedback on IO traits proposal
- [ ] (nrc) continue research on executor abstraction
- [ ] (nrc) comment on runtime trait proposal (https://github.com/nrc/portable-interoperable/issues/13) (by comment, I mean participate in the discussion there, which requires some research, above point)
#### Tooling
- [ ] (pnkfelix) got [response](https://github.com/rust-lang/rust/issues/95521#issuecomment-1277592961) from mw regarding #95521 ; also @jswrenn is prototyping async backtrace support in various ways.
#### Keyword Generics
#### Onboarding
- [ ] (vincenzopalazzo): Implementing agenda generator for triage with [rio](https://github.com/vincenzopalazzo/rio)
- [x] Bug Fixing on Rio Runtime
## [2022-09-08] - 2022-10-06
[2022-09-08]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/sprint.20planning.202022-09-08
### Agenda
- Update sprint doc
- Sprint retrospective
- Identify sprint goals and [polish issues]
- Plan meetings for the next month
### Sprint goals
#### General
* [ ] (nrc) status update blog post
#### Async fundamentals
* [x] (tmandry) Hold a stakeholders meeting
* Status: [Notes]()
* [x] Land RPITIT PR
* [x] (tmandry) Complete review with computerdruid
* [x] Lay out next steps for AFIT impl
* Status: We have a list of tests to be written
* https://hackmd.io/@nikomatsakis/rJsU9S3Go <-- covers the landscape
* (eholk) `dyn*` implementation
* [x] Merge [#101212]
* [ ] Flesh out design for conversion traits (`IntoDynStar` and friends, or whatever we call them)
* Status: Started writing a doc and planning a design meeting. Please give availability if you're interested in attending: https://lettucemeet.com/l/ppGGx
* [ ] Write a blog post on inline storage for dyn async traits (i.e. the use case covered by [StackFuture])
* Status: Didn't happen
* nikomatsakis: authored several blog posts about dynamic dispatch, laying out the various options, and had discussion on internals
[#101212]: https://github.com/rust-lang/rust/pull/101212
[StackFuture]: https://github.com/microsoft/stackfuture
#### Polish
Goals:
- [ ] (eholk / Joshua Nelson) Turn on generator drop tracking ([#97331])
- [ ] Provide any documentation needed and get T-Lang signoff
- Status: Crater run found more issues. Still need to investigate, but did get to reduce one test case: [#102383](https://github.com/rust-lang/rust/issues/102383)
Issues: ([project board])
#### Portability across runtimes
- [X] (nrc) elaborate and write up async IO traits proposal
- and did a deep dive with the WG
- [ ] (nrc) continue research on executor abstraction
- [ ] (nrc) comment on runtime trait proposal (https://github.com/nrc/portable-interoperable/issues/13) (by comment, I mean participate in the discussion there, which requires some research, above point)
#### Tooling
* [ ] (pnkfelix) still need to ping mw about [#95521](https://github.com/rust-lang/rust/issues/95521). (Going to do that now in zulip)
#### Keyword Generics
#### Onboarding
- [x] (vincenzopalazzo) Put in practice what learned in the async book reading by implementing (try to) a small async runtime (Hello world [rio](https://github.com/vincenzopalazzo/rio)).
- [ ] (eholk) Be available for mentoring
- (bryangarza) Begin onboarding onto static AFIT work and contribute to its tests ([#102642](https://github.com/rust-lang/rust/pull/102642))
## [2022-08-11] - 2022-09-08
[2022-08-11]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/sprint.20planning.202022-08-11
### Agenda
- Sprint retrospective
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
* [ ] (nrc) status update blog post
#### Async fundamentals
* [ ] (tmandry) Async fn in trait
* [ ] ~~Establish regular sync cadence for impl group~~
* [ ] ~~Put impl tasks in a tracker (project board, tracking issue etc.)~~
* [x] Decide/remember what to ask stakeholders
* [x] Send out scheduling email if we want to meet with stakeholders
* Status: Decided not to do the first two, but the impl group has been making progress. Did the second two.
* (eholk) `dyn*` implementation
* Status: PR is up that includes basic functionality, like method calls! https://github.com/rust-lang/rust/pull/101212
* [x] Get an end-to-end test case of casting into a `dyn* Trait` working (basically just covers the cast and running the destructor)
* [x] Start working on method calls on `dyn* Trait` objects
* Thanks to compiler-errors for getting this working!
* [x] Give regular progress updates on #wg-async/async-fn-in-trait-impl
* [Update thread](https://rust-lang.zulipchat.com/#narrow/stream/330606-wg-async.2Fasync-fn-in-trait-impl/topic/dyn*.20implementation.20thread)
- [ ] (yosh) publish post on halt safety
- [ ] get folks from the WG to review it ahead of time
#### Polish
Goals:
- [ ] (eholk / Joshua Nelson) Turn on generator drop tracking ([#97331])
- [x] Fix [#97333]
- [ ] Re-run crater
- Crater is running now: https://crater.rust-lang.org/ex/pr-97334-1
- [ ] Flip the switch to turn drop tracking on by default!
- This should probably have an FCP...
Issues: ([project board])
#### Portability across runtimes
- [x] (nrc) revamp the async IO traits proposal following feedback from last month
- [ ] (nrc) continue research on executor abstraction
- [ ] (nrc) comment on runtime trait proposal (https://github.com/nrc/portable-interoperable/issues/13) (by comment, I mean participate in the discussion there, which requires some research, above point)
#### Tooling
#### Keyword Generics
- [ ] (yosh) restructure project structure to be more RFC-like
- [ ] (yosh) start working through _generic_ keyword generics (`do` notation)
## [2022-07-14]
[2022-07-14]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/sprint.20planning.202022-07-14
### Agenda
- Sprint retrospective
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
- [x] (yosh) meet with the Bytecode alliance folks working on the design of async APIs in WASM
- [x] (nrc) Rustconf talk (prepare, practice, present it)
#### Async fundamentals
* [ ] (tmandry/nikomatsakis) Async fn in trait
* [ ] Establish regular sync cadence for impl group
* [ ] Put impl tasks in a tracker (project board, tracking issue etc.)
* [ ] Schedule stakeholder meeting in August
* Status: Impl progress is being made with the help of several people, though without a formal meeting or tracker set up. Did not set up a stakeholder meeting.
- [x] (yosh) start working through structured concurrency literature to create an overview of concurrency problems
- [ ] (yosh) publish post on halt safety
* (eholk) `dyn*` implementation
* [ ] Get an end-to-end test case of casting into a `dyn* Trait` working (basically just covers the cast and running the destructor)
* Status: worked on codegen for calling `dyn*` drop glue, currently it's generating invalid LLVM code that I'm debugging.
* [ ] Enable method calls on `dyn* Trait` objects
* Status: didn't start
#### Polish
Goals:
Issues: ([project board])
- [ ] (eholk / Joshua Nelson) Turn on generator drop tracking ([#97331])
- [ ] Check if [#97333] is still broken. If so, fix it.
- Status: still broken, didn't get the chance to fix it
- [ ] Re-run crater
- Status: didn't happen
- [ ] Flip the switch to turn drop tracking on by default!
- Status: didn't happen
#### Portability across runtimes
- [ ] (nrc) revamp the async IO traits proposal following feedback from last month
- [ ] (nrc) continue research on executor abstraction
- [ ] (nrc) comment on runtime trait proposal (https://github.com/nrc/portable-interoperable/issues/13) (by comment, I mean participate in the discussion there, which requires some research, above point)
#### Tooling
#### Keyword Generics
- [x] (yosh) publish project announcement on the inside rust blog
- [ ] (yosh) restructure project structure to be more RFC-like
- status: didn't get around to it
- [ ] (yosh) start working through _generic_ keyword generics (`do` notation)
- status: didn't get around to it
## [2022-06-09]
[2022-06-09]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/Sprint.20planning.202022-06-09
### Agenda
- Sprint retrospective
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
- [ ] (nrc) slides for Rustconf talk
- made progress but nowhere near complete
- [ ] (guswynn) continue investigating cancel-unsafety and `select!` problems
- [ ] consider writing a blog post about `select!`, and "implicit shared mutability"
- [ ] (nikomatsakis) blog posts / updates on moro (collaborating with guswynn)
- [x] (yosh): author and publish "async cancellation III" blog post on time-based operations and signals. ([Blog Post](https://blog.yoshuawuyts.com/async-cancellation-2/))
#### Async fundamentals
- [x] (yosh): shepherd the stabilization of `IntoFuture` ([#67644]) - Stabilized in Rust 1.64!
- [x] (yosh): plan and prioritize work on keyword generics
- [x] dyn async fn in trait
- [x] (tmandry/nikomatsakis): Meet again with Josh Triplett and plot a path forward
* [x] RPITIT RFC
* [x] (tmandry/nikomatsakis) Write up doc(s) on the two approaches for exposing the return type
* [ ] (eholk) establish RPITIDT milestones
* [ ] Define `dyn*` casting traits
* Status: Didn't get to it.
* [ ] Figure out what `dyn*` looks like in MIR
* Status: Started but still working on it.
* [ ] (spastorino) open PR for the RPIT refactor
* [x] (tmandry) Refinement RFC: Respond to new comments
* Status: FCP complete!
* [ ] (tmandry) Stakeholder meeting
* [ ] Decide if we need to have one now
* [ ] Send out scheduling if we do
* Status: Not done; should probably have one but now is not a good time for it
[#67644]: https://github.com/rust-lang/rust/issues/67644
#### Polish
Goals:
- [ ] (eholk) Turn on generator drop tracking ([#97331])
- [x] Wait for [crater run](https://crater.rust-lang.org/ex/pr-97334) to finish
- [ ] Fix `must_not_suspend` test case ([#97333])
- Status: PR is out ([#97962]), but it's probably not the right fix. Joshua Nelson's fix to another issue ([#98754]) might fix this too, need to check
- [x] Fix error message regression ([#97332])
[#97331]: https://github.com/rust-lang/rust/issues/97331
[#97332]: https://github.com/rust-lang/rust/issues/97332
[#97333]: https://github.com/rust-lang/rust/issues/97333
[#97962]: https://github.com/rust-lang/rust/issues/97962
[#98754]: https://github.com/rust-lang/rust/pull/98754
Issues: ([project board])
- [ ] (tmandry) [#76547]
- [ ] Check in
- [ ] Be available for questions
- [ ] Look for new volunteer if necessary
- [ ] (pnkfelix) [#83783](https://github.com/rust-lang/rust/issues/83783): Deref coercion does not work for some `await` returned values
- [ ] evaluate crater run of [PR 83850](https://github.com/rust-lang/rust/pull/83850) to hopefully determine whether the change has mert
#### Portability across runtimes
- [x] (nrc) discuss async IO traits with WG
- [ ] (nrc) incorporate feedback, plan next steps.
- I also discussed with Josh Triplett, and have a fairly serious revamp to the proposal to do
- [ ] (nrc) initial investigation of executor abstraction
- I started this but didn't get super far
#### Tooling
* [ ] (pnkfelix) identify awaitee in debuginfo [#95521]
- [ ] talk to mw, try to identify right path forward for handling combinators.
## [2022-05-12]
[2022-05-12]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/Sprint.20planning.202022-05-12
### Agenda
- Sprint retrospective
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
* [ ] (guswynn) scoped tasks
* [x] investigate `moro` closely and write explanation docs
* [x] slot moro into problematic concurrency examples
* [x] Investigate moro + `AsyncDrop`
* [x] (tmandry) Explore how to schedule WG meetings
* Status: Going to follow up during sprint planning :)
* [x] (nikomatsakis) revised moro, starting investigating use of `select!` in tokio's mini-redis crate and elsewhere
#### Async fundamentals
* [ ] (eholk) `dyn*`
* [x] Implement type checking for `dyn*`
* Status: Very rough version [here](https://github.com/eholk/rust/commit/f38ffd546fbd2bc67ea3818666c560e18744b6b7)
* [ ] Identify next step for `dyn*` implementation, start working on it
* Status: Next step is not super clear yet, but it seems to involve something with MIR transformation. I need to learn more about MIR.
* [x] (tmandry) Refinement RFC
* [x] Keep it unblocked
* [x] Respond to all comments
* Status: Feedback incorporated, waiting on lang team
* [ ] RPITIT RFC
* [ ] (tmandry/nikomatsakis) Write up doc(s) on the two approaches for exposing the return type
* Status: Not done. Scheduling conflicts meant we barely met all month.
* [ ] (tmandry/nikomatsakis) Hold stakeholder meeting
* [ ] Schedule a time
* [ ] Put together an agenda and any "homework"
* [ ] Put together presentation
* [ ] Hold the meeting and collect feedback
* Status: Decided not to do this at least until we had our meeting with Josh Triplett
* [ ] dyn async fn in trait
* [ ] Discuss at stakeholder meeting
* [x] Schedule a meeting with Josh Triplett
* Status: Discussed with Josh, but ran out of time and need a follow up discussion
* [x] static async fn in trait
* [x] (nikomatsakis) Meet with Santiago Pastorino to check in on progress
* Update: Santiago has landed some preliminary refactorings and we are "getting there".
#### Polish
Goals:
Issues: ([project board])
- [x] (eholk) Make `yielding-in-match-guard.rs` work with drop tracking
- [ ] (eholk) Identify and (hopefully) fix any remaining drop tracking issues
- Status: Crater run is going on now, so hopefully it doesn't find anymore issues. :crossed_fingers:
- [ ] (tmandry) Be available for questions on [#76547]
- Status: No questions. Maybe I should follow up
- [ ] (pnkfelix) [#83783](https://github.com/rust-lang/rust/issues/83783): Deref coercion does not work for some `await` returned values
- [x] made a try build of proposed [PR 83850](https://github.com/rust-lang/rust/pull/83850) that may fix this (but is maybe questionable in its approach), then goofed on syntax for crater run
- [ ] doing [crater run now](https://github.com/rust-lang/rust/pull/83850#issuecomment-1151329072)
[#76547]: (https://github.com/rust-lang/rust/issues/76547)
#### Portability across runtimes
* [x] (nrc) make progress on `ReadBuf` API discussions (yak shave towards async IO traits) https://github.com/rust-lang/rust/pull/97015
* [x] (nrc) elaborate on `async::{Read, Write}` alternatives https://github.com/nrc/portable-interoperable/tree/master/io-traits#alternatives (still some work to do)
* [x] (nrc) define async `Seek` trait https://github.com/nrc/portable-interoperable/tree/master/io-traits#seek
#### Tooling
* [ ] (pnkfelix) identify awaitee in debuginfo [#95521]
* still no headway here. I'm stuck in how to make progress on the combinators, as in what best to do next on them, given that they tend to be defined in 3rd party libraries...
## [2022-04-28]
[2022-04-28]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/Sprint.20planning.202022-04-28
### Agenda
- Sprint retrospective
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
#### Async fundamentals
* [ ] (eholk) `dyn*`
* [x] Understand and hopefully resolve design questions around `dyn*`
* Status: There are still interesting questions, but no need to block an experimental `dyn*` implementation in the meantime.
* [ ] Add preliminary versions of traits needed for `dyn*` coercions
* Status: no progress
* [x] (nikomatsakis) TAIT stabilization milestones
* [x] (nikomatsakis) GAT stabilization milestones
* [x] (tmandry) Respond to concern for refinement RFC, reply to some comments
* Status: Updated RFC, about to post some replies
* [ ] (tmandry) Revise RPITIT RFC draft
* Status: Not done
* [ ] (tmandry) Schedule stakeholder meeting
* Status: Made a poll, need to send it out
#### Polish
Goals:
Issues: ([project board])
- [ ] (pnkfelix) Deref coercion does not work for some await returned values [#83783](https://github.com/rust-lang/rust/issues/83783)
- [ ] Investigate underlying issue [#57749](https://github.com/rust-lang/rust/issues/57749)
- [ ] (eholk) Figure out how to make [#94309] and drop tracking work together. Post PR for it.
- Status: Filed [#96923] that fixes one drop tracking bug, still looking into why `yielding-in-match-guard.rs` is broken with drop tracking.
- [ ] (tmandry) E0623 highlights wrong parameter in async fn [#74256](https://github.com/rust-lang/rust/issues/74256)
- [ ] Figure out an implementation plan
- [x] Try to find someone to work on it (maybe me)
- Status: `zirconium.n` maybe working on this
[#96923]: https://github.com/rust-lang/rust/pull/96923
#### Portability across runtimes
#### Tooling
* [ ] (pnkfelix) identify awaitee in debuginfo [#95521]
* [ ] decide on strategy (special name for local vs attaching metadata to generator variant)
* [ ] figure out how to write unit test for this change
* [ ] prototype solution
## [2022-04-14]
[2022-04-14]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/Sprint.20planning.202022-04-14
### Agenda
- Sprint retrospective
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
#### Async fundamentals
* [x] (nikomatsakis) Lang team proposal for `dyn*`
* Status: https://github.com/rust-lang/lang-team/issues/158
* [ ] (eholk) Begin experimenting with `dyn*` implementation
* Status: Technically [started](https://github.com/eholk/rust/tree/async-fn-in-trait-feature), but haven't really made significant progress. Spent more time reading various discussions and alternate proposals around `dyn*`.
* [ ] (nikomatsakis) TAIT stabilization milestones
* [ ] (nikomatsakis) GAT stabilization milestones
* [x] (tmandry) Refinement RFC to FCP
* Status: In FCP but some concerns need revisions or comment responses
* [ ] (tmandry) Revise RPITIT RFC draft
* Status: Read through it but haven't done the revision yet
* [ ] (tmandry) Schedule stakeholder meeting
* Status: Planned topics but haven't scheduled
#### Polish
Goals:
Issues: ([project board])
- [ ] (pnkfelix) Deref coercion does not work for some await returned values [#83783](https://github.com/rust-lang/rust/issues/83783)
- [ ] Investigate underlying issue [#57749](https://github.com/rust-lang/rust/issues/57749)
- status: not started
- [ ] (eholk) Dropped variables still included in generator type [#57478]
- [x] Wait for FCP to complete and merge [#93313]
- [ ] Once [#93313] merges, do crater run
- [ ] If crater is okay, change default for `-Zdrop-tracking`
- Status: Drop tracking doesn't play nicely with fix for [#57017] (PR: [#94309]), so working to figure out how to make them work well together.
- [ ] (tmandry) E0623 highlights wrong parameter in async fn [#74256](https://github.com/rust-lang/rust/issues/74256)
- [ ] Figure out an implementation plan
- [ ] Try to find someone to work on it (maybe me)
- Status: No progress last sprint
[#93313]: https://github.com/rust-lang/rust/pull/93313
[#94309]: https://github.com/rust-lang/rust/pull/94309
#### Portability across runtimes
#### Tooling
* [ ] (pnkfelix) identify awaitee in debuginfo [#95521]
* [ ] decide on strategy (special name for local vs attaching metadata to generator variant)
* [ ] figure out how to write unit test for this change
* [ ] prototype solution
* status: not started
## [2022-03-31]
[2022-03-31]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/Sprint.20planning.202022-03-31
### Agenda
- Sprint retrospective
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
#### Async fundamentals
- [ ] (nikomatsakis/tmandry) Write up evaluation/explainer on auto-boxing RPITIDT
- [x] (tmandry) Respond to comments on refinement impls RFC
- Status: Comments replied to, some RFC updates pending discussion
- [ ] (tmandry) Get RPITIT RFC draft nearly ready for posting
- Status: Read through RFC but didn't update the draft
- [ ] (tmandry) (stretch) Schedule a stakeholder meeting?
#### Polish
Goals:
- [ ] (eholk/nikomatsakis) Intersection regions and/or change async desugaring so they aren't needed (https://github.com/rust-lang/rust/issues/63033)
- Status: Looked into this a little but didn't make much progress.
Issues: ([project board])
- [ ] (eholk) Dropped variables still included in generator type [#57478]
- [ ] Merge fixes for drop tracking ICEs
- [ ] https://github.com/rust-lang/rust/pull/93313
- Status: In FCP
- [ ] Once fixes merge, do crater run
- [ ] If crater is okay, change default for `-Zdrop-tracking`
- [x] (tmandry) E0623 highlights wrong parameter in async fn [#74256](https://github.com/rust-lang/rust/issues/74256)
- [x] Investigate why wrong paramater is highlighted for `-> impl Future` or other traits and write a Github comment
- [ ] (pnkfelix) Deref coercion does not work for some await returned values [#83783](https://github.com/rust-lang/rust/issues/83783)
- [ ] Investigate underlying issue [#57749](https://github.com/rust-lang/rust/issues/57749)
#### Portability across runtimes
#### Tooling
* [ ] (pnkfelix) identify awaitee in debuginfo [#95521]
* [ ] decide on strategy (special name for local vs attaching metadata to generator variant)
* [ ] figure out how to write unit test for this change
* [ ] prototype solution
[#95521]: https://github.com/rust-lang/rust/issues/95521
## [2022-03-17]
[2022-03-17]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/sprint.20planning.202022-03-17
### Agenda
- Sprint retrospective
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
#### Async fundamentals
- [ ] (yosh) Propose stabilization of `IntoFuture`
- [x] (nikomatsakis/tmandry) doc for lang team meeting on RPITIDT
- [ ] (nikomatsakis) impl plan for RPITIDT
- Partially done
- [x] (tmandry) Post [RFC for refinement impls](https://github.com/rust-lang/rfcs/pull/3245)
- [ ] (tmandry) (stretch) Get RPITIT RFC draft nearly ready for posting
#### Polish
Goals:
- [ ] (eholk/nikomatsakis) Intersection regions and/or change async desugaring so they aren't needed (https://github.com/rust-lang/rust/issues/63033)
- Status: no progress
Issues: ([project board])
- [ ] (eholk) Dropped variables still included in generator type [#57478]
- [ ] Merge fixes for drop tracking ICEs
- [ ] https://github.com/rust-lang/rust/pull/93313
- Status: undergoing FCP
- [ ] Once fixes merge, do crater run
- [ ] If crater is okay, change default for `-Zdrop-tracking`
- [x] (tmandry) Review [#93313](https://github.com/rust-lang/rust/pull/93313)
- [ ] (tmandry) E0623 highlights wrong parameter in async fn [#74256](https://github.com/rust-lang/rust/issues/74256)
- [ ] ~~Write a note explaining why the `suggest_adding_lifetime_params` suggestion is not firing on the async cases in the bug~~
- Already fixed by [#94464](https://github.com/rust-lang/rust/pull/94464)
#### Portability across runtimes
* [ ] (nrc) make progress on `ReadBuf` API discussions (yak shave towards async IO traits)
* [ ] (nrc) elaborate on `async::{Read, Write}` alternatives
* [ ] (nrc) define async `Seek` trait
#### Tooling
* [ ] (pnkfelix) help address "Awaitee field in async fns needs special name" debuginfo blocker for crashdump debugging
* filed [#95521](https://github.com/rust-lang/rust/issues/95521) to start explicitly tracking work here
* have not yet decided on strategy. need to read more.
## [2022-03-03](https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/sprint.20planning.202022-03-03)
### Agenda
- Sprint retrospective
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
#### Async fundamentals
* [ ] (spastorino) Make RPIT use a type alias to a type defined in body's function
* [x] (tmandry) Post constrained impls RFC on the initiative repo
* Status: [Posted](https://rust-lang.github.io/async-fundamentals-initiative/RFC/refined_impls.html)
* [ ] (tmandry) Post constrained impls RFC on the rfcs repo
* [x] (nikomatsakis/tmandry) Post "returning impl Trait in dyn" explainer
* Status: [Posted](https://rust-lang.github.io/async-fundamentals-initiative/explainer/async_fn_in_dyn_trait.html)
#### Async iteration
#### Polish
Goals:
- [ ] (eholk) Finish writing up results from better-backtrace formatting
- Status: [Updated wg-async website](https://github.com/rust-lang/wg-async/pull/271) with updates on progress. Significantly improved [better-backtrace README](https://github.com/eholk/better-backtrace).
Issues: ([project board])
- [ ] (tmandry) Review [#93313](https://github.com/rust-lang/rust/pull/93313)
- [x] (tmandry) Reviewed [#94309](https://github.com/rust-lang/rust/pull/94309)
- [ ] (tmandry) E0623 highlights wrong parameter in async fn [#74256](https://github.com/rust-lang/rust/issues/74256)
- [ ] Write a note explaining why the `suggest_adding_lifetime_params` suggestion is not firing on the async cases in the bug
- [ ] (pnkfelix) Deref coercion does not work for some await returned values [#83783](https://github.com/rust-lang/rust/issues/83783)
- no progress
- [ ] (eholk) Dropped variables still included in generator type [#57478]
- [ ] Merge fixes for drop tracking ICEs
- [ ] https://github.com/rust-lang/rust/pull/93313
- [ ] Once fixes merge, do crater run
- [ ] If crater is okay, change default for `-Zdrop-tracking`
#### Portability across runtimes
* [ ] (nrc) make progress on `ReadBuf` API discussions (yak shave towards async IO traits)
- some progress, but not much
* [x] (nrc) blog post on completion based io and `BufRead`
* [ ] (nrc) elaborate on `async::{Read, Write}` alternatives
- made some progress here, still work to do
#### Tooling
* [ ] (pnkfelix) help address "Awaitee field in async fns needs special name" debuginfo blocker for crashdump debugging
* no progress
## [2022-02-17]
[2022-02-17]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/sprint.20planning.202022-02-17
### Agenda
- Sprint retrospective
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
#### Async fundamentals
* [ ] (spastorino) Make RPIT use a type alias to a type defined in body's function
* refactoring underway
* [ ] (tmandry) Post constrained impls RFC on the initiative repo
* Status: [Draft](https://hackmd.io/CT6tK-KeR0G3rGsqgOKxlg) is mostly ready
* [ ] (tmandry) Post constrained impls RFC on the rfcs repo
* [x] (nikomatsakis/tmandry) Post first draft of "returning impl Trait in dyn" explainer
* Status: [First draft](https://hackmd.io/FWQybttJRQ2gH2h0-xwFHA?both) has been written and gone through some revision
#### Async iteration
#### Polish
Goals:
- [ ] (eholk) Write up results from better-backtrace formatting
- Status: made [some progress](https://github.com/eholk/better-backtrace/commit/9f3c5154234112975692a59ace2c6a7d5924ee63) but not as much as I'd hoped.
Issues: ([project board])
- [ ] (pnkfelix) Strange async use ...; compiler suggestion [#87613](https://github.com/rust-lang/rust/issues/87613)
- [x] finish extending AST representation
- previous sprints only added it to ast::Mod; ast::Crate needs it too (!).
- [x] add code to identify the injection points
- [x] update suggestion machinery
- [ ] (eholk) Dropped variables still included in generator type [#57478]
- [ ] Merge fixes for drop tracking ICEs
- [x] https://github.com/rust-lang/rust/pull/93751
- [ ] https://github.com/rust-lang/rust/pull/93313
- [x] https://github.com/rust-lang/rust/pull/94068
- Merged, although this is overly conservative, so there is a follow-up PR to fix this: [#94460]
- [ ] Once fixes merge, do crater run
- [ ] If crater is okay, change default for `-Zdrop-tracking`
- [ ] (eholk/nikomatsakis) Async fn does not compile if lifetime does not appear in bounds (sometimes) [#63033]
- [ ] Investigate consequences of intersection regions as a way to fix this
- Status: We worked on [#57017] instead. There is a PR in progress to fix this issue: https://github.com/rust-lang/rust/pull/94309
- [x] (tmandry) Reviewed [#94068](https://github.com/rust-lang/rust/pull/94068)
- [ ] (tmandry) Review [#93313](https://github.com/rust-lang/rust/pull/93313)
- [ ] (tmandry) E0623 highlights wrong parameter in async fn [#74256](https://github.com/rust-lang/rust/issues/74256)
- [ ] Write a note explaining why the `suggest_adding_lifetime_params` suggestion is not firing on the async cases in the bug
- [ ] (nikomatsakis) document a plan to improve https://github.com/rust-lang/rust/issues/57017 for one specific case
[#63033]: https://github.com/rust-lang/rust/issues/63033
[#94460]: https://github.com/rust-lang/rust/pull/94460
[#57017]: https://github.com/rust-lang/rust/issues/57017
#### Interoperability and Portability across runtimes
* [ ] (nrc) implement vectored Read::read_buf
- in progress discussion on ReadBuf API as first step
* [ ] (nrc) blog post on completion based io and `BufRead`
- WIP
* [ ] (nrc) elaborate on `async::{Read, Write}` alternatives
- didn't start :-(
#### Tooling
* [ ] (pnkfelix) help address "Awaitee field in async fns needs special name" debuginfo blocker for crashdump debugging
* (nothing done here :cry:)
## [2022-02-03]
[2022-02-03]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async/topic/sprint.20planning.202022-02-03
### Agenda
- Sprint retrospective
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
- [x] (yosh) Publish blog post on `select! {}`'s concurrency semantics ("async concurrency III") ([link](https://blog.yoshuawuyts.com/futures-concurrency-3/))
#### Async fundamentals
- [ ] (tmandry) Open RFC PR for overconstrained impls
* Status: [Draft](https://hackmd.io/CT6tK-KeR0G3rGsqgOKxlg?view) is about 95% ready
* [ ] (nikomatsakis) Write another blog post for dyn proposal
* Status: tmandry/nikomatsakis worked on an [explainer](https://hackmd.io/FWQybttJRQ2gH2h0-xwFHA?view) instead, but made good progress
* [ ] (nikomatsakis/tmandry) Update RPITIT RFC to be re-opened
* Status: Not done
- [ ] (yosh) Survey methods of context passing in other languages (e.g. implicits, etc.)
#### Async iteration
Goals:
- [ ] (estebank) Publish blogpost for chances to proc macro
- don't need sigils for disambiguation (for some cases)
- alternatives for operation of `?`
- [ ] (estebank) Publish call for contribution with mentorship offer
#### Polish
Goals:
- [ ] (eholk) Async stack traces
- [x] Improve [better-backtrace](https://github.com/eholk/better-backtrace) handling and formatting of stack traces
- Status: [Make some improvements](https://github.com/eholk/better-backtrace/commit/4fd9a7445b100df38b34011def62293a7a08dff0), but these would be more valuable if I wrote them up somewhere.
- [ ] Write a proposal for modifying libstd backtraces based on results.
- Status: didn't happen
Issues:
- [ ] (pnkfelix) Strange async use ...; compiler suggestion [#87613](https://github.com/rust-lang/rust/issues/87613)
- [x] finish extending AST representation
- [x] add code to identify the injection points
- [ ] update suggestion machinery
- status: not finished. struggling with oddities of visitor control flow. :)
- [x] (pnkfelix) review or assist on: "Refine scopes around temporaries generated in local accesses" [#92508](https://github.com/rust-lang/rust/issues/92508)
- status: identified rvalue temporary-lifetimes issues injected by PR.
- author revised scope; removed indexing revisions. pnkfelix recommnded they open in fresh PR to keep scope clear (i.e. it no longer fixes [#72956](https://github.com/rust-lang/rust/issues/72956))
- [ ] (tmandry) E0623 highlights wrong parameter in async fn [#74256](https://github.com/rust-lang/rust/issues/74256)
- [ ] Draft a PR to get the `suggest_adding_lifetime_params` suggestion firing on the async cases in the bug
* Status: No progress this sprint :(
- [ ] (eholk) Dropped variables still included in generator type [#57478]
- [ ] Merge [#93180](https://github.com/rust-lang/rust/pull/93180), possibly break it up some so that individual fixes can land separately.
- Status: broken into several fixes, one of which merged and two of which are out for review.
- [x] https://github.com/rust-lang/rust/pull/93751
- [ ] https://github.com/rust-lang/rust/pull/93313
- [ ] https://github.com/rust-lang/rust/pull/94068
[#57478]: https://github.com/rust-lang/rust/issues/57478
#### Portability across runtimes
Summary:
* [ ] (nrc) implement vectored Read::read_buf
* [x] (nrc) initial AsyncRead/AsyncWrite proposal
* https://www.ncameron.org/blog/async-read-and-write-traits/
#### Tooling
* (pnkfelix) crashdump-debugging: identify + assist with task *unrelated* to async fn decoding Proof-of-Concept, Maybe one of the ["fundamental debuginfo blockers"](https://hackmd.io/h55Mk_o5TPmD0_6bjxd-8g#Status-of-crashdump-debugging).
* [x] pnkfelix had great meeting with mw. identified several DWARF-related tasks to help with.
## [2022-01-20]
[2022-01-20]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async-foundations/topic/sprint.20planning.202022-01-20
### Agenda
- Sprint retrospective
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
Summary: Published the [Async Rust in 2022](https://blog.rust-lang.org/inside-rust/2022/02/03/async-in-2022.html) blog post on Inside Rust. wg-async-foundations is now wg-async.
* [x] (nikomatsakis/tmandry) Publish year-end blog post
#### Async fundamentals
Summary: Began drafting an RFC on "overconstrained impls" as a precursor for the RPITIT RFC. Continued to hammer out the design for [improvements to dyn][dyn7]. Continued progress on the implementation of RPITIT.
[dyn7]: https://smallcultfollowing.com/babysteps//blog/2022/01/07/dyn-async-traits-part-7/
* [ ] (nikomatsakis/tmandry) Draft a new RFC incorporating RPITIT and naming function output types
* [ ] (spastorino) Make RPIT use a type alias to a type defined in body's function
* [ ] (nikomatsakis/tmandry) Write another blog post for dyn proposal
* [ ] (tmandry) Set agenda and time for next stakeholders meeting
#### Async iteration
Summary: Made progress on the following goals, but time constraints didn't allow me to complete any of them. I will constrain my next sprint to fewer goals to ensure delivery.
Goals:
- [ ] Publish blogpost for chances to proc macro
- don't need sigils for disambiguation (for some cases)
- alternatives for operation of `?`
- [ ] Add `rustc_generator` attribute to annotate `fn`s as a placeholder to uplift logic from proc-macro
- [ ] Add `ItemKind::Generator` or a new field on functions in type system, with no new syntax
#### Polish
Summary: Progress on bugs and refining goals for polish.
Goals:
- [ ] (eholk) Evaluate state of generator capture bugs (there are two PRs in flight that should fix most of them, so we want to make sure which ones are fixed and which still need to be addressed)
- Status: Generator capture PR still hasn't been re-enabled. Did a crater run and found more ICEs that need to be fixed first.
- [ ] (eholk) [Sync and async behave the same](https://rust-lang.github.io/wg-async-foundations/vision/roadmap/polish/sync_and_async.html) initiative
- [ ] Find example sync and async programs that behave differently when we'd expect them to behave the same. (e.g. runtime behavior, error messages, syntactic overhead...)
- Status: Posted PR to clarify definitions: https://github.com/rust-lang/wg-async/pull/268. Didn't find examples of programs that behave differently yet. Realized there's a library/ecosystem component to consistent async/sync behavior.
Issues: ([project board])
- [ ] (eholk) error[E0391]: cycle detected when computing type of async fn [#78649](https://github.com/rust-lang/rust/issues/78649)
- [x] Investigate to find root cause
- Status: Looked into this some. The cycle comes from need to borrow check to find the concrete type for an `impl Trait`, which requires type checking, which we were trying to do in the first place. Probably not an easy fix, so shelving for now.
- [ ] (tmandry) E0623 highlights wrong parameter in async fn [#74256](https://github.com/rust-lang/rust/issues/74256)
- [ ] Draft a PR to get the `suggest_adding_lifetime_params` suggestion firing on the async cases in the bug
- [ ] (pnkfelix) Strange async use ...; compiler suggestion [#87613](https://github.com/rust-lang/rust/issues/87613)
- [ ] extend Rust parser with `use` injection point(s) to drive suggestions
- [x] finish extending AST representation
- [x] add code to identify the injection points
- [ ] update suggestion machinery (in progress -- debugging / puzzling it out)
#### Portability across runtimes
Summary:
* [ ] (nrc) implement vectored Read::read_buf
* [ ] (nrc) initial AsyncRead/AsyncWrite proposal
#### Tooling
Summary: Tokio-console is seeing healthy user adoption, based on activity on their Discord. Crashdump debugging needs are largely coupled to compiler (not executor) and hopes to get proof-of-concept for "Decode stack of suspended async fns" by end of February.
- [ ] (pnkfelix) contribute to [async-crashdump](https://github.com/rust-lang/async-crashdump-debugging-initiative).
- status: reached out to mw. Got great overview of plans/status: see https://hackmd.io/h55Mk_o5TPmD0_6bjxd-8g. Asynchronously establishing where pnkfelix can help.
## [2022-01-06]
[2022-01-06]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async-foundations/topic/sprint.20planning.202022-01-06
### Agenda
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
- [x] (nikomatsakis/tmandry) year end blog post summarizing async wg state
#### Async fundamentals
* [x] Post outline for dyn strategy: "A tale of two dyns"
* [ ] Make RPIT use a type alias to a type defined in body's function
* [ ] Draft a new RFC incorporating RPITIT and naming function output types
#### Async iteration
#### Polish
Goals:
- [ ] Experiment with trimmed backtraces
- [x] Crate that supports more flexible backtrace filtering (include/exclude function/module names)
- Status: See https://github.com/eholk/better-backtrace
- [x] Publish examples of trimmed backtraces
- Status: Technically there, but the example could be improved
- [ ] Stretch: Proc macro to annotate functions/modules as not being included in backtraces by default
- Status: did not happen
- [x] Update [must not suspend lint](https://rust-lang.github.io/wg-async-foundations/vision/roadmap/polish/lint_must_not_suspend.html) page to reflect current status (carry over from last sprint)
Issues: ([project board])
- [ ] (pnkfelix) Strange async use ...; compiler suggestion [#87613](https://github.com/rust-lang/rust/issues/87613)
- [ ] extend Rust parser with `use` injection point(s) to drive suggestions
- [x] finish extending AST representation
- [ ] add code to identify the injection points (in progress)
- [ ] update suggestion machinery
- [ ] (eholk) Dropped variables still included in generator type [#57478](https://github.com/rust-lang/rust/issues/57478) (part of [#69663](https://github.com/rust-lang/rust/issues/69663))
- [x] Wait on and respond to code review feedback
- [ ] Land it
- Status: Currently sitting in bors queue, but not showing as approved.
- [ ] (tmandry) E0623 highlights wrong parameter in async fn [#74256](https://github.com/rust-lang/rust/issues/74256)
- [x] Get a review on [#92183](https://github.com/rust-lang/rust/pull/92183) and update PR
- [ ] Write PR for first follow-up fix
#### Portability across runtimes
#### Tooling
- [ ] (pnkfelix) Reach out to mw and see what needs doing for [async-crashdump](https://github.com/rust-lang/async-crashdump-debugging-initiative).
- reached out today; awaiting response (mw did [post an update](https://zulip-archive.rust-lang.org/stream/187312-wg-async-foundations/topic/sprint.20planning.202022-01-06.html#267166117) post meeting last week)
## [2021-12-09]
[2021-12-09]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async-foundations/topic/sprint.20planning.202021-12-09
### Agenda
- Sprint retrospective
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
- [ ] (nikomatsakis/tmandry) year end blog post summarizing async wg state
#### Async fundamentals
* [ ] Post proposal/outline for dyn strategy: "A tale of two dyns"
* [ ] Make RPIT use a type alias to a type defined in body's function
* [ ] Post a new RFC incorporating RPITIT and naming function output types
#### Async iteration
Goals:
- [ ] Publish blogpost for chances to proc macro
- don't need sigils for disambiguation (for some cases)
- alternatives for operation of `?`
- [ ] Blogpost exploring `size_hint`
- [ ] Add `rustc_generator` attribute to annotate `fn`s as a placeholder to uplift logic from proc-macro
- [ ] Add `ItemKind::Generator` or a new field on functions in type system, with no new syntax
- [ ] Stretch goal: start experimenting with `for await pat in expr` in proc-macro
#### Polish
Goals:
- [ ] Create a list of confusing error message issues for the [error messages](https://rust-lang.github.io/wg-async-foundations/vision/roadmap/polish/error_messages.html) goal (carry over from last sprint)
- Status: No progress
- [ ] Update [must not suspend lint](https://rust-lang.github.io/wg-async-foundations/vision/roadmap/polish/lint_must_not_suspend.html) page to reflect current status (carry over from last sprint)
- Status: No progress
- (eholk) Spent some more time investigating async stack traces. Started working on a crate to prototype different approaches, although nothing is ready to share yet.
Issues: ([project board])
- [ ] (pnkfelix) Strange async use ...; compiler suggestion [#87613](https://github.com/rust-lang/rust/issues/87613)
- [ ] extend Rust parser with `use` injection point(s) to drive suggestions
- status (2022-01-06): Not finished. Working on adding spans for injection sites to AST repr.
- [ ] (tmandry) E0623 highlights wrong parameter in async fn [#74256](https://github.com/rust-lang/rust/issues/74256)
- [x] Put up an [initial PR](https://github.com/rust-lang/rust/pull/92183)
- [ ] Get a first review
- [ ] Draft PR for follow-up fixes (or roll them into the same one)
- [ ] (nikomatsakis) pick "Async fn does not compile if lifetime does not appear in bounds (sometimes)" #63033 back up again
- plan is to experiment with "intersection lifetimes"
- [ ] [[#89734](https://github.com/rust-lang/rust/pull/89734)] Unhelpful compiler message when a reference is used inside of an await block [#723120](https://github.com/rust-lang/rust/issues/72312) (estebank)
finish review and **land**
- [ ] (eholk) error[E0391]: cycle detected when computing type of async fn [#78649](https://github.com/rust-lang/rust/issues/78649)
- [ ] Investigate to find root cause
- Status: No progress
- [ ] (eholk) Dropped variables still included in generator type [#57478](https://github.com/rust-lang/rust/issues/57478) (part of [#69663](https://github.com/rust-lang/rust/issues/69663))
- [ ] Wait on and respond to code review feedback
- Status: got lots of helpful feedback from Niko, but we'll still need a few more rounds to finish it up.
- [ ] Land it
#### Portability across runtimes
* [x] (nrc) consider async fns vs poll_read/write for AsyncRead/AsyncWrite traits
* [x] (nrc) discuss two trait alternative to RFC 2930 with someone?
* [ ] (nrc, stretch goal) (possibly to replace the above) create some kind of WG to discuss reading into uninit memory issues with so that we can get things moving a little quicker in the non-async space
#### Tooling
* [x] (pnkfelix) update roadmap to point to https://github.com/rust-lang/async-crashdump-debugging-initiative
* (2022-01-06): I did the obvious trivial thing, but might have broke CI in the process.
* [x] (pnkfelix) post tokio-console 0.x crates to crates.io
* status: [tokio-console 0.1.0 launched](https://tokio.rs/blog/2021-12-announcing-tokio-console)
* [x] (pnkfelix) revisit [original non-responsiveness issue](https://github.com/tokio-rs/console/issues/133) to see if it was resolved
* the reporter says it has now stopped
## [2021-11-11]
[2021-11-11]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async-foundations/topic/sprint.20planning.202021-11-11
- Sprint retrospective
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
* [ ] Add more docs and clean up https://rust-lang.github.io/wg-async-foundations/vision/roadmap/scopes.html and the sub-pages below it.
#### Async fundamentals
* [x] Stakeholder meeting
* [x] Schedule stakeholder meeting
* [x] Prepare notes / slides for stakeholder meeting
* [x] Have stakeholder meeting
* [x] Get [MVP RFC](https://github.com/rust-lang/rfcs/pull/3185) merged
* [ ] Make RPIT use a type alias to a type defined in body's function
* Made progress towards RPIT implementation but wound up
* [ ] ~~Post RFC for function types with nameable output type~~
* [ ] Write-up a plan for "dyn type adaptation procedural macro" along the lines of [this post](https://smallcultfollowing.com/babysteps//blog/2021/10/15/dyn-async-traits-part-6/) and try to recruit someone to implement
* Did prototyping
* Found a way to support "inline async trait" impl that can be used in an embedded context without an allocator
* Did not write many blog posts, still need to "pull design together"
#### Async iteration
Goals:
- [x] Clean up proc macro to not need sigils for disambiguation
- [x] Experiment with the alternative modes of operation for `?`
- [x] Experiment with different ways of setting `size_hint` that require less code than the current approach
- [ ] (estebank: ongoing) Add `rustc_generator` attribute to annotate `fn`s as a placeholder to uplift logic from proc-macro
- [ ] (estebank: ongoing) Stretch goal: Add `ItemKind::Generator` or a new field on functions in type system, with no new syntax
- [ ] Stretch goal: start experimenting with `for await pat in expr` in proc-macro
#### Polish
Goals:
- [ ] Create a list of confusing error message issues for the [error messages](https://rust-lang.github.io/wg-async-foundations/vision/roadmap/polish/error_messages.html) goal
- Status: no progress
- [ ] Update [must not suspend lint](https://rust-lang.github.io/wg-async-foundations/vision/roadmap/polish/lint_must_not_suspend.html) page to reflect current status
- Status: no progress
Issues:
- [x] [[#90939](https://github.com/rust-lang/rust/pull/90939)] Better output when `.await`ing on sync `fn` [#66731](https://github.com/rust-lang/rust/issues/66731) (estebank)
([needs fixing rebase](https://github.com/rust-lang/rust/pull/90939), counting as "done" as it will likely be merged today)
- [ ] [[#89734](https://github.com/rust-lang/rust/pull/89734)] Unhelpful compiler message when a reference is used inside of an await block [#723120](https://github.com/rust-lang/rust/issues/72312) (estebank)
needs further review before merging, previous round of review comments addressed
- [ ] (nikomatsakis) Async function leads to a "more general type" error [#71723](https://github.com/rust-lang/rust/issues/71723)
- or maybe pick "Async fn does not compile if lifetime does not appear in bounds (sometimes)" #63033 back up again
- ...did neither :)
- [ ] (tmandry) E0623 highlights wrong parameter in async fn [#74256](https://github.com/rust-lang/rust/issues/74256)
- [x] Find the root cause
- [x] Get a fix mostly working locally
- [ ] Put up an initial PR
- [ ] Draft PR for follow-up fixes (or roll them into the same one)
- [ ] (eholk) Dropped variables still included in generator type [#57478](https://github.com/rust-lang/rust/issues/57478) (part of [#69663](https://github.com/rust-lang/rust/issues/69663))
- [x] Finish fixpoint iteration
- [x] Figure out how to handle `AssignOp` with new backing data structures
- [x] Make existing test suite pass
- [x] Post PR for review
- PR is [#91032](https://github.com/rust-lang/rust/pull/91032)
- [ ] (pnkfelix) Strange async use ...; compiler suggestion [#87613](https://github.com/rust-lang/rust/issues/87613)
- [pernos.co link](https://pernos.co/debug/paKkMgDIShxYLIxeiaU1Wg/index.html#f{m[A6g,YeBV_,t[Ag,BKLD_,f{e[A6g,YduR_,s{af7mvaIAA,bFw,uBCM2GA,oBCQxQw___/)
- [x] identify why generated span of item covers `fn main`, and not `async fn main`
- [x] posted [PR](https://github.com/rust-lang/rust/pull/90941) with one hacky solution, further discussion led to a [proposed more discplined solution](https://github.com/rust-lang/rust/pull/90941#issuecomment-990045684).
- [ ] todo: make the better solution
- [ ] (guswynn) warn on must_use use on async fn's [#89610](https://github.com/rust-lang/rust/pull/89610)
- [ ] (guswynn) `must_not_suspend` was made unstable, which causes problems that may need and MCP to fix: https://github.com/rust-lang/compiler-team/issues/469
#### Portability across runtimes
- [x] (nrc) create process boilerplate (issues, repo, etc)
- [x] (nrc) continue research on the current state of the ecosystem
- [x] (nrc) blog post on background
- [x] (nrc; stretch) blog post on the project - goals, call to action, etc.
#### Tooling
* [ ] (pnkfelix) revisit [original non-responsiveness issue](https://github.com/tokio-rs/console/issues/133) to see if it was resolved
* status: not done
* [x] (pnkfelix) talk to eliza about making tracking issue for issues that are blocking a non-preview release
* discussion started. We should be posting to crates.io this month, though it wont be 1.0.
* [ ] (pnkfelix) update roadmap to point to https://github.com/rust-lang/async-crashdump-debugging-initiative
* status: not done. sorry!
## Current sprint: [2021-10-28]
[2021-10-28]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async-foundations/topic/sprint.20planning.202021-10-28
### Agenda
- Sprint retrospective
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
#### Async fundamentals
* [ ] Desugaring for MVP RFC
* [ ] Make a trivial trait with one async fn be lowered to HIR (no type params, no bounds, no lifetimes, no nothing :))
* [ ] Make a trivial impl for that trait work
* [ ] Schedule stakeholder meeting to discuss the MVP RFC and overall plan
* Scheduling in progress!
* [x] Get [MVP RFC](https://github.com/rust-lang/rfcs/pull/3185) to FCP
* [ ] Post RFC for function types with nameable output type
* Did not happen, but we had some fruitful discussion and I think are in place to achieve this next time. --nikomatsakis
* [x] Post [RFC for RPIT-in-trait](https://github.com/rust-lang/rfcs/pull/3193)
* [ ] Write-up a plan for "dyn type adaptation procedural macro" along the lines of [this post](https://smallcultfollowing.com/babysteps//blog/2021/10/15/dyn-async-traits-part-6/) and try to recruit someone to implement
* Did not happen, d'oh!
* [x] Write up agenda, doc, slides, or blog post for stakeholder discussion
#### Async iteration
- [x] Publish syn-based proc-macro syntax prototype
- https://github.com/estebank/iterator_item
- [x] Advertise above prototype and ask people to contribute alternatives
- https://estebank.github.io/rust-iterator-item-syntax.html
- https://internals.rust-lang.org/t/rust-generators-exploration-of-potential-syntax/15586
- https://twitter.com/ekuber/status/1458551749862510596
#### Polish
Goals:
- [x] Write "How to Help" page for wg-async-foundations generally, with links to area-specific pages where appropriate.
- PR: https://github.com/rust-lang/wg-async-foundations/pull/257
- [x] Async stack trace planning doc posted in wg-async-foundations repo [[draft doc](https://hackmd.io/vnaFqT-5TFyN1iHevPGyQQ)] [[PR](https://github.com/rust-lang/wg-async-foundations/pull/258)]
- [x] Identify examples of current bad async stack traces
- [x] Propose manually trimmed versions of bad stack traces
- [x] Learn about how any existing stack trace trimming works
Issues:
- [ ] Better output when `.await`ing on sync `fn` [#66731](https://github.com/rust-lang/rust/issues/66731) (estebank)
- Status: started looking at it, but haven't made much progress on it. I'll be prioritizing it later this week/early next.
- [ ] [[#89734](https://github.com/rust-lang/rust/pull/89734)] Unhelpful compiler message when a reference is used inside of an await block [#723120](https://github.com/rust-lang/rust/issues/72312) (estebank)
- Status: reviewed yesterday, will address comments and land this week.
- [ ] (nikomatsakis) Async function leads to a "more general type" error [#71723](https://github.com/rust-lang/rust/issues/71723)
- [ ] (tmandry) E0623 highlights wrong parameter in async fn [#74256](https://github.com/rust-lang/rust/issues/74256)
- [ ] (eholk) Dropped variables still included in generator type [#57478](https://github.com/rust-lang/rust/issues/57478) (part of [#69663](https://github.com/rust-lang/rust/issues/69663))
- [ ] Support branching/merging control flow in analysis pass
- Status: Got most of this working, but my data structure wasn't properly tracking control flow edges, which caused problems particularly with match expressions. Currently rewriting underlying data structures to better track this.
- [ ] (pnkfelix) Strange async use ...; compiler suggestion [#87613](https://github.com/rust-lang/rust/issues/87613)
- Status: Got a pernosco session uploaded. Used it to basically identfy the same point in the code that ehuss had independently identified in a parallel issue.
- [pernos.co link](https://pernos.co/debug/paKkMgDIShxYLIxeiaU1Wg/index.html#f{m[A6g,YeBV_,t[Ag,BKLD_,f{e[A6g,YduR_,s{af7mvaIAA,bFw,uBCM2GA,oBCQxQw___/)
- [ ] (guswynn) warn on must_use use on async fn's [#89610](https://github.com/rust-lang/rust/pull/89610)
- [ ] Status: merge-able
- [ ] (guswynn) `must_not_suspend` was made unstable, which causes problems that may need and MCP to fix: https://github.com/rust-lang/compiler-team/issues/469
#### Async fundamentals
* [ ] Schedule stakeholder meeting to discuss the MVP RFC and overall plan
* [ ] Open RFC for named fn types
* [ ] Open RFC for RPIT in traits ("RPITIT")
* [ ] Write-up a plan for "dyn type adaptation procedural macro" along the lines of [this post](https://smallcultfollowing.com/babysteps//blog/2021/10/15/dyn-async-traits-part-6/) and try to recruit someone to implement
#### Portability across runtimes
#### Tooling
* [ ] (pnkfelix) [resolve non-responsiveness](https://github.com/tokio-rs/console/issues/133) (deadlock?) in tokio-console
* Status: Filed [related blocking issue](https://github.com/tokio-rs/console/issues/177) and got that resolved.
* [ ] Still need to revisit [original issue 133](https://github.com/tokio-rs/console/issues/133)
* [ ] (pnkfelix) establish set of issues that are blocking a non-preview release, and make tracking issue for it.
* Status: not done, need to allocate time to talk to Eliza about this.
* [ ] (pnkfelix) update roadmap to point to https://github.com/rust-lang/async-crashdump-debugging-initiative
* Status: not done, forgot, sorry.
## [2021-10-14]
[2021-10-14]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async-foundations/topic/.E2.9C.94.20sprint.20planning.202021-10-14
### Agenda
- Sprint retrospective
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
#### Async fundamentals
* [x] Post the [RFC draft](https://github.com/rust-lang/rfcs/pull/3185)
* [x] Write up the alternatives for naming async-fn-in-trait return types and come up with a recommendation (carried over)
* [ ] Desugaring for MVP RFC
* [x] [Made a list of tests in a hackmd](https://hackmd.io/SwRcXCiWQV-WRJ4BYs53fA)
* [ ] Prototype
* [ ] Put up PR with tests
* [ ] Schedule stakeholder meeting to discuss the MVP RFC and overall plan
#### Async iteration
* [ ] Publish WIP prototype basic sync iterator item for feedback
#### Scoped Spawning Apis
* [ ] (guswynn) continue collecting a-priori knowledge
#### Polish
Goals:
* [x] (eholk) Write "how to get involved" instructions for Polish area.
Issues:
- [ ] Better output when `.await`ing on sync `fn` [#66731](https://github.com/rust-lang/rust/issues/66731) (estebank)
Suggest removal of `.await` or turning `fn` into `async fn` (if the types are correct and the transform would be valid). Looking at the ticket history, we could get away with adding `Span`s to `DesugaringKind` pointing at the suggestion places (to avoid changing the crate dep tree).
Note: didn't get to it.
- [ ] [[#89734 waiting on review](https://github.com/rust-lang/rust/pull/89734)] Unhelpful compiler message when a reference is used inside of an await block [#723120](https://github.com/rust-lang/rust/issues/72312) (estebank)
Objective: land
Note: still waiting on review.
- [x] [#78543](https://github.com/rust-lang/rust/issues/78543): improve output for Send coming from non-crate local Future (estebank)
Note: Marking as completed as we landed improved output, but leaving the ticket open to tackle the *harder* issue of keeping other crates' typeck info available.
* [ ] (guswynn) warn on must_use in async fn's https://github.com/rust-lang/rust/pull/89610
* May also need a change to async-trait
Objective: land
* [ ] (guswynn) Clean up `must_not_suspend` until we fix the capture code, both:
* https://github.com/rust-lang/rust/pull/89787
* https://github.com/rust-lang/rust/pull/89826
Objective: land
- [ ] (nikomatsakis) Async function leads to a "more general type" error #71723
- [ ] (pnkfelix) Indexing via index method and [idx] sugar works differently in async blocks/functions [#72956](https://github.com/rust-lang/rust/issues/72956)
- Status: found small-ish change to [region code](https://github.com/rust-lang/rust/issues/72956#issuecomment-948271239) that resolves *this* issue, though perhaps not the broad overall others want/expect based on [notes](https://hackmd.io/Qr4rGglfSMGEDItP5YWgtA?view).
- [ ] (eholk) Dropped variables still included in generator type [#57478](https://github.com/rust-lang/rust/issues/57478) (part of [#69663](https://github.com/rust-lang/rust/issues/69663))
- Status: New algorithm works well, but still need to implement branching/merging control flow. Not expecting too many surprises here. [Work in progress branch](https://github.com/eholk/rust/tree/gnerator-drop-tracking).
- [ ] (tmandry) E0623 highlights wrong parameter in async fn [#74256](https://github.com/rust-lang/rust/issues/74256)
#### Portability across runtimes
#### Tooling
* [ ] (pnkfelix) post console preview to crates.io
* Status: not done, resolving blocking usability issue first.
* Initiated conversation in discord about what are blocking issues for a non-preview release.
## [2021-09-30]
[2021-09-30]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async-foundations/topic/.E2.9C.94.20sprint.20planning.202021-09-30
### Agenda
- Sprint retrospective
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
* [ ] Extend and land [#230](https://github.com/rust-lang/wg-async-foundations/pull/230), generally "tighten up" the async foundations landing page -- nikomatsakis
* [ ] Extend roadmap vision to include `async fn main` and to mention the "task-local auto trait" problem -- nikomatsakis
#### Async fundamentals
* [x] Reach out to stakeholders and identify 1-5
* [x] Draft RFC for MVP ([draft](https://hackmd.io/ZKb-lh8iRN66RiuYjALZrA))
* [ ] Write up the alternatives for naming async-fn-in-trait return types and come up with a recommendation
* Didn't do this, but did [outline the plan in the impl trait explainer](https://rust-lang.github.io/impl-trait-initiative/explainer/rpit_names.html) --nikomatsakis
* [ ] Bonus work: outlined a cool idea about scoped parameters codenamed [with clauses](https://rust-lang.github.io/async-fundamentals-initiative/evaluation/design/with_clauses.html), though that page needs an update with the latest thinking
#### Async iteration
* [x] Prototype basic sync iterator item (independent of current generator machinery, but reusing it)
* [ ] Gather feedback from blogpost
#### Polish
- [x] [ongoing] (estebank) Unhelpful compiler message when a reference is used inside of an await block [#723120](https://github.com/rust-lang/rust/issues/72312)
- [x] (tmandry) Improve compiler error when returning `Pin::new(async {})` (PR: [#89870](https://github.com/rust-lang/rust/pull/89870))
- [ ] (eholk) Continue working on "E0623 highlights wrong parameter in async fn" [#74256](https://github.com/rust-lang/rust/issues/74256)
- No progress. Will unassign myself to focus on generator captures --eholk
- [ ] (nikomatsakis) Async function leads to a "more general type" error #71723
- No progress :(
* [ ] Other polish goals:
- [x] (eholk) Set up initiative for testing that sync and async programs have the same behavior
* [x] (eholk) Follow up with lang-team about liveness-based generator captures
* eholk and I met and discussed the overall strategy. The plan is to pursue more limited changes to begin, focusing on "moved values". --nikomatsakis
* [ ] (eholk) Continue generator liveness implementation
* Continued implementation, but we're pursuing a different approach now.
* [x] (eholk) Fill out landing pages for polish initiatives
* [x] (eholk) Assign async polish label to issues
#### Portability across runtimes
#### Tooling
* [x] Add entry for (tokio-)console to Tooling roadmap in [async vision doc](https://rust-lang.github.io/wg-async-foundations/vision/roadmap/tooling.html) - pnkfelix
* PR with initial doc sketch [posted](https://github.com/rust-lang/wg-async-foundations/pull/255)
* [ ] Post console-subscriber into crates.io (preview version, at least) - pnkfelix
* waiting on related bug fix to land in tokio
## [2021-09-16]
[2021-09-16]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async-foundations/topic/.E2.9C.94.20sprint.20planning.202021-09-16
- Sprint retrospective
- Assign [polish issues]
- Identify sprint goals
### Sprint goals
#### General
* [ ] Extend and land [#230](https://github.com/rust-lang/wg-async-foundations/pull/230), generally "tighten up" the async foundations landing page -- nikomatsakis
* [ ] Extend roadmap vision to include `async fn main` and to mention the "task-local auto trait" problem -- nikomatsakis
#### Async fundamentals
* [x] Prepare a lang-team proposal for "async fn in traits" – tmandry ([lang-team#116](https://github.com/rust-lang/lang-team/issues/116))
* [x] Write up a charter for "async fn fundamentals" – tmandry [+ nikomatsakis] ([Charter](https://rust-lang.github.io/async-fundamentals-initiative/CHARTER.html))
* [x] Identify MVP language feature for "async fn in traits" along with all major unknowns that must be resolved before it can move forward ([MVP](https://rust-lang.github.io/async-fundamentals-initiative/roadmap/mvp.html))
#### Async iteration
- [x] [T-lang proposal](https://github.com/rust-lang/lang-team/blob/master/src/initiatives.md) for async iteration item - estebank
- [x] Update wg-async-foundations repo to link to async-iteration repo - estebank
- [x] blogpost outlining the effort - estebank
#### Polish
Initiatives:
- [ ] (eholk) Set up initiative for testing that sync and async programs have the same behavior
- status: no progress
* [ ] (eholk) Discuss liveness-based generator captures with lang-team
* status: lang-team seems to have looked at it briefly. [New PR](https://github.com/rust-lang/reference/pull/1093) is out to document current behavior first.
* [x] (eholk) Generator liveness analysis: correctly handle temporary values
* status: temporaries are mostly working now and there's a clear path to handling the ones that remain.
* [ ] (eholk) Fill out landing pages for polish initiatives
* status: no progress
Polish issues:
- [ ] `#[must_not_suspend]`: basic cases implemented, awaiting final review: https://github.com/rust-lang/rust/pull/88865
- [x] (tmandry) confusing diagnostic for incorrect type parameter on BoxFuture [#72117](https://github.com/rust-lang/rust/issues/72117) (PR: [#89390](https://github.com/rust-lang/rust/pull/89390))
- Status: PR is up
- [ ] (eholk) E0623 highlights wrong parameter in async fn [#74256](https://github.com/rust-lang/rust/issues/74256)
- status: Started looking into this and having discussions about the best way to fix it.
- [ ] (estebank) Unhelpful compiler message when a reference is used inside of an await block [#723120](https://github.com/rust-lang/rust/issues/72312)
- [ ] (pnkfelix) Indexing via index method and [idx] sugar works differently in async blocks/functions [#72956](https://github.com/rust-lang/rust/issues/72956)
- [ ] (nikomatsakis) Async fn does not compile if lifetime does not appear in bounds (sometimes) [#63033](https://github.com/rust-lang/rust/issues/63033)
- status: have a pending PR, but after discussion with oli-obk decided to try and pursue intersection regions
#### Tooling
* [ ] make [goal/initiative issues](https://github.com/rust-lang/wg-async-foundations/issues/new/choose) - pnkfelix
* [ ] Add entry for (tokio-)console to Tooling roadmap in [async vision doc](https://rust-lang.github.io/wg-async-foundations/vision/roadmap/tooling.html) - pnkfelix
* [ ] Post console-subscriber into crates.io (preview version, at least) - pnkfelix
* [ ] create repo for crashdump debugging initiative - mw
#### Portability across runtimes
## [2021-09-02]
[2021-09-02]: https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async-foundations/topic/.E2.9C.94.20sprint.20planning.202021-09-02
[How-to vision (stakeholders)](https://rust-lang.github.io/wg-async-foundations/vision/how_to_vision/stakeholders.html)
- Check in on organizational setup
- Discuss meeting structure
- Shared responsibilities
- Is taking on one bug per sprint realistic?
- Identify first (uncalibrated) sprint goals
- What's still missing from our process / organization?
### Meeting structure
- Check in from each area lead (preparing these ahead of time is encouraged), including:
- Previous sprint progress
- Next sprint goals
- Blockers and/or ideas for making progress easier
- Post list of items open for review
- Other topics added to the agenda
### Sprint goals
#### General
* [ ] Extend and land [#230](https://github.com/rust-lang/wg-async-foundations/pull/230), generally "tighten up" the async foundations landing page -- nikomatsakis
* [ ] Extend roadmap vision to include `async fn main` and to mention the "task-local auto trait" problem -- nikomatsakis
* [x] (Partway done) Apply the diffs I've been saving up in a hackmd somewhere to the roadmap -- tmandry
* [x] Make checklist for owners – tmandry/nikomatsakis
#### Async fn everywhere
* [x] Update the wg-async-foundations site to link to the repository – tmandry
* [x] ([Partway done](https://rust-lang.github.io/async-fundamentals-initiative/evaluation.html)) Outline design space for async fn in trait + dyn async fn in trait in the [initiative repo](https://github.com/rust-lang/async-fundamentals-initiative) – tmandry + nikomatsakis
* Status: We've been expanding the [async-fundamentals-initiative repository](https://rust-lang.github.io/async-fundamentals-initiative/). It contains a summary of our discussions to the [evaluation page](https://rust-lang.github.io/async-fundamentals-initiative/evaluation.html). (Would like feedback on this structure, as it may serve as a useful template.) We've mainly focused on the [bounding futures challenge](https://rust-lang.github.io/async-fundamentals-initiative/evaluation/challenges/bounding-futures.html). The [two ideas we've discussed thus far for solving it](https://rust-lang.github.io/async-fundamentals-initiative/evaluation/design.html) don't quite seem right, but we'd like for people to look and give feedback.
* [ ] Prepare a lang-team proposal for "async fn in traits" – tmandry
* [ ] Write up a charter for "async fn fundamentals" – tmandry [+ nikomatsakis]
#### [Async iteration](https://hackmd.io/@estebank/H1F4Qu0bt)
- [ ] [T-lang proposal](https://github.com/rust-lang/lang-team/blob/master/src/initiatives.md) for async iteration item - estebank
- [ ] Update wg-async-foundations repo to link to async-iteration repo - estebank
- [x] Start conversation on "async iteration expression"
- This feature has been added to the initiative due to grouping, but no work has been done on it yet.
#### Polish
* [ ] Discuss liveness-based generator captures with lang-team - eholk
* status: Nominated a pull request to T-lang, waiting to hear from them
* [ ] Significant progress towards production-ready generator liveness captures - eholk
* status: Less progress than I'd hoped. Experimented with liveness-based captures and am currently duplicating the liveness pass so it can better match the needs for generators.
* [x] Reschedule weekly triage meeting to be Europe-friendly - eholk
* [x] Re-organize and continue to maintain project board for polish issues - eholk
* status: Made some small organization changes, started going over bug backlog in On Deck column
* [ ] Fix a polish bug (which one TBD) - eholk
* status: Did not happen
* [x] Progress towards `must_not_suspend` lint - Gus Wynn
* status: Gus Wynn has a pull request out: https://github.com/rust-lang/rust/pull/88865
* testing on nightly on MutexGuard: https://github.com/rust-lang/rust/pull/89303
#### Portability across runtimes
TODO
#### Tooling
TODO