University of Cambridge > Talks.cam > Logic and Semantics Seminar (Computer Laboratory) > Fencing off Go: Liveness and Safety for Channel-based Programming

Fencing off Go: Liveness and Safety for Channel-based Programming

Add to your list(s) Download to your calendar using vCal

If you have a question about this talk, please contact Dominic Mulligan.

Go is a production-level statically typed programming language whose design features explicit message-passing primitives and lightweight threads, enabling (and encouraging) programmers to develop concurrent systems where components interact through communication more so than by lock-based shared memory concurrency. Go can only detect global deadlocks at runtime, but provides no compile-time protection against all too common communication mismatches or partial deadlocks.

This talk presents a static verification framework for liveness and safety of Go programs, aimed at detecting communication errors and deadlocks in a general class of realistic concurrent programs such as those with unbounded thread creation, dynamic channel creation and recursion. Our work infers from a Go program an abstract representation of its communication patterns as a behavioural type. We define a symbolic execution semantics for types, which allows us to check for the absence of communication errors and liveness in a finite state space.

By checking a syntactic restriction on channel usage in types, dubbed fencing, we ensure that programs are made up of finitely many different communication patterns that may be repeated infinitely many times, ensuring decidability and soundness of our analyses.

Our analysis and inference have been implemented in a publicly available tool-chain. At the end of the talk, we do a short demo of our tool.

http://mrg.doc.ic.ac.uk/tools/gong/

This talk is part of the Logic and Semantics Seminar (Computer Laboratory) series.

Tell a friend about this talk:

This talk is included in these lists:

Note that ex-directory lists are not shown.

 

© 2006-2020 Talks.cam, University of Cambridge. Contact Us | Help and Documentation | Privacy and Publicity