skip to main content
10.1145/3184558.3185953acmotherconferencesArticle/Chapter ViewAbstractPublication PageswwwConference Proceedingsconference-collections
research-article
Free Access

Tierless Web Programming in the Large

Published:23 April 2018Publication History

ABSTRACT

Tierless Web programming languages allow combining client-side and server-side programming in a single program. This allows defining expressions with both client and server parts, and at the same time provides good static guarantees regarding client-server communication. However, these nice properties come at a cost: most tierless languages offer very poor support for modularity and separate compilation. To regain this modularity and offer a larger-scale notion of composition, we propose to leverage a well-known tool: ML-style modules. In modern ML languages, the module system is a layer separate from the expression language. Eliom is an extension of OCaml for tierless Web programming which provides type-safe communication and an efficient execution model. In this article, we present how the Eliom module system combines the flexibility of tierless Web programming languages with a powerful module system, thus providing good support for abstraction, modularity and separate compilation. We also show that we can provide all these advantages while providing seamless integration with OCaml and its ecosystem.

References

  1. Vincent Balat. 2014. Rethinking Traditional Web Interaction: Theory and Implementation. International Journal on Advances in Internet Technology (2014). http://www.iariajournals.org/internet_technology/Google ScholarGoogle Scholar
  2. Vincent Balat, Jérôme Vouillon, and Boris Yakobowski. 2009. Experience report: Ocsigen, a Web programming framework. In ICFP, Graham Hutton and Andrew P. Tolmach (Eds.). ACM, 311--316. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Gérard Boudol, Zhengqin Luo, Tamara Rezk, and Manuel Serrano. 2012. Reasoning about Web Applications: An Operational Semantics for HOP. ACM Trans. Program. Lang. Syst. 34, 2 (2012), 10. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. James Cheney, Sam Lindley, Gabriel Radanne, and Philip Wadler. 2013. Effective Quotation. CoRR abs/1310.4780 (2013). http://arxiv.org/abs/1310.4780Google ScholarGoogle Scholar
  5. Adam Chlipala. {n. d.}. Ur/Web: A Simple Model for Programming the Web (POPL '15). Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Adam Chlipala. 2015. An Optimizing Compiler for a Purely Functional WebApplication Language. In ICFP. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Ezra Cooper, Sam Lindley, Philip Wadler, and Jeremy Yallop. 2006. Links: Web Programming Without Tiers. In FMCO. 266--296. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Karl Crary. 2017. Modules, abstraction, and parametric polymorphism, Giuseppe Castagna and Andrew D. Gordon (Eds.). http://dl.acm.org/citation.cfmid= 3009892 Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Derek Dreyer. 2005. Understanding and Evolving the ML Module System. Ph.D. Dissertation. Carnegie Mellon University. https://people.mpi-sws.org/~dreyer/thesis/main.pdf Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Anton Ekblad and Koen Claessen. {n. d.}. A Seamless, Client-centric Programming Model for Type Safe Web Applications (Haskell '14). Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Eliom 2017. Eliom web site. https://ocsigen.org/eliom.Google ScholarGoogle Scholar
  12. Hashids 2017. Hashids. http://hashids.org/.Google ScholarGoogle Scholar
  13. Scott Kilpatrick, Derek Dreyer, Simon L. Peyton Jones, and Simon Marlow. 2014. Backpack: retrofitting Haskell with interfaces.Google ScholarGoogle Scholar
  14. Oleg Kiselyov. 2014. The Design and Implementation of BER MetaOCaml (Lecture Notes in Computer Science), Michael Codish and Eijiro Sumii (Eds.), Vol. 8475. Springer.Google ScholarGoogle Scholar
  15. Daniel K. Lee, Karl Crary, and Robert Harper. 2007. Towards a mechanized metatheory of standard ML, Martin Hofmann and Matthias Felleisen (Eds.). ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Xavier Leroy. 1994. Manifest Types, Modules, and Separate Compilation, HansJuergen Boehm, Bernard Lang, and Daniel M. Yellin (Eds.). ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Xavier Leroy. 1995. Applicative Functors and Fully Transparent Higher-Order Modules, Ron K. Cytron and Peter Lee (Eds.). ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Xavier Leroy, Damien Doligez, Alain Frisch, Jacques Garrigue, Didier Rémy, and Jérôme Vouillon. 2016. The OCaml system release 4.04, Documentation and user's manual. Projet Gallium, INRIA.Google ScholarGoogle Scholar
  19. David B. MacQueen. 1984. Modules for Standard ML. In LISP and Functional Programming. 198--207. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Meteor.js 2017. Meteor.js. http://meteor.com.Google ScholarGoogle Scholar
  21. Robin Milner, Mads Tofte, and Robert Harper. 1990. Definition of standard ML. MIT Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Yaron Minsky, Anil Madhavapeddy, and Jason Hickey. 2013. Real World OCaml - Functional Programming for the Masses. O'Reilly. https://realworldocaml.org/Google ScholarGoogle Scholar
  23. MLton 2014. MLton. (2014). http://mlton.org/HomeGoogle ScholarGoogle Scholar
  24. Olivier Nicole. 2016. Bringing typed, modular macros to OCaml. (2016). https: //oliviernicole.github.io/about_macros.htmlGoogle ScholarGoogle Scholar
  25. Ocsigen Toolkit 2017. Ocsigen Toolkit. http://ocsigen.org/ocsigen-toolkit/.Google ScholarGoogle Scholar
  26. Laure Philips, Coen De Roover, Tom Van Cutsem, and Wolfgang De Meuter. 2014. Towards Tierless Web Development Without Tierless Languages (Onward! 2014). 69--81. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Laure Philips, Joeri De Koster, Wolfgang De Meuter, and Coen De Roover. 2016. Dependence-driven delimited CPS transformation for JavaScript. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Gabriel Radanne. 2017. Tierless Web Programming in ML. Ph.D. Dissertation. Paris Diderot. https://www.irif.fr/~gradanne/papers/phdthesis.pdfGoogle ScholarGoogle Scholar
  29. Gabriel Radanne, Vasilis Papavasileiou, Jérôme Vouillon, and Vincent Balat. 2016. Eliom: tierless Web programming from the ground up, Tom Schrijvers (Ed.). ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Gabriel Radanne, Jérôme Vouillon, and Vincent Balat. 2016. Eliom: A Core ML Language for Tierless Web Programming (Lecture Notes in Computer Science).Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Andreas Rossberg, Claudio V. Russo, and Derek Dreyer. 2014. F-ing modules. J. Funct. Program. 24, 5 (2014), 529--607.Google ScholarGoogle ScholarCross RefCross Ref
  32. Claudio V. Russo. 2000. First-Class Structures for Standard ML. Nord. J. Comput. 7, 4 (2000), 348--374. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Manuel Serrano and Vincent Prunet. 2016. A glimpse of Hopjs, Jacques Garrigue, Gabriele Keller, and Eijiro Sumii (Eds.). ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Manuel Serrano and Christian Queinnec. 2010. A multi-tier semantics for Hop. Higher-Order and Symbolic Computation 23, 4 (2010), 409--431. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Peter Sewell, James J. Leifer, Keith Wansbrough, Francesco Zappa Nardelli, Mair Allen-Williams, Pierre Habouzit, and Viktor Vafeiadis. 2007. Acute: High-level programming language design for distributed computation. J. Funct. Program. (2007). Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Mads Tofte. 1988. Operational Semantics and Polymorphic Type Inference. Ph.D. Dissertation. University of Edinburgh.Google ScholarGoogle Scholar
  37. TyXML 2017. TyXML. http://ocsigen.org/tyxml/.Google ScholarGoogle Scholar
  38. Jérôme Vouillon and Vincent Balat. 2014. From bytecode to JavaScript: the Js_- of_ocaml compiler. Software: Practice and Experience (2014). Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Jeremy Yallop and Leo White. 2015. Modular macros. OCaml Workshop (2015). http://www.lpw25.net/ocaml2015-abs1.pdfGoogle ScholarGoogle Scholar

Index Terms

  1. Tierless Web Programming in the Large

    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
    • Published in

      cover image ACM Other conferences
      WWW '18: Companion Proceedings of the The Web Conference 2018
      April 2018
      2023 pages
      ISBN:9781450356404

      Copyright © 2018 ACM

      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 ACM 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]

      Publisher

      International World Wide Web Conferences Steering Committee

      Republic and Canton of Geneva, Switzerland

      Publication History

      • Published: 23 April 2018

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      Overall Acceptance Rate1,899of8,196submissions,23%

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    HTML Format

    View this article in HTML Format .

    View HTML Format