Links is a functional programming language designed to make web programming easier.
Links eases building interactive web applications with significant client- and server-side components.
Links incorporates proven ideas from other programming languages: database-query support from Kleisli, web-interaction proposals from Racket, and distributed-computing support from Erlang. On top of this, it adds new web-centric features of its own.
The initial Links development effort was funded by EPSRC grant EP/D046769/1 from 2005-2009. In 2014 development on Links resumed with a focus on adding session types to Links, funded by EPSRC Programme Grant "From Data Types to Session Types: A Basis for Concurrency and Distribution" (EP/K034413/1). Other active areas of research which are driving Links development include work on adding algebraic effects and effect handlers to Links and the Skye project, which builds on Links to support scientific data curation (funded by the European Research Council, grant number 682315.
- Cross-tier web programming for curated databases: a case study. Simon Fowler, Simon Harding, Joanna Sharman, and James Cheney. Pre-proceedings, IDCC 2020.
- Effects for Efficiency: Asymptotic Speedup with First-Class Control. Daniel Hillerström, Sam Lindley, and John Longley. ICFP 2020.
- A Polymorphic RPC Calculus. Kwanghoon Choi, James Cheney, Simon Fowler, and Sam Lindley. Science of Computer Programming 197:102499, October 2020. Preliminary version presented at SBMF 2019.
- Strongly Normalizing Higher-Order Relational ueries. Wilmer Ricciotti and James Cheney. FSCD 2020.
- Model-View-Update-Communicate: Session Types meet the Elm Architecture. Simon Fowler. ECOOP 2020.
- Language-Integrated Updatable Views. Rudi Horn, Simon Fowler and James Cheney. Post-proceedings of IFL 2019.
- FreezeML: Complete and Easy Type Inference for First-Class Polymorphism. Frank Emrich, Sam Lindley, Jan Stolarek, James Cheney, and Jonathan Coates. PLDI 2020.
- Effect handlers via generalised continuations. Daniel Hillerström, Sam Lindley, and Robert Atkey. JFP special issue on effect handlers 2020.
- Language-integrated provenance by trace analysis, Stefan Fehrenbach and James Cheney. DBPL 2019.
- Mixing Set and Bag Semantics. Wilmer Ricciotti and James Cheney. DBPL 2019.
- Exceptional Asynchronous Session Types: Session Types without Tiers. Simon Fowler, Sam Lindley, J. Garrett Morris, and Sára Decova. POPL 2019.
- Shallow Effect Handlers. Daniel Hillerström and Sam Lindley. APLAS 2018.
- Incremental Relational Lenses. Rudi Horn, Roly Perera, and James Cheney. ICFP 2018.
- Language-integrated provenance. Stefan Fehrenbach and James Cheney. Science of Computer Programming 155: 103-145 (2018).
- Continuation Passing Style for Effect Handlers. Daniel Hillerström, Sam Lindley, Robert Atkey, and KC Sivaramakrishnan. FSCD 2017.
- Lightweight functional session types. Sam Lindley and J. Garrett Morris. In Behavioural Types: from Theory to Tools, River Publishers, 2017.
- Language-integrated provenance. Stefan Fehrenbach and James Cheney. PPDP 2016.
- Compiling Links Effect Handlers to the OCaml Backend. Daniel Hillerström, Sam Lindley, and KC Sivaramakrishnan. ML Workshop 2016.
- Liberating Effects with Rows and Handlers. Daniel Hillerström and Sam Lindley. In the proceedings of TyDe 2016.
- Effective quotation. James Cheney, Sam Lindley, Gabriel Radanne, and Philip Wadler. In the proceedings of PEPM 2014.
- Query shredding: efficient relational evaluation of queries over nested multisets. James Cheney, Sam Lindley, and Philip Wadler. In the proceedings of SIGMOD 2014.
- 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 essence of form abstraction. Ezra Cooper, Sam Lindley, Philip Wadler, and Jeremy Yallop. In the proceedings of APLAS 2008.
- Links: web programming without tiers. Ezra Cooper, Sam Lindley, Philip Wadler, and Jeremy Yallop. In the proceedings of FMCO 2006, LNCS 4709.
- James Cheney.
- Frank Emrich.
- Simon Fowler.
- Daniel Hillerström.
- Rudi Horn
- Sam Lindley.
- Jan Stolarek.
- Philip Wadler.
- TryLinks: an interactive online platform to learn the Links programming language. Nick Wu (2018).
- 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).
- Uselets: UIs using Actors as an Abstraction for Composable Communicating Components. Thomas Weber (LMU/University of Augsburg/TU Munich, 2018).
- Compilation of Effect Handlers and their Applications in Concurrency. Daniel Hillerström (2016).
- Handlers for Algebraic Effects in Links. Daniel Hillerström (2015).
- 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).
- Yueyang Tang, May–August 2020. Yueyang is working on improvements to Links, including dramatically speeding up serialization of large query expressions and supporting function definitions by case analysis
- Jonathan Coates, June–July 2019. Jonathan worked on the Links codebase. He implemented support for first-class polymorphism, syntactic sugar for effects, and fixed numerous bugs.
- Tom Davey, June–July 2019. Tom adapted TryLinks for use with Jupyter Notebook.
- Arek Mikolajczak, June–August 2018. Arek worked on TryLinks.
- Nicole Meng, June–July 2018. Nicole worked on implementing the essence of React in Links using effect handlers.
- Jake Browning, Summer 2017. Jake implemented a reactive programming library for Links inspired by Elm.
- Sára Decova, Summer 2017. Sára implemented a collection of Links applications making use of session types in the presence of distribution and failure.
- Victor Dumitrescu, Summer 2015. Victor worked on applications of session types in Links.
- Austėja Elvina Brasiūnaitė, Summer 2014. Elvina helped us to develop session types in Links by building and testing lots of examples.
- Gabriel Radanne, Summer 2012. Gabriel extended the Links to OCaml compiler developed by Steven Holmes to handle database queries.
- Thierry Martinez, Mar–Aug 2006. Thierry experimented with approaches to statically typing XML in Links.