Cargando…

GoPi: Compiling Linear and Static Channels in Go

We identify two important features to enhance the design of communication protocols specified in the pi-calculus, that are linear and static channels, and present a compiler, named GoPi, that maps high level specifications into executable Go programs. Channels declared as linear are deadlock-free, w...

Descripción completa

Detalles Bibliográficos
Autor principal: Giunti, Marco
Formato: Online Artículo Texto
Lenguaje:English
Publicado: 2020
Materias:
Acceso en línea:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7282843/
http://dx.doi.org/10.1007/978-3-030-50029-0_9
_version_ 1783544200235581440
author Giunti, Marco
author_facet Giunti, Marco
author_sort Giunti, Marco
collection PubMed
description We identify two important features to enhance the design of communication protocols specified in the pi-calculus, that are linear and static channels, and present a compiler, named GoPi, that maps high level specifications into executable Go programs. Channels declared as linear are deadlock-free, while the scope of static channels, which are bound by a hide declaration, does not enlarge at runtime; this is enforced statically by means of type inference, while specifications do not include annotations. Well-behaved processes are transformed into Go code that supports non-deterministic synchronizations and race-freedom. We sketch two main examples involving protection against message forwarding, and forward secrecy, and discuss the features of the tool, and the generated code. We argue that GoPi can support academic activities involving process algebras and formal models, which range from the analysis and testing of concurrent processes for research purposes to teaching formal languages and concurrent systems.
format Online
Article
Text
id pubmed-7282843
institution National Center for Biotechnology Information
language English
publishDate 2020
record_format MEDLINE/PubMed
spelling pubmed-72828432020-06-10 GoPi: Compiling Linear and Static Channels in Go Giunti, Marco Coordination Models and Languages Article We identify two important features to enhance the design of communication protocols specified in the pi-calculus, that are linear and static channels, and present a compiler, named GoPi, that maps high level specifications into executable Go programs. Channels declared as linear are deadlock-free, while the scope of static channels, which are bound by a hide declaration, does not enlarge at runtime; this is enforced statically by means of type inference, while specifications do not include annotations. Well-behaved processes are transformed into Go code that supports non-deterministic synchronizations and race-freedom. We sketch two main examples involving protection against message forwarding, and forward secrecy, and discuss the features of the tool, and the generated code. We argue that GoPi can support academic activities involving process algebras and formal models, which range from the analysis and testing of concurrent processes for research purposes to teaching formal languages and concurrent systems. 2020-05-13 /pmc/articles/PMC7282843/ http://dx.doi.org/10.1007/978-3-030-50029-0_9 Text en © IFIP International Federation for Information Processing 2020 This article is made available via the PMC Open Access Subset for unrestricted research re-use and secondary analysis in any form or by any means with acknowledgement of the original source. These permissions are granted for the duration of the World Health Organization (WHO) declaration of COVID-19 as a global pandemic.
spellingShingle Article
Giunti, Marco
GoPi: Compiling Linear and Static Channels in Go
title GoPi: Compiling Linear and Static Channels in Go
title_full GoPi: Compiling Linear and Static Channels in Go
title_fullStr GoPi: Compiling Linear and Static Channels in Go
title_full_unstemmed GoPi: Compiling Linear and Static Channels in Go
title_short GoPi: Compiling Linear and Static Channels in Go
title_sort gopi: compiling linear and static channels in go
topic Article
url https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7282843/
http://dx.doi.org/10.1007/978-3-030-50029-0_9
work_keys_str_mv AT giuntimarco gopicompilinglinearandstaticchannelsingo