├── Readme.md └── img └── echo-simple-icon-black.svg /Readme.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 | 5 | # Distributed Async Await 6 | 7 | This **reading list** explores the foundational literature that informs the design and development of Distributed Async Await. 8 | 9 | --- 10 | 11 | ## Events vs. Threads 12 | 13 | ### [On the Duality of Operating System Structures](https://dl.acm.org/doi/pdf/10.1145/850657.850658) 14 | * **Author(s):** Hugh C. Lauer, Roger M. Needham 15 | * **Published:** 1979 16 | * **Summary:** This paper discusses the duality between procedure-based systems and event-based systems, illustrating how both paradigms can model equivalent structures. 17 | 18 | ### [Why Threads Are a Bad Idea (for Most Purposes)](https://sites.cc.gatech.edu/classes/AY2010/cs4210_fall/papers/ousterhout-threads.pdf) 19 | * **Author(s):** John Ousterhout 20 | * **Published:** 1995 21 | * **Summary:** The author critiques thread-based implementations for their subpar efficiency compared to event-based implementations. 22 | 23 | ### [Why Events Are a Bad Idea (for High-Concurrency Servers)](https://web.stanford.edu/class/cs240e/papers/threads-hotos-2003.pdf) 24 | * **Author(s):** Rob von Behren, Jeremy Condit, and Eric Brewer 25 | * **Published:** 2003 26 | * **Summary:** The authors critique event-based implementations for their subpar developer experience compared to thread-based implementations. 27 | 28 | --- 29 | 30 | ## Sequential Programming Models & Event-Driven Execution Models 31 | 32 | ### [Cooperative Task Management without Manual Stack Management](https://web.eecs.umich.edu/~mosharaf/Readings/Fibers-Coop-Tasks.pdf) 33 | * **Author(s):** Atul Adya, Jon Howell, Marvin Theimer, William J. Bolosky, John R. Douceur 34 | * **Published:** 2002 35 | * **Summary:** This paper is a foundational contribution to understanding how sequential programming model can be implemented on top of a event-driven execution model. Additionally, the paper introduces the notion of *stack ripping* as the primary reason for the subpar developer experience of event-based implementations. 36 | 37 | ### [A Language-Based Approach to Unifying Events and Threads](https://www.cis.upenn.edu/~stevez/papers/LZ06b.pdf) 38 | * **Author(s):** Peng Li, Steve Zdancewic 39 | * **Published:** 2006 40 | * **Summary:** This paper presents a language-level implementation of a sequential programming model implemented on top of a event-driven execution model. 41 | 42 | ### [Combining Events And Threads For Scalable Network Services. Implementation And Evaluation Of Monadic, Application-level Concurrency Primitives](https://dl.acm.org/doi/10.1145/1273442.1250756) 43 | * **Author(s):** Peng Li, Steve Zdancewic 44 | * **Published:** 2007 45 | * **Summary:** The authors evaluate monadic primitives for managing concurrency at the application level. 46 | 47 | --- 48 | 49 | ## Concurrent Systems 50 | 51 | ### [Revisiting Coroutines](https://dl.acm.org/doi/pdf/10.1145/1462166.1462167) 52 | * **Author(s):** Ana Lucia de Moura, Roberto Ierusalimschy 53 | * **Published:** 2009 54 | * **Summary:** This paper classifies coroutines and provides a formal model using small-step operational semantics, offering insights into their use as an alternative to callbacks. 55 | 56 | ### [A Poor Man’s Concurrency Monad](https://www.cambridge.org/core/services/aop-cambridge-core/content/view/A369E310ADAE4455020C918FC1D47958/S0956796899003342a.pdf/a-poor-mans-concurrency-monad.pdf) 57 | * **Author(s):** Koen Claessen 58 | * **Published:** 1999 59 | * **Summary:** This paper presents an implementation of concurrency by defining atomic operations and continuations. 60 | 61 | ### [Semantics of Asynchronous JavaScript](https://www.microsoft.com/en-us/research/wp-content/uploads/2017/08/asyncNodeSemantics.pdf) 62 | * **Author(s):** Matthew C. Loring, Mark Marron, and Daan Leijen 63 | * **Published:** 2017 64 | * **Summary:** This paper presents a comprehensive 65 | formalization of the Node.js asynchronous execution model 66 | 67 | ### [A Model of Cooperative Threads](https://homepages.inf.ed.ac.uk/gdp/publications/Semantics_Cooperative_Threads_journal.pdf) 68 | * **Author(s):** Martin Abadi, Gordon D. Plotkin 69 | * **Published:** 1998 70 | * **Summary:** This paper develops a model of concurrent imperative programming with threads, focusing on a small imperative language with cooperative threads that execute without interruption until they terminate or explicitly yield control. 71 | --- 72 | 73 | ## Distributed Systems 74 | 75 | ### [A Note on Distributed Computing](https://scholar.harvard.edu/files/waldo/files/waldo-94.pdf) 76 | * **Author(s):** Jim Waldo, Geoff Wyant, Ann Wollrath, and Sam Kendall 77 | * **Published:** 1994 78 | * **Summary:** The authors argue that a distributed system is intrinsicly different from a non-distributes system 79 | 80 | ## Contributing 81 | If you have suggestions for additional papers related to distributed async await, please open an issue or submit a pull request. 82 | 83 | -------------------------------------------------------------------------------- /img/echo-simple-icon-black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Canvas 1 7 | 8 | Layer 1 9 | 10 | layer1 11 | 12 | path1 13 | 14 | 15 | 16 | path1-2-9 17 | 18 | 19 | 20 | path1-2-9-4 21 | 22 | 23 | 24 | path1-2-9-9 25 | 26 | 27 | 28 | path1-2-9-9-0 29 | 30 | 31 | 32 | 33 | 34 | 35 | --------------------------------------------------------------------------------