Eliom: A Language for Modular Tierless Web Programming

01/31/2019
by   Gabriel Radanne, et al.
0

Tierless Web programming languages allow programmers to combine client-side and server-side programming in a single program. Programmers can then define components with both client and server parts and get flexible, efficient and typesafe client-server communications. However, the expressive client-server features found in most tierless languages are not necessarily compatible with functionalities found in many mainstream languages. In particular, we would like to benefit from type safety, an efficient execution, static compilation, modularity and separate compilation. In this paper, we propose Eliom, an industrial-strength tierless functional Web programming language which extends OCaml with support for rich client/server interactions. It allows to build whole applications as a single distributed program, in which it is possible to define modular tierless libraries with both server and client behaviors and combine them effortlessly. Eliom is the only language that combines type-safe and efficient client/server communications with a static compilation model that supports separate compilation and modularity. It also supports excellent integration with OCaml, allowing to transparently leverage its ecosystem. To achieve all these features, Eliom borrows ideas not only from distributed programming languages, but also from meta-programming and modern module systems. We present the design of Eliom, how it can be used in practice and its formalization; including its type system, semantics and compilation scheme. We show that this compilation scheme preserves typing and semantics, and that it supports separate compilation.

READ FULL TEXT
research
10/28/2021

A Theory of RPC Calculi for Client-Server Model

With multi-tier programming languages, programmers can specify the locat...
research
05/27/2010

File Managing and Program Execution in Web Operating Systems

Web Operating Systems can be seen as an extension of traditional Operati...
research
11/27/2020

ROS Based Visual Programming Tool for Mobile Robot Education and Applications

Visual programming languages (VPLs) provide coding without typing texts....
research
10/30/2020

Prioritising Server Bugs via Inter-process Concolic Testing

Existing approaches to automated white-box testing usually consider the ...
research
01/12/2021

Communication-Safe Web Programming in TypeScript with Routed Multiparty Session Types

Modern web programming involves coordinating interactions between browse...
research
02/08/2018

Putting in All the Stops: Execution Control for JavaScript

Scores of compilers produce JavaScript, enabling programmers to use many...
research
10/21/2022

A General Architecture for Client-Agnostic Hybrid Model Editors as a Service

In this paper, we propose a general architecture for designing language ...

Please sign up or login with your details

Forgot password? Click here to reset