skip to main content
10.1145/2676726.2677004acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
research-article

Ur/Web: A Simple Model for Programming the Web

Published: 14 January 2015 Publication History

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.

Supplementary Material

MPG File (p153-sidebyside.mpg)

References

[1]
J. Armstrong. Erlang -- a survey of the language and its industrial applications. In Proc. INAP, pages 16--18, 1996.
[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.
[3]
V. Balat. Ocsigen: typing Web interaction with Objective Caml. In Proc. ML Workshop, 2006.
[4]
V. Balat, J. Vouillon, and B. Yakobowski. Experience report: Ocsigen, a Web programming framework. In Proc. ICFP, pages 311--316. ACM, 2009.
[5]
G. Berry and M. Serrano. Hop and HipHop: Multitier web orchestration. In Proc. ICDCIT, pages 1--13, 2014.
[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.
[7]
J. Cheney, S. Lindley, and P. Wadler. A practical theory of language-integrated query. In Proc. ICFP, pages 403--416. ACM, 2013.
[8]
A. Chlipala. Ur: Statically-typed metaprogramming with type-level record computation. In Proc. PLDI, pages 122--133. ACM, 2010\natexlaba.
[9]
A. Chlipala. Static checking of dynamically-varying security policies in database-backed applications. In Proc. OSDI, pages 105--118, 2010\natexlabb.
[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.
[11]
E. Cooper, S. Lindley, P. Wadler, and J. Yallop. Links: Web programming without tiers. In Proc. FMCO, pages 266--296, 2006.
[12]
E. Cooper, S. Lindley, P. Wadler, and J. Yallop. The essence of form abstraction. In Proc. APLAS, pages 205--220. Springer-Verlag, 2008.
[13]
E. E. Cooper and P. Wadler. The RPC Calculus. In Proc. PPDP, pages 231--242. ACM, 2009.
[14]
E. Czaplicki and S. Chong. Asynchronous functional reactive programming for GUIs. In Proc. PLDI, pages 411--422. ACM, 2013.
[15]
S. Ducasse, A. Lienhard, and L. Renggli. Seaside -- a multiple control flow Web application framework. In European Smalltalk User Group -- Research Track, 2004.
[16]
A. Frisch. OCaml + XDuce. In Proc. ICFP, pages 192--200. ACM, 2006.
[17]
J. Gray. The transaction concept: Virtues and limitations (invited paper). In Proc. VLDB, pages 144--154, 1981.
[18]
T. Harris, S. Marlow, S. Peyton-Jones, and M. Herlihy. Composable memory transactions. In Proc. PPoPP, pages 48--60. ACM, 2005.
[19]
H. Hosoya, J. Vouillon, and B. C. Pierce. Regular expression types for XML. In Proc. ICFP, pages 11--22. ACM, 2000.
[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.
[21]
A. Krishnamurthy, A. Mettler, and D. Wagner. Fine-grained privilege separation for Web applications. InProc. WWW, 2010.
[22]
H. M. Levy. Capability-Based Computer Systems. Butterworth-Heinemann, Newton, MA, USA, 1984. ISBN 0932376223.
[23]
D. MacQueen. Modules for Standard ML. In Proc. LFP, pages 198--207. ACM, 1984.
[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.
[25]
J. McCarthy. Automatically RESTful Web applications or, marking modular serializable continuations. In Proc. ICFP. ACM, 2009.
[26]
J. McCarthy and S. Krishnamurthi. Interaction-safe state for the Web. InProc. Scheme and Functional Programming, 2006.
[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.
[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.
[29]
S. L. Peyton Jones and P. Wadler. Imperative functional programming. In Proc. POPL, pages 71--84. ACM, 1993.
[30]
D. R. K. Ports and K. Grittner. Serializable Snapshot Isolation in PostgreSQL. Proc. VLDB Endow., 5 (12): 1850--1861, Aug. 2012.
[31]
J. H. Reppy. Concurrent Programming in ML. Cambridge University Press, 1999. ISBN 0-521-48089-2.
[32]
M. Serrano. Hop, a fast server for the diffuse web. In Proc. COORDINATION, pages 1--26. Springer-Verlag, 2009.
[33]
M. Serrano, E. Gallesio, and F. Loitsch. Hop, a language for programming the Web 2.0. In Proc. DLS, 2006.
[34]
N. Shavit and D. Touitou. Software transactional memory. In Proc. PODC, pages 204--213. ACM, 1995.
[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.
[36]
J. Vouillon. Lwt: A cooperative thread library. In Proc. ML Workshop, pages 3--12. ACM, 2008.
[37]
P. Wadler and S. Blott. How to make ad-hoc polymorphism less ad hoc. In Proc. POPL, pages 60--76. ACM, 1989.

Cited By

View all
  • (2024)The Meerkat Vision: Language Support for Live, Scalable, Reactive Web AppsProceedings of the 2024 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/3689492.3690048(54-67)Online publication date: 17-Oct-2024
  • (2024)Garbage Collection for Mostly Serialized HeapsProceedings of the 2024 ACM SIGPLAN International Symposium on Memory Management10.1145/3652024.3665512(1-14)Online publication date: 20-Jun-2024
  • (2023)Type-Safe Dynamic Placement with First-Class Placed ValuesProceedings of the ACM on Programming Languages10.1145/36228737:OOPSLA2(2142-2170)Online publication date: 16-Oct-2023
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
POPL '15: Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
January 2015
716 pages
ISBN:9781450333009
DOI:10.1145/2676726
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 50, Issue 1
    POPL '15
    January 2015
    682 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/2775051
    • Editor:
    • Andy Gill
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 14 January 2015

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. encapsulation
  2. functional-reactive programming
  3. message passing
  4. relational databases
  5. remote procedure calls
  6. transactions
  7. web programming languages

Qualifiers

  • Research-article

Funding Sources

Conference

POPL '15
Sponsor:

Acceptance Rates

POPL '15 Paper Acceptance Rate 52 of 227 submissions, 23%;
Overall Acceptance Rate 860 of 4,328 submissions, 20%

Upcoming Conference

POPL '26

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)27
  • Downloads (Last 6 weeks)0
Reflects downloads up to 19 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2024)The Meerkat Vision: Language Support for Live, Scalable, Reactive Web AppsProceedings of the 2024 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/3689492.3690048(54-67)Online publication date: 17-Oct-2024
  • (2024)Garbage Collection for Mostly Serialized HeapsProceedings of the 2024 ACM SIGPLAN International Symposium on Memory Management10.1145/3652024.3665512(1-14)Online publication date: 20-Jun-2024
  • (2023)Type-Safe Dynamic Placement with First-Class Placed ValuesProceedings of the ACM on Programming Languages10.1145/36228737:OOPSLA2(2142-2170)Online publication date: 16-Oct-2023
  • (2023)HasChor: Functional Choreographic Programming for All (Functional Pearl)Proceedings of the ACM on Programming Languages10.1145/36078497:ICFP(541-565)Online publication date: 31-Aug-2023
  • (2023)Generic Programming with Extensible Data Types: Or, Making Ad Hoc Extensible Data Types Less Ad HocProceedings of the ACM on Programming Languages10.1145/36078437:ICFP(356-384)Online publication date: 31-Aug-2023
  • (2023)Riffle: Reactive Relational State for Local-First ApplicationsProceedings of the 36th Annual ACM Symposium on User Interface Software and Technology10.1145/3586183.3606801(1-16)Online publication date: 29-Oct-2023
  • (2022)Information Flow Control in Software DB Units Based on Formal VerificationProgramming and Computing Software10.1134/S036176882204005348:4(265-285)Online publication date: 1-Aug-2022
  • (2022)Interacto: A Modern User Interaction Processing ModelIEEE Transactions on Software Engineering10.1109/TSE.2021.308332148:9(3206-3226)Online publication date: 1-Sep-2022
  • (2021)Rec.HTML: Declarative HTMLCompanion Proceedings of the 5th International Conference on the Art, Science, and Engineering of Programming10.1145/3464432.3464779(1-5)Online publication date: 22-Mar-2021
  • (2021)Language Support for Secure Software Development with Enclaves2021 IEEE 34th Computer Security Foundations Symposium (CSF)10.1109/CSF51468.2021.00037(1-16)Online publication date: Jun-2021
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media