skip to main content
research-article

Ur/Web: A Simple Model for Programming the Web

Published:14 January 2015Publication History
Skip Abstract Section

Abstract

The World Wide Web has evolved gradually from a document delivery platform to an architecture for distributed programming. This largely unplanned evolution is apparent in the set of interconnected languages and protocols that any Web application must manage. This paper presents Ur/Web, a domain-specific, statically typed functional programming language with a much simpler model for programming modern Web applications. Ur/Web's model is unified, where programs in a single programming language are compiled to other "Web standards" languages as needed; supports novel kinds of encapsulation of Web-specific state; and exposes simple concurrency, where programmers can reason about distributed, multithreaded applications via a mix of transactions and cooperative preemption. We give a tutorial introduction to the main features of Ur/Web and discuss the language implementation and the production Web applications that use it.

Skip Supplemental Material Section

Supplemental Material

p153-sidebyside.mpg

References

  1. J. Armstrong. Erlang -- a survey of the language and its industrial applications. In Proc. INAP, pages 16--18, 1996.Google ScholarGoogle Scholar
  2. D. Atkins, T. Ball, M. Benedikt, G. Bruns, K. Cox, P. Mataga, and K. Rehor. Experience with a domain specific language for form-based services. In Proc. DSL, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. V. Balat. Ocsigen: typing Web interaction with Objective Caml. In Proc. ML Workshop, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. V. Balat, J. Vouillon, and B. Yakobowski. Experience report: Ocsigen, a Web programming framework. In Proc. ICFP, pages 311--316. ACM, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. G. Berry and M. Serrano. Hop and HipHop: Multitier web orchestration. In Proc. ICDCIT, pages 1--13, 2014.Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. S. Burckhardt, M. Fahndrich, P. de Halleux, S. McDirmid, M. Moskal, N. Tillmann, and J. Kato. It's alive! Continuous feedback in UI programming. In phProc. PLDI, pages 95--104. ACM, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. J. Cheney, S. Lindley, and P. Wadler. A practical theory of language-integrated query. In Proc. ICFP, pages 403--416. ACM, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. A. Chlipala. Ur: Statically-typed metaprogramming with type-level record computation. In Proc. PLDI, pages 122--133. ACM, 2010\natexlaba. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. A. Chlipala. Static checking of dynamically-varying security policies in database-backed applications. In Proc. OSDI, pages 105--118, 2010\natexlabb. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. A. S. Christensen, A. Müller, and M. I. Schwartzbach. Extending Java for high-level Web service construction. TOPLAS, 25 (6): 814--875, November 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. E. Cooper, S. Lindley, P. Wadler, and J. Yallop. Links: Web programming without tiers. In Proc. FMCO, pages 266--296, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. E. Cooper, S. Lindley, P. Wadler, and J. Yallop. The essence of form abstraction. In Proc. APLAS, pages 205--220. Springer-Verlag, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. E. E. Cooper and P. Wadler. The RPC Calculus. In Proc. PPDP, pages 231--242. ACM, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. E. Czaplicki and S. Chong. Asynchronous functional reactive programming for GUIs. In Proc. PLDI, pages 411--422. ACM, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. S. Ducasse, A. Lienhard, and L. Renggli. Seaside -- a multiple control flow Web application framework. In European Smalltalk User Group -- Research Track, 2004.Google ScholarGoogle Scholar
  16. A. Frisch. OCaml + XDuce. In Proc. ICFP, pages 192--200. ACM, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. J. Gray. The transaction concept: Virtues and limitations (invited paper). In Proc. VLDB, pages 144--154, 1981. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. T. Harris, S. Marlow, S. Peyton-Jones, and M. Herlihy. Composable memory transactions. In Proc. PPoPP, pages 48--60. ACM, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. H. Hosoya, J. Vouillon, and B. C. Pierce. Regular expression types for XML. In Proc. ICFP, pages 11--22. ACM, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. S. Krishnamurthi, P. W. Hopkins, J. McCarthy, P. T. Graunke, G. Pettyjohn, and M. Felleisen. Implementation and use of the PLT Scheme Web Server. Higher Order Symbol. Comput., 20 (4): 431--460, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. A. Krishnamurthy, A. Mettler, and D. Wagner. Fine-grained privilege separation for Web applications. InProc. WWW, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. H. M. Levy. Capability-Based Computer Systems. Butterworth-Heinemann, Newton, MA, USA, 1984. ISBN 0932376223. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. D. MacQueen. Modules for Standard ML. In Proc. LFP, pages 198--207. ACM, 1984. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. S. Maffeis, J. Mitchell, and A. Taly. Object capabilities and isolation of untrusted Web applications. In Proc. IEEE S&P, pages 125--140, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. J. McCarthy. Automatically RESTful Web applications or, marking modular serializable continuations. In Proc. ICFP. ACM, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. J. McCarthy and S. Krishnamurthi. Interaction-safe state for the Web. InProc. Scheme and Functional Programming, 2006.Google ScholarGoogle Scholar
  27. E. Meijer, B. Beckman, and G. Bierman. LINQ: Reconciling objects, relations and XML in the .NET framework. In Proc. SIGMOD, pages 706--706. ACM, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. L. A. Meyerovich, A. Guha, J. Baskin, G. H. Cooper, M. Greenberg, A. Bromfield, and S. Krishnamurthi. Flapjax: A programming language for Ajax applications. In Proc. OOPSLA, pages 1--20. ACM, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. S. L. Peyton Jones and P. Wadler. Imperative functional programming. In Proc. POPL, pages 71--84. ACM, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. D. R. K. Ports and K. Grittner. Serializable Snapshot Isolation in PostgreSQL. Proc. VLDB Endow., 5 (12): 1850--1861, Aug. 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. J. H. Reppy. Concurrent Programming in ML. Cambridge University Press, 1999. ISBN 0-521-48089-2. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. M. Serrano. Hop, a fast server for the diffuse web. In Proc. COORDINATION, pages 1--26. Springer-Verlag, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. M. Serrano, E. Gallesio, and F. Loitsch. Hop, a language for programming the Web 2.0. In Proc. DLS, 2006.Google ScholarGoogle Scholar
  34. N. Shavit and D. Touitou. Software transactional memory. In Proc. PODC, pages 204--213. ACM, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. N. Tillmann, M. Moskal, J. de Halleux, and M. Fahndrich. TouchDevelop: Programming cloud-connected mobile devices via touchscreen. In Proc. ONWARD, pages 49--60. ACM, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. J. Vouillon. Lwt: A cooperative thread library. In Proc. ML Workshop, pages 3--12. ACM, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. P. Wadler and S. Blott. How to make ad-hoc polymorphism less ad hoc. In Proc. POPL, pages 60--76. ACM, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Ur/Web: A Simple Model for Programming the Web

            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!