Links is a new programming language designed to make web programming easier.
Links eases building modern Ajax-style applications: those with significant client- and server-side components.
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
Demo Links programs.Download
Version 0.5 of Links must be compiled with OCaml version 3.10 as there is a regression in the camlp4 tool shipped with later versions of OCaml. The latest version of Links in the Subversion respository includes a workaround for the camlp4 regression. It compiles with OCaml version 3.12, but probably won't compile with earlier versions.
Community
links-users mailing list
Publications
- Row-based effect types for database integration. Sam Lindley and James Cheney. In the proceedings of TLDI 2012.
- DBWiki: a database wiki prototyped in Links. James Cheney, Sam Lindley and Heiko Müller. In the proceedings of DBPL 2011.
- The arrow calculus. Sam Lindley, Philip Wadler, and Jeremy Yallop.
- The essence of form abstraction. Ezra Cooper, Sam Lindley, Philip Wadler, and Jeremy Yallop. In the proceedings of APLAS 2008.
- Idioms are oblivious, arrows are meticulous, monads are promiscuous. Sam Lindley, Philip Wadler, and Jeremy Yallop. In the proceedings of MSFP 2008.
- Links: web programming without tiers. Ezra Cooper, Sam Lindley, Philip Wadler, and Jeremy Yallop. In the proceedings of FMCO 2006, LNCS 4709.
- Original grant proposal for EPSRC (2005).
People
Group photo (Nov 2006).- Ezra Cooper, PhD student (research blog).
- Gilles Dubochet, MSc student (graduated).
- Shriram Krishnamurthi, visitor, Nov 2006.
- Sam Lindley, RA.
- Thierry Martinez, Visitor from ENS, Mar–Aug 2006.
- Rodney Topor, Visitor, Sep–Dec 2005. Rodney taught us about transactions.
- Philip Wadler, Principal investigator.
- Jeremy Yallop, PhD student (research blog).
Undergraduate projects
- Building Bobcat - a web content management system in Links. Simon Vansintjan (2010).
- Web Menace: Links demonstration of a classic learning machine. Samuel Corbett (2009).
- Compiling Links server-side code. Steven Holmes (2009).
- LODE: an online IDE for Links in Links. Carl Andersson (2008).
- Online Scrabble in Links. Ashvin Jayaram (2008).
- Building web 2.0 applications in Links: Speed dependent automatic zooming for web applications. Sjoerd van Roosmalen (2008).
- Creating linksCollab: an assessment of Links as a web development language. Steve Strugnell (2008).
MSc projects
- Functional reactive animation in SVG for the web via Links Chi-Feng Chou (2011).
- Implementing the Java Pet Store in Links: An assessment of Links as an effective platform for building web applications . Gabriel Tellez (2008).
- Building biological database applications using Links. Ravi Shankar Dangeti (2008).
- The SLinks language. Gilles Dubochet (2005).
Security
Talks
- Talk slides (Melbourne, 2 Feb 2006)
- Talk slides (PADL, 9 Jan 2006)
- Links meeting at ETAPS (Edinburgh, 6 Apr 2005)
- Talk slides (Cambridge, 9 Feb 2005)
Last modified: Thu Feb 9 17:20:57 GMT 2012