A static verification framework for message passing in Go using behavioural types
The Go programming language has been heavily adopted in industry as a language that efficiently combines systems programming with concurrency. Go's concurrency primitives, inspired by process calculi such as CCS and CSP, feature channel-based communication and lightweight threads, providing a d...
Uloženo v:
| Vydáno v: | 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE) s. 1137 - 1148 |
|---|---|
| Hlavní autoři: | , , , |
| Médium: | Konferenční příspěvek |
| Jazyk: | angličtina |
| Vydáno: |
New York, NY, USA
ACM
27.05.2018
|
| Edice: | ACM Conferences |
| Témata: |
Software and its engineering
> Software notations and tools
> General programming languages
> Language types
> Concurrent programming languages
Software and its engineering
> Software organization and properties
> Software functional properties
> Formal methods
> Automated static analysis
Software and its engineering
> Software organization and properties
> Software functional properties
> Formal methods
> Model checking
|
| ISBN: | 9781450356381, 1450356389 |
| ISSN: | 1558-1225 |
| On-line přístup: | Získat plný text |
| Tagy: |
Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
|
| Shrnutí: | The Go programming language has been heavily adopted in industry as a language that efficiently combines systems programming with concurrency. Go's concurrency primitives, inspired by process calculi such as CCS and CSP, feature channel-based communication and lightweight threads, providing a distinct means of structuring concurrent software. Despite its popularity, the Go programming ecosystem offers little to no support for guaranteeing the correctness of message-passing concurrent programs.
This work proposes a practical verification framework for message passing concurrency in Go by developing a robust static analysis that infers an abstract model of a program's communication behaviour in the form of a behavioural type, a powerful process calculi typing discipline. We make use of our analysis to deploy a model and termination checking based verification of the inferred behavioural type that is suitable for a range of safety and liveness properties of Go programs, providing several improvements over existing approaches. We evaluate our framework and its implementation on publicly available real-world Go code. |
|---|---|
| ISBN: | 9781450356381 1450356389 |
| ISSN: | 1558-1225 |
| DOI: | 10.1145/3180155.3180157 |

