Links: Linking Theory to Practice for the Web

A typical, modern web program involves many "tiers": part of
the program runs in the web browser, part runs on a web
server, and part runs in back-end systems such as a relational
database. To create such a program, the programmer must
master a myriad of languages: the logic is written in a
mixture of Java, Python, and Perl; the presentation in HTML;
the GUI behavior in Javascript; and the queries are written in
SQL or XQuery. There is no easy way to link these, for
example, to be sure that an HTML form or an SQL query produces
the type of data that the Java code expects. This problem is
called the impedance mismatch problem.

Links eases the impedance mismatch problem by providing a
single language for all three tiers. The system generates
code for each tier; for instance, translating some code into
Javascript for the browser, some into a bytecode for the
server, and some into SQL for the database.

Links incorporates proven ideas from other programming
languages: database-query support from Kleisli,
web-interaction proposals from PLT Scheme, and
distributed-computing support from Erlang. On top of this, it
adds some new web-centric features of its own.

Demos

Download

The original Links development effort ended at the beginning
of 2009. The last official release of Links is version 0.5.
In 2014 development on Links resumed with a focus on adding
session types
to Links.
At some point we intend to merge the session typing branch
into the trunk and do a proper release.