{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,8,29]],"date-time":"2025-08-29T10:38:07Z","timestamp":1756463887691,"version":"3.41.0"},"publisher-location":"New York, NY, USA","reference-count":60,"publisher":"ACM","license":[{"start":{"date-parts":[[2021,10,17]],"date-time":"2021-10-17T00:00:00Z","timestamp":1634428800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":[],"published-print":{"date-parts":[[2021,10,20]]},"DOI":"10.1145\/3486607.3486751","type":"proceedings-article","created":{"date-parts":[[2021,10,16]],"date-time":"2021-10-16T00:11:33Z","timestamp":1634343093000},"page":"68-84","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":17,"title":["Kotlin coroutines: design and implementation"],"prefix":"10.1145","author":[{"given":"Roman","family":"Elizarov","sequence":"first","affiliation":[{"name":"JetBrains, Russia"}]},{"given":"Mikhail","family":"Belyaev","sequence":"additional","affiliation":[{"name":"JetBrains Research, Russia \/ St. Petersburg Polytechnic University, Russia"}]},{"given":"Marat","family":"Akhin","sequence":"additional","affiliation":[{"name":"JetBrains Research, Russia \/ St. Petersburg Polytechnic University, Russia"}]},{"given":"Ilmir","family":"Usmanov","sequence":"additional","affiliation":[{"name":"JetBrains, Germany"}]}],"member":"320","published-online":{"date-parts":[[2021,10,17]]},"reference":[{"volume-title":"Project Loom: Fibers and Continuations for the Java Virtual Machine. https:\/\/cr.openjdk.java.net\/~rpressler\/loom\/Loom-Proposal.html [Online","year":"2021","key":"e_1_3_2_2_1_1","unstructured":"2018. Project Loom: Fibers and Continuations for the Java Virtual Machine. https:\/\/cr.openjdk.java.net\/~rpressler\/loom\/Loom-Proposal.html [Online ; accessed 15\/04\/ 2021 ]. 2018. Project Loom: Fibers and Continuations for the Java Virtual Machine. https:\/\/cr.openjdk.java.net\/~rpressler\/loom\/Loom-Proposal.html [Online; accessed 15\/04\/2021]."},{"key":"e_1_3_2_2_2_1","volume-title":"https:\/\/elizarov.medium.com\/structured-concurrency-anniversary-f2cc748b2401 [Online","author":"Concurrency Structured","year":"2021","unstructured":"2018. Structured Concurrency . https:\/\/elizarov.medium.com\/structured-concurrency-anniversary-f2cc748b2401 [Online ; accessed 15\/08\/ 2021 ]. 2018. Structured Concurrency. https:\/\/elizarov.medium.com\/structured-concurrency-anniversary-f2cc748b2401 [Online; accessed 15\/08\/2021]."},{"key":"e_1_3_2_2_3_1","volume-title":"https:\/\/stackless.readthedocs.io\/en\/v3.7.5-slp\/stackless-python.html [Online","author":"Stackless-Python","year":"2021","unstructured":"2019. Stackless-Python 3.7.5 documentation. https:\/\/stackless.readthedocs.io\/en\/v3.7.5-slp\/stackless-python.html [Online ; accessed 15\/08\/ 2021 ]. 2019. Stackless-Python 3.7.5 documentation. https:\/\/stackless.readthedocs.io\/en\/v3.7.5-slp\/stackless-python.html [Online; accessed 15\/08\/2021]."},{"key":"e_1_3_2_2_4_1","unstructured":"2020. Erlang Reference Manual. http:\/\/erlang.org\/doc\/reference_manual\/users_guide.html [Online; accessed 15\/08\/2021].  2020. Erlang Reference Manual. http:\/\/erlang.org\/doc\/reference_manual\/users_guide.html [Online; accessed 15\/08\/2021]."},{"volume-title":"The Go Programming Language Specification. https:\/\/golang.org\/ref\/spec [Online","year":"2021","key":"e_1_3_2_2_5_1","unstructured":"2020. The Go Programming Language Specification. https:\/\/golang.org\/ref\/spec [Online ; accessed 15\/08\/ 2021 ]. 2020. The Go Programming Language Specification. https:\/\/golang.org\/ref\/spec [Online; accessed 15\/08\/2021]."},{"key":"e_1_3_2_2_6_1","volume-title":"https:\/\/github.com\/Kotlin\/KEEP\/blob\/master\/proposals\/coroutines.md [Online","author":"Coroutines Kotlin","year":"2021","unstructured":"2020. Kotlin Coroutines . https:\/\/github.com\/Kotlin\/KEEP\/blob\/master\/proposals\/coroutines.md [Online ; accessed 15\/04\/ 2021 ]. 2020. Kotlin Coroutines. https:\/\/github.com\/Kotlin\/KEEP\/blob\/master\/proposals\/coroutines.md [Online; accessed 15\/04\/2021]."},{"key":"e_1_3_2_2_7_1","unstructured":"2020. State of Loom. http:\/\/cr.openjdk.java.net\/~rpressler\/loom\/loom\/sol1_part1.html [Online; accessed 15\/08\/2021].  2020. State of Loom. http:\/\/cr.openjdk.java.net\/~rpressler\/loom\/loom\/sol1_part1.html [Online; accessed 15\/08\/2021]."},{"key":"e_1_3_2_2_8_1","volume-title":"Kotlin language specification (version 1.4-rfc+0.3). https:\/\/kotlinlang.org\/spec [Online","author":"Akhin Marat","year":"2021","unstructured":"Marat Akhin and Mikhail Belyaev . 2020. Kotlin language specification (version 1.4-rfc+0.3). https:\/\/kotlinlang.org\/spec [Online ; accessed 15\/04\/ 2021 ]. Marat Akhin and Mikhail Belyaev. 2020. Kotlin language specification (version 1.4-rfc+0.3). https:\/\/kotlinlang.org\/spec [Online; accessed 15\/04\/2021]."},{"key":"e_1_3_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.5555\/129099"},{"key":"e_1_3_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/872736.806932"},{"key":"e_1_3_2_2_11_1","first-page":"37","article-title":"Non-preemptive","volume":"30","author":"Bartel Joe","year":"2011","unstructured":"Joe Bartel . 2011 . Non-preemptive Multitasking. Comput. J. , 30 (2011), 37 \u2013 39 . Joe Bartel. 2011. Non-preemptive Multitasking. Comput. J., 30 (2011), 37\u201339.","journal-title":"Multitasking. Comput. J."},{"key":"e_1_3_2_2_12_1","volume-title":"https:\/\/wiki.openjdk.java.net\/display\/loom\/Structured+Concurrency [Online","author":"Bateman Alan","year":"2021","unstructured":"Alan Bateman . 2020. Structured Concurrency . https:\/\/wiki.openjdk.java.net\/display\/loom\/Structured+Concurrency [Online ; accessed 15\/08\/ 2021 ]. Alan Bateman. 2020. Structured Concurrency. https:\/\/wiki.openjdk.java.net\/display\/loom\/Structured+Concurrency [Online; accessed 15\/08\/2021]."},{"key":"e_1_3_2_2_13_1","unstructured":"Jeff Bezanson Stefan Karpinski Viral B. Shah and Alan Edelman. 2012. Julia: a Fast Dynamic Language for Technical Computing. arXiv preprint arXiv:1209.5145.  Jeff Bezanson Stefan Karpinski Viral B. Shah and Alan Edelman. 2012. Julia: a Fast Dynamic Language for Technical Computing. arXiv preprint arXiv:1209.5145."},{"key":"e_1_3_2_2_14_1","unstructured":"Graham M. Birtwistle. 1973. Simula Begin. Petrocelli. isbn:9789144062112  Graham M. Birtwistle. 1973. Simula Begin. Petrocelli. isbn:9789144062112"},{"key":"e_1_3_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/355592.365646"},{"key":"e_1_3_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/249069.231395"},{"key":"e_1_3_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796899003342"},{"key":"e_1_3_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/3341643"},{"key":"e_1_3_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/366663.366704"},{"key":"e_1_3_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.5555\/1243380.1243383"},{"key":"e_1_3_2_2_21_1","first-page":"910","article-title":"Coroutines in Lua","volume":"10","author":"De Moura Ana L\u00facia","year":"2004","unstructured":"Ana L\u00facia De Moura , Noemi Rodriguez , and Roberto Ierusalimschy . 2004 . Coroutines in Lua . Journal of Universal Computer Science , 10 , 7 (2004), 910 \u2013 925 . Ana L\u00facia De Moura, Noemi Rodriguez, and Roberto Ierusalimschy. 2004. Coroutines in Lua. Journal of Universal Computer Science, 10, 7 (2004), 910\u2013925.","journal-title":"Journal of Universal Computer Science"},{"key":"e_1_3_2_2_22_1","unstructured":"ECMA International. 2017. Standard ECMA-334 \u2014 C# Language Specification (5 ed.). https:\/\/www.ecma-international.org\/publications\/files\/ECMA-ST\/ECMA-334.pdf  ECMA International. 2017. Standard ECMA-334 \u2014 C# Language Specification (5 ed.). https:\/\/www.ecma-international.org\/publications\/files\/ECMA-ST\/ECMA-334.pdf"},{"key":"e_1_3_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.5555\/1408408"},{"key":"e_1_3_2_2_24_1","volume-title":"Friedman and David Stephen Wise","author":"Daniel","year":"1976","unstructured":"Daniel P. Friedman and David Stephen Wise . 1976 . The Impact of Applicative Programming on Multiprocessing. Indiana University, Computer Science Department . Daniel P. Friedman and David Stephen Wise. 1976. The Impact of Applicative Programming on Multiprocessing. Indiana University, Computer Science Department."},{"key":"e_1_3_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1109\/ESEM.2015.7321196"},{"key":"e_1_3_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-39038-8_8"},{"key":"e_1_3_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/800055.802046"},{"key":"e_1_3_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/359576.359585"},{"key":"e_1_3_2_2_29_1","first-page":"96","article-title":"Yield","volume":"95","author":"James Roshan P.","year":"2011","unstructured":"Roshan P. James and Amr Sabry . 2011 . Yield : Mainstream Delimited Continuations. In First International Workshop on the Theory and Practice of Delimited Continuations. 95 , 96 . Roshan P. James and Amr Sabry. 2011. Yield: Mainstream Delimited Continuations. In First International Workshop on the Theory and Practice of Delimited Continuations. 95, 96.","journal-title":"Mainstream Delimited Continuations. In First International Workshop on the Theory and Practice of Delimited Continuations."},{"volume-title":"The Single UNIX Specification Version 3","author":"Josey Andrew","key":"e_1_3_2_2_30_1","unstructured":"Andrew Josey . 2004. The Single UNIX Specification Version 3 . Open Group . Andrew Josey. 2004. The Single UNIX Specification Version 3. Open Group."},{"key":"e_1_3_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/2489798.2489802"},{"volume-title":"OCCAM 2 Reference Manual","author":"Limited INMOS","key":"e_1_3_2_2_32_1","unstructured":"INMOS Limited and INMOS International . 1988. OCCAM 2 Reference Manual . Prentice Hall . isbn:9780136293125 lccn:87032839 INMOS Limited and INMOS International. 1988. OCCAM 2 Reference Manual. Prentice Hall. isbn:9780136293125 lccn:87032839"},{"key":"e_1_3_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/960116.54016"},{"key":"e_1_3_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.5555\/539627"},{"key":"e_1_3_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.5555\/1698200"},{"key":"e_1_3_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.5555\/549659"},{"key":"e_1_3_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/1462166.1462167"},{"key":"e_1_3_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/115953.115986"},{"key":"e_1_3_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/2692915.2628160"},{"key":"e_1_3_2_2_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/158511.158524"},{"key":"e_1_3_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/3093335.2993243"},{"key":"e_1_3_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.ECOOP.2018.3"},{"key":"e_1_3_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/113446.113470"},{"key":"e_1_3_2_2_44_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01019459"},{"key":"e_1_3_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/1631687.1596596"},{"key":"e_1_3_2_2_46_1","unstructured":"Casey Rosenthal and Nora Jones. 2020. Chaos Engineering. 1005 O\u2019Reilly Media Incorporated.  Casey Rosenthal and Nora Jones. 2020. Chaos Engineering. 1005 O\u2019Reilly Media Incorporated."},{"key":"e_1_3_2_2_47_1","volume-title":"FLEXDROID: Enforcing In-App Privilege Separation in Android. In NDSS.","author":"Seo Jaebaek","year":"2016","unstructured":"Jaebaek Seo , Daehyeok Kim , Donghyun Cho , Insik Shin , and Taesoo Kim . 2016 . FLEXDROID: Enforcing In-App Privilege Separation in Android. In NDSS. Jaebaek Seo, Daehyeok Kim, Donghyun Cho, Insik Shin, and Taesoo Kim. 2016. FLEXDROID: Enforcing In-App Privilege Separation in Android. In NDSS."},{"volume-title":"Working draft, standard for programming language C++, document N4868. ISO\/IEC JTC1\/SC22\/WG21","author":"Smith Richard","key":"e_1_3_2_2_48_1","unstructured":"Richard Smith . 2020. Working draft, standard for programming language C++, document N4868. ISO\/IEC JTC1\/SC22\/WG21 , http:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2020\/n4868.pdf Richard Smith. 2020. Working draft, standard for programming language C++, document N4868. ISO\/IEC JTC1\/SC22\/WG21, http:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2020\/n4868.pdf"},{"key":"e_1_3_2_2_49_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796809990074"},{"key":"e_1_3_2_2_50_1","volume-title":"https:\/\/250bpm.com\/blog:71\/ [Online","author":"S\u00fastrik Martin","year":"2021","unstructured":"Martin S\u00fastrik . 2018. Structured Concurrency . https:\/\/250bpm.com\/blog:71\/ [Online ; accessed 15\/08\/ 2021 ]. Martin S\u00fastrik. 2018. Structured Concurrency. https:\/\/250bpm.com\/blog:71\/ [Online; accessed 15\/08\/2021]."},{"key":"e_1_3_2_2_51_1","unstructured":"Don Syme. 2012. The 2.0 Language Specification. https:\/\/fsharp.org\/specs\/language-spec\/2.0\/FSharpSpec-2.0-April-2012.pdf  Don Syme. 2012. The 2.0 Language Specification. https:\/\/fsharp.org\/specs\/language-spec\/2.0\/FSharpSpec-2.0-April-2012.pdf"},{"key":"e_1_3_2_2_52_1","volume-title":"Practical Aspects of Declarative Languages","author":"Syme Don","year":"1837","unstructured":"Don Syme , Tomas Petricek , and Dmitry Lomov . 2011. The F# Asynchronous Programming Model . In Practical Aspects of Declarative Languages , Ricardo Rocha and John Launchbury (Eds.). Springer Berlin Heidelberg , Berlin, Heidelberg . 175\u2013189. isbn:978-3-642- 1837 8-2 Don Syme, Tomas Petricek, and Dmitry Lomov. 2011. The F# Asynchronous Programming Model. In Practical Aspects of Declarative Languages, Ricardo Rocha and John Launchbury (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 175\u2013189. isbn:978-3-642-18378-2"},{"key":"e_1_3_2_2_53_1","volume-title":"Extending the Async Methods in. https:\/\/devblogs.microsoft.com\/premier-developer\/extending-the-async-methods-in-c\/ [Online","author":"Tepliakov Sergey","year":"2021","unstructured":"Sergey Tepliakov . 2018. Extending the Async Methods in. https:\/\/devblogs.microsoft.com\/premier-developer\/extending-the-async-methods-in-c\/ [Online ; accessed 15\/08\/ 2021 ]. Sergey Tepliakov. 2018. Extending the Async Methods in. https:\/\/devblogs.microsoft.com\/premier-developer\/extending-the-async-methods-in-c\/ [Online; accessed 15\/08\/2021]."},{"key":"e_1_3_2_2_54_1","volume-title":"Joule: Distributed Application Foundations. ADd03.","author":"Tribble E. Dean","year":"1995","unstructured":"E. Dean Tribble , Mark S. Miller , Norm Hardy , and David Krieger . 1995 . Joule: Distributed Application Foundations. ADd03. E. Dean Tribble, Mark S. Miller, Norm Hardy, and David Krieger. 1995. Joule: Distributed Application Foundations. ADd03."},{"key":"e_1_3_2_2_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/3297858.3304069"},{"key":"e_1_3_2_2_56_1","unstructured":"Raoul-Gabriel Urma Mario Fusco and Alan Mycroft. 2014. Java 8 in Action. Manning publications.  Raoul-Gabriel Urma Mario Fusco and Alan Mycroft. 2014. Java 8 in Action. Manning publications."},{"key":"e_1_3_2_2_57_1","volume-title":"The Ultimate Breakdown of Kotlin Coroutines. https:\/\/ilmirus.blogspot.com\/2021\/01\/the-ultimate-breakdown-of-kotlin.html [Online","author":"Usmanov Ilmir","year":"2021","unstructured":"Ilmir Usmanov . 2021. The Ultimate Breakdown of Kotlin Coroutines. https:\/\/ilmirus.blogspot.com\/2021\/01\/the-ultimate-breakdown-of-kotlin.html [Online ; accessed 15\/04\/ 2021 ]. Ilmir Usmanov. 2021. The Ultimate Breakdown of Kotlin Coroutines. https:\/\/ilmirus.blogspot.com\/2021\/01\/the-ultimate-breakdown-of-kotlin.html [Online; accessed 15\/04\/2021]."},{"volume-title":"Recursive Definition of Syntax and Semantics","author":"van Wijngaarden Adriaan","key":"e_1_3_2_2_58_1","unstructured":"Adriaan van Wijngaarden . 1966. Recursive Definition of Syntax and Semantics . North Holland Publishing Company . Adriaan van Wijngaarden. 1966. Recursive Definition of Syntax and Semantics. North Holland Publishing Company."},{"key":"e_1_3_2_2_59_1","doi-asserted-by":"publisher","DOI":"10.5555\/647698.734146"},{"key":"e_1_3_2_2_60_1","unstructured":"Niklaus Wirth. 1956. Programming in Modula-2. Ju Lin. lccn:84026838  Niklaus Wirth. 1956. Programming in Modula-2. Ju Lin. lccn:84026838"}],"event":{"name":"SPLASH '21: Software for Humanity","sponsor":["SIGPLAN ACM Special Interest Group on Programming Languages"],"location":"Chicago IL USA","acronym":"SPLASH '21"},"container-title":["Proceedings of the 2021 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software"],"original-title":[],"link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3486607.3486751","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3486607.3486751","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T20:48:39Z","timestamp":1750193319000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3486607.3486751"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,10,17]]},"references-count":60,"alternative-id":["10.1145\/3486607.3486751","10.1145\/3486607"],"URL":"https:\/\/doi.org\/10.1145\/3486607.3486751","relation":{},"subject":[],"published":{"date-parts":[[2021,10,17]]},"assertion":[{"value":"2021-10-17","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}