An Empirical Study of Messaging Passing Concurrency in Go Projects
N. Dilley, and J. Lange. 2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER), page 377--387. (February 2019)
DOI: 10.1109/SANER.2019.8668036
Abstract
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.
Description
An Empirical Study of Messaging Passing Concurrency in Go Projects - IEEE Conference Publication
%0 Conference Paper
%1 8668036
%A Dilley, Nicolas
%A Lange, Julien
%B 2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER)
%D 2019
%K Bugs Channels Go Study Survey
%P 377--387
%R 10.1109/SANER.2019.8668036
%T An Empirical Study of Messaging Passing Concurrency in Go Projects
%U https://kar.kent.ac.uk/71491/1/main.pdf
%X 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.
@inproceedings{8668036,
abstract = {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.},
added-at = {2020-01-09T14:37:42.000+0100},
author = {Dilley, Nicolas and Lange, Julien},
biburl = {https://www.bibsonomy.org/bibtex/2c12d18b613dccbdb2c2661753094faf0/gron},
booktitle = {2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER)},
description = {An Empirical Study of Messaging Passing Concurrency in Go Projects - IEEE Conference Publication},
doi = {10.1109/SANER.2019.8668036},
interhash = {e4e7311044a274bc7f7c9b77a78e2a74},
intrahash = {c12d18b613dccbdb2c2661753094faf0},
issn = {1534-5351},
keywords = {Bugs Channels Go Study Survey},
month = {Feburary},
pages = {377--387},
timestamp = {2020-01-09T14:37:42.000+0100},
title = {{An Empirical Study of Messaging Passing Concurrency in Go Projects}},
url = {https://kar.kent.ac.uk/71491/1/main.pdf},
year = 2019
}