An Empirical Study of Messaging Passing Concurrency in Go Projects

Go is a popular programming language renowned for its good support for system programming and its channel-based message passing concurrency mechanism. These strengths have made it the language of choice of many platform software such as Docker and Kubernetes. In this paper, we analyse 865 Go project...

Full description

Saved in:
Bibliographic Details
Published in2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER) pp. 377 - 387
Main Authors Dilley, Nicolas, Lange, Julien
Format Conference Proceeding
LanguageEnglish
Published IEEE 01.02.2019
Subjects
Online AccessGet full text
DOI10.1109/SANER.2019.8668036

Cover

More Information
Summary:Go is a popular programming language renowned for its good support for system programming and its channel-based message passing concurrency mechanism. These strengths have made it the language of choice of many platform software such as Docker and Kubernetes. In this paper, we analyse 865 Go projects from GitHub in order to understand how message passing concurrency is used in publicly available code. Our results include the following findings: (1) message passing primitives are used frequently and intensively, (2) concurrency-related features are generally clustered in specific parts of a Go project, (3) most projects use synchronous communication channels over asynchronous ones, and (4) most Go projects use simple concurrent thread topologies, which are however currently unsupported by existing static verification frameworks.
DOI:10.1109/SANER.2019.8668036