{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2023,1,14]],"date-time":"2023-01-14T02:52:40Z","timestamp":1673664760631},"reference-count":54,"publisher":"Springer Science and Business Media LLC","issue":"3","license":[{"start":{"date-parts":[[2011,9,1]],"date-time":"2011-09-01T00:00:00Z","timestamp":1314835200000},"content-version":"tdm","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Higher-Order Symb Comput"],"published-print":{"date-parts":[[2011,9]]},"DOI":"10.1007\/s10990-012-9084-5","type":"journal-article","created":{"date-parts":[[2012,8,2]],"date-time":"2012-08-02T09:57:14Z","timestamp":1343901434000},"page":"239-279","source":"Crossref","is-referenced-by-count":3,"title":["Continuation-Passing C, compiling threads to events through continuations"],"prefix":"10.1007","volume":"24","author":[{"given":"Gabriel","family":"Kerneis","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Juliusz","family":"Chroboczek","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2012,7,24]]},"reference":[{"key":"9084_CR1","first-page":"289","volume-title":"Proceedings of the 2002 USENIX Annual Technical Conference","author":"A. Adya","year":"2002","unstructured":"Adya, A., Howell, J., Theimer, M., Bolosky, W.J., Douceur, J.R.: Cooperative task management without manual stack management. In: Proceedings of the 2002 USENIX Annual Technical Conference, pp.\u00a0289\u2013302. USENIX Association, Berkeley (2002)"},{"key":"9084_CR2","volume-title":"Compiling with Continuations","author":"A.W. Appel","year":"1992","unstructured":"Appel, A.W.: Compiling with Continuations. Cambridge University Press, Cambridge (1992)"},{"key":"9084_CR3","unstructured":"Attar, P., Canal, Y.: R\u00e9alisation d\u2019un seeder bittorrent en CPC (2009). http:\/\/www.pps.univ-paris-diderot.fr\/~jch\/software\/hekate\/hekate-attar-canal.pdf"},{"issue":"5","key":"9084_CR4","doi-asserted-by":"crossref","first-page":"268","DOI":"10.1145\/1165389.945471","volume":"37","author":"R. Behren von","year":"2003","unstructured":"von Behren, R., Condit, J., Zhou, F., Necula, G.C., Brewer, E.: Capriccio: scalable threads for internet services. SIGOPS Oper. Syst. Rev. 37(5), 268\u2013281 (2003)","journal-title":"SIGOPS Oper. Syst. Rev."},{"key":"9084_CR5","doi-asserted-by":"crossref","first-page":"181","DOI":"10.1023\/A:1020891112409","volume":"15","author":"J. Berdine","year":"2002","unstructured":"Berdine, J., O\u2019Hearn, P., Reddy, U., Thielecke, H.: Linear continuation-passing. High.-Order Symb. Comput. 15, 181\u2013208 (2002)","journal-title":"High.-Order Symb. Comput."},{"issue":"5","key":"9084_CR6","doi-asserted-by":"crossref","first-page":"445","DOI":"10.1002\/cpe.919","volume":"18","author":"F. Boussinot","year":"2006","unstructured":"Boussinot, F.: FairThreads: mixing cooperative and preemptive threads in C. Concurr. Comput., Pract. Exp. 18(5), 445\u2013469 (2006)","journal-title":"Concurr. Comput., Pract. Exp."},{"key":"9084_CR7","doi-asserted-by":"crossref","first-page":"99","DOI":"10.1145\/231379.231395","volume-title":"Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language Design and Implementation, PLDI \u201996","author":"C. Bruggeman","year":"1996","unstructured":"Bruggeman, C., Waddell, O., Dybvig, R.K.: Representing control in the presence of one-shot continuations. In: Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language Design and Implementation, PLDI \u201996, pp. 99\u2013107. ACM, New York (1996)"},{"key":"9084_CR8","unstructured":"Chroboczek, J.: Continuation-passing for C: a space-efficient implementation of concurrency. Tech. rep., PPS, Universit\u00e9 Paris 7 (2005). http:\/\/hal.archives-ouvertes.fr\/hal-00135160\/"},{"issue":"3","key":"9084_CR9","doi-asserted-by":"crossref","first-page":"313","DOI":"10.1017\/S0956796899003342","volume":"9","author":"K. Claessen","year":"1999","unstructured":"Claessen, K.: A poor man\u2019s concurrency monad. J. Funct. Program. 9(3), 313\u2013323 (1999)","journal-title":"J. Funct. Program."},{"key":"9084_CR10","doi-asserted-by":"crossref","first-page":"174","DOI":"10.1145\/277650.277719","volume-title":"Proceedings of the ACM SIGPLAN 1998 Conference on Programming Language Design and Implementation, PLDI \u201998","author":"W.D. Clinger","year":"1998","unstructured":"Clinger, W.D.: Proper tail recursion and space efficiency. In: Proceedings of the ACM SIGPLAN 1998 Conference on Programming Language Design and Implementation, PLDI \u201998, pp. 174\u2013185. ACM, New York (1998)"},{"key":"9084_CR11","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"crossref","first-page":"134","DOI":"10.1007\/3-540-45788-7_8","volume-title":"Functional and Logic Programming","author":"O. Danvy","year":"2002","unstructured":"Danvy, O., Schultz, U.: Lambda-lifting in quadratic time. In: Functional and Logic Programming. Lecture Notes in Computer Science, vol. 2441, pp. 134\u2013151. Springer, Berlin (2002)"},{"key":"9084_CR12","unstructured":"Drepper, U., Molnar, I.: The Native POSIX Thread Library for Linux (2005). http:\/\/people.redhat.com\/drepper\/nptl-design.pdf"},{"key":"9084_CR13","unstructured":"Duff, T.: Duff\u2019s device (1983). http:\/\/www.lysator.liu.se\/c\/duffs-device.html . Electronic mail to R.\u00a0Gomes, D.M. Ritchie and R. Pike"},{"key":"9084_CR14","doi-asserted-by":"crossref","first-page":"29","DOI":"10.1145\/1182807.1182811","volume-title":"Proceedings of the 4th International Conference on Embedded Networked Sensor Systems, SenSys \u201906","author":"A. Dunkels","year":"2006","unstructured":"Dunkels, A., Schmidt, O., Voigt, T., Ali, M.: Protothreads: simplifying event-driven programming of memory-constrained embedded systems. In: Proceedings of the 4th International Conference on Embedded Networked Sensor Systems, SenSys \u201906, pp. 29\u201342. ACM, New York (2006)"},{"key":"9084_CR15","doi-asserted-by":"crossref","first-page":"109","DOI":"10.1016\/0096-0551(89)90018-0","volume":"14","author":"R.K. Dybvig","year":"1989","unstructured":"Dybvig, R.K., Hieb, R.: Engines from continuations. Comput. Lang. 14, 109\u2013123 (1989)","journal-title":"Comput. Lang."},{"key":"9084_CR16","volume-title":"Proceedings of the 2000 USENIX Annual Technical Conference","author":"R.S. Engelschall","year":"2000","unstructured":"Engelschall, R.S.: Portable multithreading: the signal stack trick for user-space thread creation. In: Proceedings of the 2000 USENIX Annual Technical Conference. USENIX Association, Berkeley (2000)"},{"key":"9084_CR17","doi-asserted-by":"crossref","first-page":"509","DOI":"10.1017\/S0956796802004604","volume":"13","author":"A. Fischbach","year":"2003","unstructured":"Fischbach, A., Hannan, J.: Specification and correctness of lambda lifting. J. Funct. Program. 13, 509\u2013543 (2003)","journal-title":"J. Funct. Program."},{"key":"9084_CR18","doi-asserted-by":"crossref","first-page":"134","DOI":"10.1145\/1244381.1244403","volume-title":"Proceedings of the 2007 ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, PEPM \u201907","author":"J. Fischer","year":"2007","unstructured":"Fischer, J., Majumdar, R., Millstein, T.: Tasks: language support for event-driven programming. In: Proceedings of the 2007 ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, PEPM \u201907, pp. 134\u2013143. ACM, New York (2007)"},{"key":"9084_CR19","doi-asserted-by":"crossref","first-page":"18","DOI":"10.1145\/317636.317779","volume-title":"Proceedings of the Fourth ACM SIGPLAN International Conference on Functional Programming, ICFP \u201999","author":"S.E. Ganz","year":"1999","unstructured":"Ganz, S.E., Friedman, D.P., Wand, M.: Trampolined style. In: Proceedings of the Fourth ACM SIGPLAN International Conference on Functional Programming, ICFP \u201999, pp. 18\u201327. ACM, New York (1999)"},{"issue":"2\u20133","key":"9084_CR20","doi-asserted-by":"crossref","first-page":"202","DOI":"10.1016\/j.tcs.2008.09.019","volume":"410","author":"P. Haller","year":"2009","unstructured":"Haller, P., Odersky, M.: Scala actors: unifying thread-based and event-based programming. Theor. Comput. Sci. 410(2\u20133), 202\u2013220 (2009)","journal-title":"Theor. Comput. Sci."},{"key":"9084_CR21","doi-asserted-by":"crossref","first-page":"903","DOI":"10.1145\/2048066.2048134","volume-title":"Proceedings of the 2011 ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA \u201911","author":"T. Harris","year":"2011","unstructured":"Harris, T., Abadi, M., Isaacs, R., McIlroy, R.: AC: composable asynchronous IO for native languages. In: Proceedings of the 2011 ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA \u201911, pp. 903\u2013920. ACM, New York (2011)"},{"key":"9084_CR22","doi-asserted-by":"crossref","first-page":"293","DOI":"10.1145\/800055.802046","volume-title":"Proceedings of the 1984 ACM Symposium on LISP and Functional Programming, LFP \u201984","author":"C.T. Haynes","year":"1984","unstructured":"Haynes, C.T., Friedman, D.P., Wand, M.: Continuations and coroutines. In: Proceedings of the 1984 ACM Symposium on LISP and Functional Programming, LFP \u201984, pp. 293\u2013298. ACM, New York (1984)"},{"issue":"10","key":"9084_CR23","doi-asserted-by":"crossref","first-page":"549","DOI":"10.1145\/355620.361161","volume":"17","author":"C.A.R. Hoare","year":"1974","unstructured":"Hoare, C.A.R.: Monitors: an operating system structuring concept. Commun. ACM 17(10), 549\u2013557 (1974)","journal-title":"Commun. ACM"},{"key":"9084_CR24","unstructured":"International Organization for Standardization: ISO\/IEC 9899:1999 \u201cProgramming Languages----C\u201d (1999)"},{"key":"9084_CR25","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"crossref","first-page":"190","DOI":"10.1007\/3-540-15975-4_37","volume-title":"Functional Programming Languages and Computer Architecture","author":"T. Johnsson","year":"1985","unstructured":"Johnsson, T.: Lambda lifting: transforming programs to recursive equations. In: Functional Programming Languages and Computer Architecture. Lecture Notes in Computer Science, vol. 201, pp. 190\u2013203. Springer, Berlin (1985)"},{"key":"9084_CR26","unstructured":"Kerneis, G., Chroboczek, J.: Are events fast? Tech. rep., PPS, Universit\u00e9 Paris 7 (2009). http:\/\/hal.archives-ouvertes.fr\/hal-00434374\/"},{"key":"9084_CR27","volume-title":"Proceedings of the Workshop on Programming Language Approaches to Concurrency and Communication-Centric Software, PLACES\u201911","author":"G. Kerneis","year":"2011","unstructured":"Kerneis, G., Chroboczek, J.: CPC: programming with a massive number of lightweight threads. In: Proceedings of the Workshop on Programming Language Approaches to Concurrency and Communication-Centric Software, PLACES\u201911 (2011)"},{"key":"9084_CR28","unstructured":"Kerneis, G., Chroboczek, J.: Lambda-lifting and CPS conversion in an imperative language. Tech. rep., PPS, Universit\u00e9 Paris 7 (2012). http:\/\/hal.archives-ouvertes.fr\/hal-00669849\/"},{"key":"9084_CR29","unstructured":"Key, A.: Weave: translated threaded source (with annotations) to fibers with context passing (ca. 1995\u20132000). As used within RAID-1 code in IBM SSA RAID adapters. Personal communication"},{"key":"9084_CR30","first-page":"1","volume-title":"Proceedings of the 2007 USENIX Annual Technical Conference","author":"M. Krohn","year":"2007","unstructured":"Krohn, M., Kohler, E., Kaashoek, M.F.: Events can make sense. In: Proceedings of the 2007 USENIX Annual Technical Conference, pp.\u00a01\u201314. USENIX Association, Berkeley (2007)"},{"key":"9084_CR31","doi-asserted-by":"crossref","first-page":"89","DOI":"10.1145\/363744.363749","volume":"8","author":"P.J. Landin","year":"1965","unstructured":"Landin, P.J.: Correspondence between ALGOL 60 and Church\u2019s lambda-notation, part I. Commun. ACM 8, 89\u2013101 (1965)","journal-title":"Commun. ACM"},{"key":"9084_CR32","unstructured":"Leroy, X., Doligez, D., Frisch, A., Garrigue, J., R\u00e9my, D., Vouillon, J.: The Objective-Caml system (2010). http:\/\/caml.inria.fr\/"},{"key":"9084_CR33","doi-asserted-by":"crossref","first-page":"189","DOI":"10.1145\/1250734.1250756","volume-title":"Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI \u201907","author":"P. Li","year":"2007","unstructured":"Li, P., Zdancewic, S.: Combining events and threads for scalable network services implementation and evaluation of monadic, application-level concurrency primitives. In: Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI \u201907, pp. 189\u2013199. ACM, New York (2007)"},{"key":"9084_CR34","unstructured":"Miller, J.S., Rozas, G.J.: Garbage collection is fast, but a stack is faster. AI Memo 1462, Artificial Intelligence Laboratory, Massachusetts Institute of Technology, Cambridge, MA, USA (1994)"},{"key":"9084_CR35","series-title":"Lecture Notes in Computer Science","first-page":"209","volume-title":"Compiler Construction","author":"G. Necula","year":"2002","unstructured":"Necula, G., McPeak, S., Rahul, S., Weimer, W.: CIL: Intermediate language and tools for analysis and transformation of C programs. In: Compiler Construction. Lecture Notes in Computer Science, vol. 2304, pp. 209\u2013265. Springer, Berlin (2002)"},{"key":"9084_CR36","volume-title":"Proceedings of the 1999 USENIX Annual Technical Conference","author":"V.S. Pai","year":"1999","unstructured":"Pai, V.S., Druschel, P., Zwaenepoel, W.: Flash: an efficient and portable web server. In: Proceedings of the 1999 USENIX Annual Technical Conference. USENIX Association, Berkeley (1999)"},{"issue":"2","key":"9084_CR37","doi-asserted-by":"crossref","first-page":"125","DOI":"10.1016\/0304-3975(75)90017-1","volume":"1","author":"G.D. Plotkin","year":"1975","unstructured":"Plotkin, G.D.: Call-by-name, call-by-value and the lambda-calculus. Theor. Comput. Sci. 1(2), 125\u2013159 (1975)","journal-title":"Theor. Comput. Sci."},{"key":"9084_CR38","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"crossref","first-page":"165","DOI":"10.1007\/3-540-56883-2_10","volume-title":"Functional Programming, Concurrency, Simulation and Automated Reasoning","author":"J. Reppy","year":"1993","unstructured":"Reppy, J.: Concurrent ML: Design, application and semantics. In: Functional Programming, Concurrency, Simulation and Automated Reasoning. Lecture Notes in Computer Science, vol. 693, pp. 165\u2013198. Springer, Berlin (1993)"},{"issue":"3","key":"9084_CR39","doi-asserted-by":"crossref","first-page":"233","DOI":"10.1007\/BF01019459","volume":"6","author":"J.C. Reynolds","year":"1993","unstructured":"Reynolds, J.C.: The discoveries of continuations. LISP Symb. Comput. 6(3), 233\u2013247 (1993)","journal-title":"LISP Symb. Comput."},{"key":"9084_CR40","doi-asserted-by":"crossref","first-page":"317","DOI":"10.1145\/1596550.1596596","volume-title":"Proceedings of the 14th ACM SIGPLAN International Conference on Functional Programming, ICFP \u201909","author":"T. Rompf","year":"2009","unstructured":"Rompf, T., Maier, I., Odersky, M.: Implementing first-class polymorphic delimited continuations by a type-directed selective cps-transform. In: Proceedings of the 14th ACM SIGPLAN International Conference on Functional Programming, ICFP \u201909, pp. 317\u2013328. ACM, New York (2009)"},{"key":"9084_CR41","unstructured":"Scholz, E.: A concurrency monad based on constructor primitives, or, being first-class is not enough. Tech. Rep. B 95-01, Fachbereich Mathematik und Informatik, Freie Universit\u00e4t Berlin, Berlin, Germany (1995)"},{"key":"9084_CR42","unstructured":"Shekhtman, G., Abbott, M.: State Threads for internet applications (2009). http:\/\/state-threads.sourceforge.net\/docs\/st.html"},{"key":"9084_CR43","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"crossref","first-page":"104","DOI":"10.1007\/978-3-540-70592-5_6","volume-title":"ECOOP 2008\u2014Object-Oriented Programming","author":"S. Srinivasan","year":"2008","unstructured":"Srinivasan, S., Mycroft, A.: Kilim: Isolation-typed actors for java. In: ECOOP 2008\u2014Object-Oriented Programming. Lecture Notes in Computer Science, vol. 5142, pp. 104\u2013128. Springer, Berlin (2008)"},{"key":"9084_CR44","unstructured":"Steele, G.L., Jr.: Rabbit: A compiler for Scheme. Master\u2019s thesis, Artificial Intelligence Laboratory, Massachusetts Institute of Technology, Cambridge, MA, USA (1978). Technical report AI-TR-474"},{"key":"9084_CR45","unstructured":"Steele, G.L., Jr., Sussman, G.J.: Lambda, the ultimate imperative. AI Memo 353, Artificial Intelligence Laboratory, Massachusetts Institute of Technology, Cambridge, MA, USA (1976)"},{"key":"9084_CR46","unstructured":"Strachey, C., Wadsworth, C.P.: Continuations: a mathematical semantics for handling full jumps. Technical Monograph PRG-11, Oxford University Computing Laboratory, Programming Research Group, Oxford, England (1974). Reprinted in Higher-Order and Symbolic Computation 13(1\/2), 135\u2013152 (2000). With a foreword [51]"},{"key":"9084_CR47","unstructured":"Tatham, S.: Coroutines in C (2000). http:\/\/www.chiark.greenend.org.uk\/~sgtatham\/coroutines.html"},{"issue":"2","key":"9084_CR48","doi-asserted-by":"crossref","first-page":"33","DOI":"10.1145\/568547.568561","volume":"30","author":"H. Thielecke","year":"1999","unstructured":"Thielecke, H.: Continuations functions and jumps. SIGACT News 30(2), 33\u201342 (1999)","journal-title":"SIGACT News"},{"key":"9084_CR49","volume-title":"Proceedings of the 8th International Python Conference","author":"C. Tismer","year":"2000","unstructured":"Tismer, C.: Continuations and stackless Python. In: Proceedings of the 8th International Python Conference (2000)"},{"key":"9084_CR50","doi-asserted-by":"crossref","first-page":"3","DOI":"10.1145\/1411304.1411307","volume-title":"Proceedings of the 2008 ACM SIGPLAN Workshop on ML, ML \u201908","author":"J. Vouillon","year":"2008","unstructured":"Vouillon, J.: Lwt: a cooperative thread library. In: Proceedings of the 2008 ACM SIGPLAN Workshop on ML, ML \u201908, pp. 3\u201312. ACM, New York (2008)"},{"issue":"1\u20132","key":"9084_CR51","doi-asserted-by":"crossref","first-page":"131","DOI":"10.1023\/A:1010074329461","volume":"13","author":"C.P. Wadsworth","year":"2000","unstructured":"Wadsworth, C.P.: Continuations revisited. High.-Order Symb. Comput. 13(1\u20132), 131\u2013133 (2000)","journal-title":"High.-Order Symb. Comput."},{"key":"9084_CR52","doi-asserted-by":"crossref","first-page":"19","DOI":"10.1145\/800087.802786","volume-title":"Proceedings of the 1980 ACM Conference on LISP and Functional Programming, LFP \u201980","author":"M. Wand","year":"1980","unstructured":"Wand, M.: Continuation-based multiprocessing. In: Proceedings of the 1980 ACM Conference on LISP and Functional Programming, LFP \u201980, pp. 19\u201328. ACM, New York (1980)"},{"issue":"5","key":"9084_CR53","doi-asserted-by":"crossref","first-page":"230","DOI":"10.1145\/502059.502057","volume":"35","author":"M. Welsh","year":"2001","unstructured":"Welsh, M., Culler, D., Brewer, E.: SEDA: an architecture for well-conditioned, scalable internet services. SIGOPS Oper. Syst. Rev. 35(5), 230\u2013243 (2001)","journal-title":"SIGOPS Oper. Syst. Rev."},{"key":"9084_CR54","first-page":"13","volume-title":"Formal Language Description Languages for Computer Programming","author":"A. Wijngaarden van","year":"1966","unstructured":"van Wijngaarden, A.: Recursive definition of syntax and semantics. In: Formal Language Description Languages for Computer Programming, pp.\u00a013\u201324. North-Holland, Amsterdam (1966)"}],"container-title":["Higher-Order and Symbolic Computation"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s10990-012-9084-5.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/article\/10.1007\/s10990-012-9084-5\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s10990-012-9084-5","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,6,1]],"date-time":"2019-06-01T01:29:42Z","timestamp":1559352582000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/s10990-012-9084-5"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2011,9]]},"references-count":54,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2011,9]]}},"alternative-id":["9084"],"URL":"https:\/\/doi.org\/10.1007\/s10990-012-9084-5","relation":{},"ISSN":["1388-3690","1573-0557"],"issn-type":[{"value":"1388-3690","type":"print"},{"value":"1573-0557","type":"electronic"}],"subject":[],"published":{"date-parts":[[2011,9]]}}}