Skip to main content
Cornell University
We gratefully acknowledge support from the Simons Foundation, member institutions, and all contributors. Donate
arxiv logo > cs > arXiv:1610.08843

Help | Advanced Search

arXiv logo
Cornell University Logo

quick links

  • Login
  • Help Pages
  • About

Computer Science > Programming Languages

arXiv:1610.08843 (cs)
[Submitted on 27 Oct 2016 (v1), last revised 28 Feb 2017 (this version, v3)]

Title:Fencing off Go: Liveness and Safety for Channel-based Programming (extended version)

Authors:Julien Lange, Nicholas Ng, Bernardo Toninho, Nobuko Yoshida
View a PDF of the paper titled Fencing off Go: Liveness and Safety for Channel-based Programming (extended version), by Julien Lange and Nicholas Ng and Bernardo Toninho and Nobuko Yoshida
View PDF
Abstract: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 work develops a static verification framework for liveness and safety in Go programs, able to detect communication errors and partial deadlocks in a general class of realistic concurrent programs, including those with dynamic channel creation, unbounded thread creation and recursion. Our approach infers from a Go program a faithful representation of its communication patterns as a behavioural type. By checking a syntactic restriction on channel usage, dubbed fencing, we ensure that programs are made up of finitely many different communication patterns that may be repeated infinitely many times. This restriction allows us to implement procedures to check for liveness and safety in types which in turn approximates liveness and safety in Go programs. We have implemented a type inference and liveness and safety checks in a tool-chain and tested it against publicly available Go programs.
Note: This is a revised extended version of a paper that appeared in POPL 2017, see page 13 for details.
Subjects: Programming Languages (cs.PL); Logic in Computer Science (cs.LO)
Cite as: arXiv:1610.08843 [cs.PL]
  (or arXiv:1610.08843v3 [cs.PL] for this version)
  https://doi.org/10.48550/arXiv.1610.08843
arXiv-issued DOI via DataCite

Submission history

From: Julien Lange [view email]
[v1] Thu, 27 Oct 2016 15:40:45 UTC (68 KB)
[v2] Mon, 16 Jan 2017 18:06:37 UTC (80 KB)
[v3] Tue, 28 Feb 2017 13:55:03 UTC (80 KB)
Full-text links:

Access Paper:

    View a PDF of the paper titled Fencing off Go: Liveness and Safety for Channel-based Programming (extended version), by Julien Lange and Nicholas Ng and Bernardo Toninho and Nobuko Yoshida
  • View PDF
  • TeX Source
  • Other Formats
view license
Current browse context:
cs.PL
< prev   |   next >
new | recent | 2016-10
Change to browse by:
cs
cs.LO

References & Citations

  • NASA ADS
  • Google Scholar
  • Semantic Scholar

DBLP - CS Bibliography

listing | bibtex
Julien Lange
Nicholas Ng
Bernardo Toninho
Nobuko Yoshida
export BibTeX citation Loading...

BibTeX formatted citation

×
Data provided by:

Bookmark

BibSonomy logo Reddit logo

Bibliographic and Citation Tools

Bibliographic Explorer (What is the Explorer?)
Connected Papers (What is Connected Papers?)
Litmaps (What is Litmaps?)
scite Smart Citations (What are Smart Citations?)

Code, Data and Media Associated with this Article

alphaXiv (What is alphaXiv?)
CatalyzeX Code Finder for Papers (What is CatalyzeX?)
DagsHub (What is DagsHub?)
Gotit.pub (What is GotitPub?)
Hugging Face (What is Huggingface?)
Papers with Code (What is Papers with Code?)
ScienceCast (What is ScienceCast?)

Demos

Replicate (What is Replicate?)
Hugging Face Spaces (What is Spaces?)
TXYZ.AI (What is TXYZ.AI?)

Recommenders and Search Tools

Influence Flower (What are Influence Flowers?)
CORE Recommender (What is CORE?)
  • Author
  • Venue
  • Institution
  • Topic

arXivLabs: experimental projects with community collaborators

arXivLabs is a framework that allows collaborators to develop and share new arXiv features directly on our website.

Both individuals and organizations that work with arXivLabs have embraced and accepted our values of openness, community, excellence, and user data privacy. arXiv is committed to these values and only works with partners that adhere to them.

Have an idea for a project that will add value for arXiv's community? Learn more about arXivLabs.

Which authors of this paper are endorsers? | Disable MathJax (What is MathJax?)
  • About
  • Help
  • contact arXivClick here to contact arXiv Contact
  • subscribe to arXiv mailingsClick here to subscribe Subscribe
  • Copyright
  • Privacy Policy
  • Web Accessibility Assistance
  • arXiv Operational Status
    Get status notifications via email or slack