skip to main content
research-article

The two-state solution: native and serializable continuations accord

Published:17 October 2010Publication History
Skip Abstract Section

Abstract

Continuation-based Web servers provide advantages over traditional Web application development through the increase of expressive power they allow. This leads to fewer errors and more productivity for the programmers that adopt them. Unfortunately, existing implementation techniques force a hard choice between scalability and expressiveness.

Our technique allows a smoother path to scalable, continuation-based Web programs. We present a modular program transformation that allows scalable Web applications to use third-party, higher-order libraries with higher-order arguments that cause Web interaction. Consequently, our system provides existing Web applications with more scalability through significantly less memory use than the traditional technique.

References

  1. }}Henry Cejtin, Suresh Jagannathan, and Richard Kelsey. Higher- order distributed objects. ACM Transactions on Programming Languages and Systems, September 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. }}John Clements, Matthew Flatt, and Matthias Felleisen. Modeling an algebraic stepper. In European Symposium on Programming, April 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. }}William D. Clinger, Anne H. Hartheimer, and Eric M. Ost. Imple- mentation strategies for first-class continuations. Higher Order and Symbolic Computation, 12(1):7--45, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. }}Ezra Cooper, Sam Lindley, Philip Wadler, and Jeremy Yallop. Links: Web programming without tiers. In Formal Methods for Components and Objects, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. }}Stephane Ducasse, Adrian Lienhard, and Lukas Renggli. Seaside - a multiple control flow web application framework. In European Smalltalk User Group - Research Track, 2004.Google ScholarGoogle Scholar
  6. }}R. Kent Dyvbig, Simon Peyton Jones, and Amr Sabry. A monadic framework for delimited continuations. Journal of Functional Programming, 17(6):687--730, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. }}Matthias Felleisen and Robert Hieb. The revised report on the syntactic theories of sequential control and state. Theoretical Computer Science, 102:235--271, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. }}M. J. Fischer. Lambda calculus schemata. ACM SIGPLAN Notices, 7(1):104--109, 1972. In the ACM Conference on Proving Assertions about Programs. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. }}Cormac Flanagan, Amr Sabry, Bruce F. Duba, and Matthias Felleisen. The essence of compiling with continuations. SIGPLAN Notices, 39(4):502--514, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. }}Matthew Flatt and PLT. Reference: Racket. Technical Report PLT-TR2010-1, PLT Inc., June 7, 2010. http://racket-lang.org/tr1/.Google ScholarGoogle Scholar
  11. }}Matthew Flatt, Gang Yu, Robert Bruce Findler, and Matthias Felleisen. Adding delimited and composable control to a production programming environment. In International Conference on Functional Programming, 200URL http://www.cs.utah.edu/plt/delim-cont/. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. }}Martin Gasbichler and Michael Sperber. Final shift for call/cc:: direct implementation of shift and reset. SIGPLAN Notices, 37 (9):271--282, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. }}Paul Graham. Lisp for web-based applications, 2001. http://www.paulgraham.com/lwba.html.Google ScholarGoogle Scholar
  14. }}Robert Hieb, R. Kent Dybvig, and Carl Bruggeman. Representing control in the presence of first-class continuations. In ACM SIGPLAN Conference on Programming Language Design and Implementation, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. }}John Hughes. Generalising monads to arrows. Science of Computer Programming, 37(1-3):67--111, May 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. }}Thomas Johnsson. Lambda lifting: transforming programs to re- cursive equations. In Functional Programming Languages and Computer Architecture, pages 190--203, 1985. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. }}Shriram Krishnamurthi, Peter Walton Hopkins, Jay McCarthy, Paul T. Graunke, Greg Pettyjohn, and Matthias Felleisen. Implementation and Use of the PLT Scheme Web Server. Higher-Order and Symbolic Computation, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. }}Jacob Matthews, Robert Bruce Findler, Paul T. Graunke, Shriram Krishnamurthi, and Matthias Felleisen. Automatically restructuring programs for the Web. Automated Software Engineering, 11(4):337--364, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. }}Jay McCarthy. Automatically restful web applications or, marking modular serializable continuations. In International Conference on Functional Programming, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. }}Greg Pettyjohn, John Clements, Joe Marshall, Shriram Krishna- murthi, and Matthias Felleisen. Continuations from generalized stack inspection. In International Conference on Functional Programming, September 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. }}Gordon D. Plotkin. Call-by-name, call-by-value, and the lambda- calculus. Theoretical Computer Science, 1975.Google ScholarGoogle Scholar
  22. }}Christian Queinnec. The influence of browsers on evaluators or, continuations to program web servers. In International Conference on Functional Programming, pages 23--33, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. }}Peter Thiemann. Wash server pages. Functional and Logic Programming, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. }}Noel Welsh and David Gurnell. Experience report: Scheme in commercial web application development. In International Conference on Functional Programming, September 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. The two-state solution: native and serializable continuations accord

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!