License: Creative Commons Attribution 4.0 International license (CC BY 4.0)
When quoting this document, please refer to the following
DOI: 10.4230/LIPIcs.ECOOP.2022.20
URN: urn:nbn:de:0030-drops-162486
URL: http://dagstuhl.sunsite.rwth-aachen.de/volltexte/2022/16248/
Go to the corresponding LIPIcs Volume Portal


Audrito, Giorgio ; Casadei, Roberto ; Damiani, Ferruccio ; Salvaneschi, Guido ; Viroli, Mirko

Functional Programming for Distributed Systems with XC

pdf-format:
LIPIcs-ECOOP-2022-20.pdf (2 MB)


Abstract

Programming distributed systems is notoriously hard due to - among the others - concurrency, asynchronous execution, message loss, and device failures. Homogeneous distributed systems consist of similar devices that communicate to neighbours and execute the same program: they include wireless sensor networks, network hardware, and robot swarms. For the homogeneous case, we investigate an experimental language design that aims to push the abstraction boundaries farther, compared to existing approaches.
In this paper, we introduce the design of XC, a programming language to develop homogeneous distributed systems. In XC, developers define the single program that every device executes and the overall behaviour is achieved collectively, in an emergent way. The programming framework abstracts over concurrency, asynchronous execution, message loss, and device failures. We propose a minimalistic design, which features a single declarative primitive for communication, state management, and connection management. A mechanism called alignment enables developers to abstract over asynchronous execution while still retaining composability. We define syntax and operational semantics of a core calculus, and briefly discuss its main properties. XC comes with two DSL implementations: a DSL in Scala and one in C++. An evaluation based on smart-city monitoring demonstrates XC in a realistic application.

BibTeX - Entry

@InProceedings{audrito_et_al:LIPIcs.ECOOP.2022.20,
  author =	{Audrito, Giorgio and Casadei, Roberto and Damiani, Ferruccio and Salvaneschi, Guido and Viroli, Mirko},
  title =	{{Functional Programming for Distributed Systems with XC}},
  booktitle =	{36th European Conference on Object-Oriented Programming (ECOOP 2022)},
  pages =	{20:1--20:28},
  series =	{Leibniz International Proceedings in Informatics (LIPIcs)},
  ISBN =	{978-3-95977-225-9},
  ISSN =	{1868-8969},
  year =	{2022},
  volume =	{222},
  editor =	{Ali, Karim and Vitek, Jan},
  publisher =	{Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
  address =	{Dagstuhl, Germany},
  URL =		{https://drops.dagstuhl.de/opus/volltexte/2022/16248},
  URN =		{urn:nbn:de:0030-drops-162486},
  doi =		{10.4230/LIPIcs.ECOOP.2022.20},
  annote =	{Keywords: Core calculus, operational semantics, type soundness, Scala DSL}
}

Keywords: Core calculus, operational semantics, type soundness, Scala DSL
Collection: 36th European Conference on Object-Oriented Programming (ECOOP 2022)
Issue Date: 2022
Date of publication: 23.06.2022
Supplementary Material: Software (ECOOP 2022 Artifact Evaluation approved artifact): https://doi.org/10.4230/DARTS.8.2.8
Software (XC/Scala DSL): https://github.com/scafi/artifact-2021-ecoop-xc archived at: https://archive.softwareheritage.org/swh:1:dir:b8f42b1ff5725d1af15c4ee5fce324e6cd54da4a
Software (XC/Scala SmartC case study): https://github.com/scafi/artifact-2021-ecoop-smartc archived at: https://archive.softwareheritage.org/swh:1:dir:1eb857ef9c19996a73bdd2ceb61c583b953b42b7


DROPS-Home | Fulltext Search | Imprint | Privacy Published by LZI