C++ links: Coroutines
https://github.com/MattPD/cpplinks / C++ Standard / C++20 / Coroutines
(draft; work in progress)
#coroutines (C++ Slack): https://cpplang.slack.com/archives/C5JS5JXT5
- https://en.cppreference.com/w/cpp/language/coroutines
- Working Draft, C++ Coroutines
- https://wg21.link/n4775
- merged into C++20, http://wg21.link/p0912
- Brain Unrolling: Generators and the Sweet Syntactic Sugar of Coroutines
- C++20: A coroutine based stream parser
- Coroutines TS Customization Points - https://hackmd.io/s/S1H_loeA7
- http://www.vishalchovatiya.com/cpp20-coroutine-under-the-hood/
- David Mazières
- My tutorial and take on C++20 coroutines - https://www.scs.stanford.edu/~dm/blog/c++-coroutines.html
- Dawid Pilarski
- Coroutines introduction - https://blog.panicsoftware.com/coroutines-introduction/
- Your first coroutine - https://blog.panicsoftware.com/your-first-coroutine/
- co_awaiting coroutines - https://blog.panicsoftware.com/co_awaiting-coroutines/
- How C++ coroutines work - Kirit Sælensminde
- Lewis Baker - C++ Coroutines:
- Coroutine Theory - https://lewissbaker.github.io/2017/09/25/coroutine-theory
- Understanding operator co_await - https://lewissbaker.github.io/2017/11/17/understanding-operator-co-await
- Understanding the promise type - https://lewissbaker.github.io/2018/09/05/understanding-the-promise-type
- Understanding Symmetric Transfer - https://lewissbaker.github.io/2020/05/11/understanding_symmetric_transfer
- Painless C++ Coroutines - Gajendra Gulgulia
- https://ggulgulia.medium.com/painless-c-coroutines-part-1-ba90dd101adb?sk=fad5c9d7985719e96583c999b51c8a1e
- https://ggulgulia.medium.com/painless-coroutines-part2-29b36008b507?sk=6fa83a32164a2a043e6714d0e38886e5
- https://ggulgulia.medium.com/painless-c-coroutine-part-3-536e4bce4f4f?sk=03a1bc6ad642b9398710397a2e7ac3fd
- Rainer Grimm - ModernesCpp.com
- Raymond Chen - A map through the three major coroutine series
- What are coroutines and why should I care? - Marco Alesiani
- cpprefjp - C++日本語リファレンス (Japanese reference)
- language feature - https://cpprefjp.github.io/lang/cpp20/coroutines.html
<coroutine>
- https://cpprefjp.github.io/reference/coroutine.html
- GCC implementation
- https://gcc.gnu.org/wiki/cxx-coroutines
- Initial implementation pushed to master.
- LLVM implementation
- Coroutines in LLVM - https://llvm.org/docs/Coroutines.html
- [RFC] [Coroutines] Enable printing coroutine frame in debugger if program is compiled with -g
- CoroBase: Coroutine-Oriented Main-Memory Database Engine
- VLDB 2021
- Yongjun He, Jiacheng Lu, Tianzheng Wang
- a research database engine that models transactions as C++20 coroutines to hide cache misses
- https://github.com/sfu-dis/corobase
- https://arxiv.org/abs/2010.15981
- http://www.vldb.org/pvldb/vol14/p431-he.pdf
- Bridging the Latency Gap between NVM and DRAM for Latency-bound Operations
- interleaving task execution with C++20 coroutines to hide memory access latency
- Data Management on New Hardware (DaMoN) 2019
- Georgios Psaropoulos, Ismail Oukid, Thomas Legler, Norman May, Anastasia Ailamaki
- https://dl.acm.org/citation.cfm?id=3329917
- Don’t stall – multitask! Random access to main memory with cache-like performance
- Exploiting Coroutines to Attack the "Killer Nanoseconds"
- PVLDB 11, 11 (July 2018)
- Christopher Jonathan, Umar Farooq Minhas, James Hunter, Justin Levandoski, Gor Nishanov
- http://www.vldb.org/pvldb/vol11/p1702-jonathan.pdf
- Interleaving with Coroutines: A Practical Approach for Robust Index Joins
- PVLDB 11, 2 (October 2017)
- Georgios Psaropoulos, Thomas Legler, Norman May, and Anastasia Ailamaki
- http://www.vldb.org/pvldb/vol11/p230-psaropoulos.pdf
- CppCoro - A coroutine library for C++
- Conduit: Lazy High Performance Streams using Coroutine TS
- folly::coro - a developer-friendly asynchronous C++ framework based on Coroutines TS
- libc++
- http://cppcast.com/2017/07/gor-nishanov/
- Compiler Explorer: Coroutines clang demo - https://godbolt.org/g/pq6x57
- Wandbox: Coroutines with Ranges - https://wandbox.org/permlink/D60wIndMZbth7BXS
- David Hollman - https://twitter.com/TheWholeDavid/status/1063135275671535616
- Boost.Asio
- Coop: C++20 coroutines-based cooperative multitasking library
- coro-async - C++ coroutine based networking library (WIP)
- Coroutine TS: A new way of thinking - https://github.com/arBmind/2018-cogen-en
- Exploring the C++ Coroutine - https://github.com/luncliff/coroutine/
- generator: Single-header, ranges-compatible generator type built with C++20 coroutines.
- coro: Single-header library facilities for C++2a Coroutines
- Converting a State Machine to a C++ 20 Coroutine
- Implementing Generators with C++20 Coroutines
- 2021; Sy Brand
- https://www.youtube.com/watch?v=D0snE2-BOwM
- generator: Single-header, ranges-compatible generator type built with C++20 coroutines.
- Understanding C++ Coroutines by Example
- C++ London 2021; Pavel Novikov
- https://www.youtube.com/watch?v=7sKUAyWXNHA
- Slides: https://toughengineer.github.io/talks/C++%20Russia%202020%20Moscow/
- 40 Years Of Evolution from Functions to Coroutines
- Building a Coroutine based Job System without Standard Library
- Corobatch - Batch operations, simply, with coroutines
- C++ London, May 2020; Francesco Zoffoli
- https://www.youtube.com/watch?v=vzi0lTVyb-g
- Corobatch: makes batching operations easy by transforming your single-item code to perform batched operations thanks to coroutines
- code::dive 2019 - C++20 Coroutines: Introduction
- code::dive 2019 - C++20 Coroutines: Asynchronity reimagined
- code::dive 2019 - C++20 Coroutines: What's next?
- Exploring C++20 Coroutines
- C/C++ Dublin User Group 2019; Justin Durkan
- https://www.youtube.com/watch?v=RhXaKOe3JZM
- https://drive.google.com/file/d/1sHtERPE4tgn2R4QeAAN-TlSD_gd9CE3d/view
- Structured Concurrency: Writing Safer Concurrent Code with Coroutines and Algorithms
- CppCon 2019; Lewis Baker
- https://www.youtube.com/watch?v=1Wy5sq3s2rg
- 2019 GNU Tools Cauldron: Iain Sandoe - C++20 Coroutines in GCC
- 2019 Adi Shavit - Generators, Coroutines and Other Brain Unrolling Sweetness
- NDC TechTown: https://www.youtube.com/watch?v=CwCJBpB7Z5w
- CppCon: https://www.youtube.com/watch?v=qYHDERleSL8
- CoreHard Autumn: https://www.youtube.com/watch?v=qjQBAgsj9CI
- code::dive 2019
- 2019 Core C++: Yehezkel Bernat - Coroutines - the future of future (and more)
- 2019 C++ Korea Facebook Group: Park Dong Ha - Exploring the C++ Coroutine: Approach, Compiler, and Issues
- 2018 Meeting C++: Andreas Reischuck - Coroutine TS a new way of thinking
- 2018 CppCon: G. Nishanov “Nano-coroutines to the Rescue! (Using Coroutines TS, of Course)”
- 2018 LLVM Developers’ Meeting: J. McCall “Coroutine Representations and ABIs in LLVM”
- 2018 Core C++: Yehezkel Bernat - Coroutines - Back to the Future
- 2017 CppCon: Anthony Williams “Concurrency, Parallelism and Coroutines” - https://www.youtube.com/watch?v=JvHZ_OECOFU
- 2017 CppCon: Gor Nishanov “Naked coroutines live (with networking)” - https://www.youtube.com/watch?v=UL3TtTgt3oU
- 2017 CppCon: Toby Allsopp “Coroutines: what can't they do?” - https://www.youtube.com/watch?v=mlP1MKP8d_Q
- 2017 Pacific++: Toby Allsopp "An Introduction to the Proposed Coroutine Support for C++"
- 2016 await/yield: C++ coroutines - Zbigniew Skowron - 30 November, 2016 - http://cpp.mimuw.edu.pl/files/await-yield-c++-coroutines.pdf
- 2016 CppCon: Gor Nishanov “C++ Coroutines: Under the covers" - https://www.youtube.com/watch?v=8C8NnE1Dg4A
- 2016 CppCon: James McNellis “Introduction to C++ Coroutines" - https://www.youtube.com/watch?v=ZTqHjjm86Bw
- 2016 LLVM Developers’ Meeting: G. Nishanov “LLVM Coroutines” - https://www.youtube.com/watch?v=Ztr8QvMhqmQ
- 2015 C++Now - Gor Nishanov: C++17 coroutines for app and library developers - https://www.youtube.com/watch?v=proxLbvHGEQ
- 2015 CppCon: Gor Nishanov “C++ Coroutines - a negative overhead abstraction" - https://www.youtube.com/watch?v=_fu0gx-xseY
- 2015 Meeting C++: An Introduction to C++ Coroutines - James McNellis - https://www.youtube.com/watch?v=YYtzQ355_Co