Ur/Web

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.

[1]  A. Chlipala Ur/Web , 2016 .

[2]  Adam Chlipala,et al.  An optimizing compiler for a purely functional web-application language , 2015, ICFP.

[3]  Manuel Serrano,et al.  Hop and HipHop: Multitier Web Orchestration , 2013, ICDCIT.

[4]  Stephen Chong,et al.  Asynchronous functional reactive programming for GUIs , 2013, PLDI.

[5]  Sebastian Burckhardt,et al.  It's alive! continuous feedback in UI programming , 2013, PLDI.

[6]  Dan R. K. Ports,et al.  Serializable Snapshot Isolation in PostgreSQL , 2012, Proc. VLDB Endow..

[7]  Nikolai Tillmann,et al.  TouchDevelop: programming cloud-connected mobile devices via touchscreen , 2011, Onward! 2011.

[8]  Adam Chlipala,et al.  Static Checking of Dynamically-Varying Security Policies in Database-Backed Applications , 2010, OSDI.

[9]  Adam Chlipala,et al.  Ur: statically-typed metaprogramming with type-level record computation , 2010, PLDI '10.

[10]  Ankur Taly,et al.  Object Capabilities and Isolation of Untrusted Web Applications , 2010, 2010 IEEE Symposium on Security and Privacy.

[11]  David A. Wagner,et al.  Fine-grained privilege separation for web applications , 2010, WWW '10.

[12]  Shriram Krishnamurthi,et al.  Flapjax: a programming language for Ajax applications , 2009, OOPSLA '09.

[13]  Philip Wadler,et al.  The RPC calculus , 2009, PPDP '09.

[14]  Jay A. McCarthy,et al.  Automatically RESTful web applications: marking modular serializable continuations , 2009, ICFP.

[15]  Jérôme Vouillon,et al.  Experience report: ocsigen, a web programming framework , 2009, ICFP.

[16]  Manuel Serrano,et al.  Hop, a Fast Server for the Diffuse Web , 2009, COORDINATION.

[17]  Philip Wadler,et al.  The Essence of Form Abstraction , 2008, APLAS.

[18]  Jérôme Vouillon,et al.  Lwt: a cooperative thread library , 2008, ML '08.

[19]  Matthias Felleisen,et al.  Implementation and use of the PLT scheme Web server , 2007, High. Order Symb. Comput..

[20]  J. Yallop,et al.  Links: Web Programming Without Tiers , 2006, FMCO.

[21]  Juan-Carlos Cano,et al.  HOP: Achieving Efficient Anonymity in MANETs by Combining HIP, OLSR, and Pseudonyms , 2006, OOPSLA '06.

[22]  Alain Frisch,et al.  OCaml + XDuce , 2006, ICFP '06.

[23]  Vincent Balat,et al.  Ocsigen: typing web interaction with objective Caml , 2006, ML '06.

[24]  Brian Beckman,et al.  LINQ: reconciling object, relations and XML in the .NET framework , 2006, SIGMOD Conference.

[25]  Simon L. Peyton Jones,et al.  Composable memory transactions , 2005, CACM.

[26]  Stéphane Ducasse,et al.  Seaside — a Multiple Control Flow Web Application Framework , 2004 .

[27]  Aske Simon Christensen,et al.  Extending Java for high-level Web service construction , 2002, TOPL.

[28]  Benjamin C. Pierce,et al.  Regular expression types for XML , 2000, TOPL.

[29]  John H. Reppy,et al.  Concurrent programming in ML , 1999 .

[30]  Michael Benedikt,et al.  Experience with a Domain Specific Language for Form-based Services , 1997, DSL.

[31]  Uday S. Reddy,et al.  Imperative functional programming , 1996, CSUR.

[32]  Nir Shavit,et al.  Software transactional memory , 1995, PODC '95.

[33]  Philip Wadler,et al.  How to make ad-hoc polymorphism less ad hoc , 1989, POPL '89.

[34]  David B. MacQueen Modules for standard ML , 1984, LFP '84.

[35]  Jim Gray,et al.  The Transaction Concept: Virtues and Limitations (Invited Paper) , 1981, VLDB.

[36]  Shriram Krishnamurthi,et al.  Interaction-Safe State for the Web , 2006 .

[37]  M. Serrano,et al.  Hop: a language for programming the web 2.0 , 2006, OOPSLA Companion.

[38]  Henry M. Levy,et al.  Capability-Based Computer Systems , 1984 .

[39]  James Cheney,et al.  Edinburgh Research Explorer A Practical Theory of Language-integrated Query , 2022 .