1.
Welcome
2.
Charter
3.
Meetings
❱
3.1.
Discussion schedule
3.2.
Triage
4.
The vision
❱
4.1.
❓How to vision
❱
4.1.1.
Owning a goal or initiative
4.1.2.
Being a stakeholder
4.1.3.
Writing an evaluation
4.1.4.
Authoring "Status quo" stories
4.1.5.
Authoring "Shiny future" stories
4.1.6.
Commenting on stories
4.1.7.
Awards
4.2.
🥰 How using async Rust ought to feel
4.3.
🙋♀️ Cast of characters
❱
4.3.1.
Alan
4.3.2.
Grace
4.3.3.
Niklaus
4.3.4.
Barbara
4.4.
⚡ Projects
❱
4.4.1.
Template
4.4.2.
MonsterMesh (embedded sensors)
4.4.3.
DistriData (Generic Infrastructure)
4.4.4.
TrafficMonitor (Custom Infrastructure)
4.4.5.
YouBuy (Traditional Server Application)
4.4.6.
SLOW (Protocol implementation)
4.5.
😱 Status quo
4.6.
✨ Shiny future
❱
4.6.1.
📚 User's manual of the future
4.7.
📅 Roadmap
❱
4.7.1.
Async fn everywhere
❱
4.7.1.1.
Boxable async fn
4.7.1.2.
Async main and tests
4.7.2.
Scoped spawn and reliable cancellation
❱
4.7.2.1.
Capability
❱
4.7.2.1.1.
Variant: Async trait
4.7.2.1.2.
Variant: Leak trait
4.7.2.2.
Scope API
4.7.3.
Async iteration
❱
4.7.3.1.
Traits
4.7.3.2.
Generators
4.7.4.
Portable and interoperable
❱
4.7.4.1.
Read/write traits
4.7.4.2.
Timers
4.7.4.3.
Spawn
4.7.4.4.
Runtime
4.7.5.
Polish
❱
4.7.5.1.
must_not_suspend lint
4.7.5.2.
Lint blocking fns
4.7.5.3.
Lint large copies
4.7.5.4.
Error messages for the most confusing scenarios
4.7.5.5.
Stacktraces
4.7.5.6.
Precise Generator Captures
4.7.5.7.
Sync and async behave the same
4.7.6.
Tooling
❱
4.7.6.1.
Crashdump
4.7.7.
Testing
4.7.8.
Documentation
❱
4.7.8.1.
Async book
4.7.9.
Threadsafe portability
4.7.10.
Async overloading
4.8.
❓ Major unresolved questions or controversies
❱
4.8.1.
Default runtime?
4.8.2.
How to represent the AsyncFn traits?
4.8.3.
How best to integrate voluntary cancellation?
4.8.4.
Extend stdlib to permit portable async without generics?
4.8.5.
To await or not to await?
4.9.
💝 Appendix: Submitted stories
❱
4.9.1.
😱 Status quo
❱
4.9.1.1.
Template
4.9.1.2.
Alan builds a task scheduler
4.9.1.3.
Alan creates a hanging alarm
4.9.1.4.
Alan finds dropping database handles is hard
4.9.1.5.
Alan has an external event loop
4.9.1.6.
Alan hates writing a Stream
4.9.1.7.
Alan iteratively regresses performance
4.9.1.8.
Alan lost the world
4.9.1.9.
Alan misses C# async
4.9.1.10.
Alan needs async in traits
4.9.1.11.
Alan runs into stack trouble
4.9.1.12.
Alan started trusting the Rust compiler, but then... async
4.9.1.13.
Alan thinks he needs async locks
4.9.1.14.
Alan tries using a socket Sink
4.9.1.15.
Alan tries to debug a hang
4.9.1.16.
Alan tries to cache requests, which doesn't always happen
4.9.1.17.
Alan tries tries processing some files
4.9.1.18.
Alan wants a prefetch iterator
4.9.1.19.
Alan wants to migrate a web server to Rust
4.9.1.20.
Alan writes a web framework
4.9.1.21.
Alan extends an AWS service
❱
4.9.1.21.1.
Writing a Java-based service at AWS
4.9.1.21.2.
Getting started with Rust
4.9.1.21.3.
Coming from Java
4.9.1.21.4.
Exploring the ecosystem
4.9.1.21.5.
Juggling error handling
4.9.1.21.6.
Failure to parallelize
4.9.1.21.7.
Borrow check errors
4.9.1.21.8.
Solving a deadlock
4.9.1.21.9.
Encoutering pin
4.9.1.21.10.
Figuring out the best option
4.9.1.21.11.
Testing his service
4.9.1.21.12.
Using the debugger
4.9.1.21.13.
Missed Waker leads to lost performance
4.9.1.21.14.
Debugging performance problems
4.9.1.21.15.
Getting ready to deply
4.9.1.21.16.
Using JNI
4.9.1.22.
Barbara anguishes over HTTP
4.9.1.23.
Barbara awants single threaded optimizations
4.9.1.24.
Barbara battles buffered streams
4.9.1.25.
Barbara begets backpressure and benchmarks async_trait
4.9.1.26.
Barbara bridges sync and async in perf.rust-lang.org
4.9.1.27.
Barbara builds an async executor
4.9.1.28.
Barbara carefully dismisses embedded Future
4.9.1.29.
Barbara compares some C++ code
4.9.1.30.
Barbara gets burned by select
4.9.1.31.
Barbara makes their first foray into async
4.9.1.32.
Barbara needs Async Helpers
4.9.1.33.
Barbara plays with async
4.9.1.34.
Barbara polls a Mutex
4.9.1.35.
Barbara tries async streams
4.9.1.36.
Barbara tries Unix socket
4.9.1.37.
Barbara trims a stacktrace
4.9.1.38.
Barbara wants async insights
4.9.1.39.
Barbara wants to use GhostCell-like cell borrowing
4.9.1.40.
Barbara wishes for an easy runtim switch
4.9.1.41.
Barbara writes a runtime-agnostic library
4.9.1.42.
Grace debugs a crash dump
4.9.1.43.
Grace deploys her service and hits obstacles
4.9.1.44.
Grace tries new libraries
4.9.1.45.
Grace waits for gdb next
4.9.1.46.
Grace wants a zero copy API
4.9.1.47.
Grace wants to integrate a C-API
4.9.1.48.
Grace writes a new Facebook service
4.9.1.49.
Niklaus builds a hydrodynamics simulator
4.9.1.50.
Niklaus wants to share knowledge
4.9.2.
✨ Shiny future
❱
4.9.2.1.
Template
4.9.2.2.
Alan learns async on his own
4.9.2.3.
Alan's trust in the compiler is rewarded
4.9.2.4.
Alan switches runtimes
4.9.2.5.
Barbara appreciates great performance analysis tools
4.9.2.6.
Barbara enjoys an async sandwich
4.9.2.7.
Barbara makes a wish
4.9.2.8.
Barbara wants async read write
4.9.2.9.
Barbara wants async tracing
4.9.2.10.
Grace debugs a crash dump again
5.
Design docs
❱
5.1.
⚠️ Yield-safe lint
5.2.
☔ Stream trait
5.3.
⚡ Generator syntax
5.4.
📝 AsyncRead, AsyncWrite traits
5.5.
🧬 Async fn in traits
5.6.
🔒 Mutex (future-aware)
5.7.
📺 Async aware channels
5.8.
📦 Async closures
5.9.
🤝 Join combinator
5.10.
🤷♀️ Select combinator
5.11.
🚰 Sink trait
5.12.
🎇 Async main
5.13.
🗑️ Async drop
❱
5.13.1.
♻️ Async lifecycle
5.14.
⏳ Completion-based futures
5.15.
🥞 Async Stack Traces
6.
Conversations
❱
6.1.
2021-02-12 Twitter thread
7.
Glossary
8.
Acknowledgments
Light
Rust
Coal
Navy
Ayu
wg-async
🔒 Mutex (future-aware)