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...
Saved in:
| Published in: | 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE) pp. 1137 - 1148 |
|---|---|
| Main Authors: | , , , |
| Format: | Conference Proceeding |
| Language: | English |
| Published: |
New York, NY, USA
ACM
27.05.2018
|
| Series: | ACM Conferences |
| Subjects: |
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 |
| Online Access: | Get full text |
| Tags: |
Add Tag
No Tags, Be the first to tag this record!
|
| Abstract | 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. |
|---|---|
| AbstractList | 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. 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. |
| Author | Yoshida, Nobuko Ng, Nicholas Lange, Julien Toninho, Bernardo |
| Author_xml | – sequence: 1 givenname: Julien surname: Lange fullname: Lange, Julien email: j.s.lange@kent.ac.uk organization: University of Kent – sequence: 2 givenname: Nicholas surname: Ng fullname: Ng, Nicholas email: nickng@imperial.ac.uk organization: Imperial College London – sequence: 3 givenname: Bernardo surname: Toninho fullname: Toninho, Bernardo email: b.toninho@imperial.ac.uk organization: Imperial College London – sequence: 4 givenname: Nobuko surname: Yoshida fullname: Yoshida, Nobuko email: n.yoshida@imperial.ac.uk organization: Imperial College London |
| BookMark | eNqNkDtPwzAUhc1LopTODCweWVL8jjNWFRSkSggJZstOr4tpE1d2WtR_T6CdmBiuviN9R3c4V-i8jS0gdEPJmFIh7znVhEo5PrA8QaOq1L0gXCqu6Ska9FYXlDF59sddolHOn4QQprTQVA3Q6wTnznahxjtIwYe6z7HFPtkGvmJaYR8TbiBnuwS8sTmHdolDi2cRb3-zgw-7C3Gb7Bp3-w3ka3Th7TrD6Mghen98eJs-FfOX2fN0Mi8s07orPFQLxyxZgFOuEtopr3QpwPUHdUV0XS-UYqKUQBgnwnFPS14JzoSvnQI-RLeHvwEAzCaFxqa90UJyWsne3h2srRvjYlxlQ4n52c8c9zuy7Kvjf1aNSwE8_wZAHW2S |
| CODEN | IEEPAD |
| ContentType | Conference Proceeding |
| Copyright | 2018 Owner/Author |
| Copyright_xml | – notice: 2018 Owner/Author |
| DBID | 6IE 6IH CBEJK RIE RIO |
| DOI | 10.1145/3180155.3180157 |
| DatabaseName | IEEE Electronic Library (IEL) Conference Proceedings IEEE Proceedings Order Plan (POP) 1998-present by volume IEEE Xplore All Conference Proceedings IEEE Electronic Library (IEL) IEEE Proceedings Order Plans (POP) 1998-present |
| DatabaseTitleList | |
| Database_xml | – sequence: 1 dbid: RIE name: IEEE Electronic Library (IEL) url: https://ieeexplore.ieee.org/ sourceTypes: Publisher |
| DeliveryMethod | fulltext_linktorsrc |
| Discipline | Computer Science |
| EISBN | 9781450356381 1450356389 |
| EISSN | 1558-1225 |
| EndPage | 1148 |
| ExternalDocumentID | 8453195 |
| Genre | orig-research |
| GroupedDBID | 6IE 6IF 6IG 6IL 6IM 6IN AAJGR ABLEC ABQGA ACM ADPZR ALMA_UNASSIGNED_HOLDINGS APO BEFXN BFFAM BGNUA BKEBE BPEOZ CBEJK GUFHI IEGSK IJVOP LHSKQ OCL RIB RIC RIE RIL RIO -~X .4S .DC 123 23M 29O 5VS 6IH 6IK 8US AAWTH ADZIZ AFFNX ARCSS AVWKF CHZPO EDO FEDTE I-F I07 IPLJI M43 RNS XOL |
| ID | FETCH-LOGICAL-a288t-fe9db2a0deb6b948b6f6874eb74eec908ccd662475e02304b3f17394324fcb6e3 |
| IEDL.DBID | RIE |
| ISBN | 9781450356381 1450356389 |
| ISICitedReferencesCount | 49 |
| ISICitedReferencesURI | http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=000454843300141&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| IngestDate | Wed Aug 27 02:51:13 EDT 2025 Fri Sep 13 11:04:35 EDT 2024 |
| IsDoiOpenAccess | true |
| IsOpenAccess | true |
| IsPeerReviewed | false |
| IsScholarly | true |
| Language | English |
| License | This work is licensed under a Creative Commons Attribution International 4.0 License. |
| LinkModel | DirectLink |
| MeetingName | ICSE '18: 40th International Conference on Software Engineering |
| MergedId | FETCHMERGED-LOGICAL-a288t-fe9db2a0deb6b948b6f6874eb74eec908ccd662475e02304b3f17394324fcb6e3 |
| OpenAccessLink | https://dl.acm.org/doi/pdf/10.1145/3180155.3180157 |
| PageCount | 12 |
| ParticipantIDs | ieee_primary_8453195 acm_books_10_1145_3180155_3180157 acm_books_10_1145_3180155_3180157_brief |
| PublicationCentury | 2000 |
| PublicationDate | 20180527 2018-May |
| PublicationDateYYYYMMDD | 2018-05-27 2018-05-01 |
| PublicationDate_xml | – month: 05 year: 2018 text: 20180527 day: 27 |
| PublicationDecade | 2010 |
| PublicationPlace | New York, NY, USA |
| PublicationPlace_xml | – name: New York, NY, USA |
| PublicationSeriesTitle | ACM Conferences |
| PublicationTitle | 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE) |
| PublicationTitleAbbrev | ICSE |
| PublicationYear | 2018 |
| Publisher | ACM |
| Publisher_xml | – name: ACM |
| SSID | ssj0002684816 ssj0006499 |
| Score | 2.3690064 |
| Snippet | The Go programming language has been heavily adopted in industry as a language that efficiently combines systems programming with concurrency. Go's concurrency... |
| SourceID | ieee acm |
| SourceType | Publisher |
| StartPage | 1137 |
| SubjectTerms | behavioural types Computer languages concurrency Concurrent computing go programming language Message systems model checking Programming Safety Software 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 Software and its engineering -- Software organization and properties -- Software functional properties -- Formal methods -- Software verification static analysis System recovery Theory of computation -- Logic -- Type theory Theory of computation -- Logic -- Verification by model checking Theory of computation -- Models of computation -- Concurrency -- Process calculi |
| Title | A static verification framework for message passing in Go using behavioural types |
| URI | https://ieeexplore.ieee.org/document/8453195 |
| WOSCitedRecordID | wos000454843300141&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| hasFullText | 1 |
| inHoldings | 1 |
| isFullTextHit | |
| isPrint | |
| link | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlV3PS8MwFH5sw4OnqZs4fxFB8GK3Nk3T9Cji9OKYoLJbSdJEerCT_fDvN6_NJoIgHkpKKKE8Xvu-l7z3fQCX1rmNzKgMYi5kwDJaBKIoooDHTEXUskRxW4tNpJOJmM2yaQuut70wxpi6-MwM8bY-yy_meo1bZSPB0GOSNrTTlDe9Wtv9FGQtEQh1_F-YOyjvqXwiloyc6yI6GDZjHYv0-w9FlTqgjLv_e5U96H935pHpNubsQ8tUB9DdSDMQ_6X24OmGIIwsNXl1Lmb9xhwZb0qxiMOq5BHlT97cgg5Au9VIWZH7OamLCIjnTURSDoK56rIPL-O759uHwKsnBJIKsQqsyQpFZVgYxVXGhDM6Fykzyl1GZ6HQuuCcsjQxmIcwFdsojTNk6LNacRMfQqeaV-YICGqFu2kZplI7I1OZYRaVhFRGHOV7BnDhrJljWrDMm07nJPcW92M6gKs_n8nVojR2AD20d_7R0G3k3tTHv0-fwK7DMKKpQTyFzmqxNmewoz9X5XJxXvvIF5rhtUk |
| linkProvider | IEEE |
| linkToHtml | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlV3fS8MwED7mFPRp6ibOnxEEX-xs0zRNH0WcE7cxYcreSpKmsgc32Q__fnNtNhEE8aGkhBLKce19l9x9H8Blbt1GJlR6IRfSYwnNPJFlgcdDpgKas0jxvBCbiPt9MRolgwpcr3thjDFF8Zlp4W1xlp9N9RK3ym4EQ4-JNmAzYoz6ZbfWekcFeUsEgh33H-YWzDsyn4BFN9Z5ER-0yrGIRvr9h6ZKEVLatf-9zC40vnvzyGAddfagYib7UFuJMxD3rdbh-ZYgkBxr8mqdLHdbc6S9KsYiFq2SHgqgvNkFLYS2q5HxhDxMSVFGQBxzItJyEMxW5w14ad8P7zqe00_wJBVi4eUmyRSVfmYUVwkT1uxcxMwoexmd-ELrjHPK4shgJsJUmAdxmCBHX64VN-EBVCfTiTkEgmrhdlr6sdTWyFQmmEdFPpUBRwGfJlxYa6aYGMzTstc5Sp3F3Rg34erPZ1I1G5u8CXW0d_pREm6kztRHv0-fw3Zn2Oum3cf-0zHsWEQjyorEE6guZktzClv6czGez84Kf_kCO6-4kA |
| openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=proceeding&rft.title=Proceedings+of+the+40th+International+Conference+on+Software+Engineering&rft.atitle=A+static+verification+framework+for+message+passing+in+Go+using+behavioural+types&rft.au=Lange%2C+Julien&rft.au=Ng%2C+Nicholas&rft.au=Toninho%2C+Bernardo&rft.au=Yoshida%2C+Nobuko&rft.series=ACM+Conferences&rft.date=2018-05-27&rft.pub=ACM&rft.isbn=9781450356381&rft.spage=1137&rft.epage=1148&rft_id=info:doi/10.1145%2F3180155.3180157 |
| thumbnail_l | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=9781450356381/lc.gif&client=summon&freeimage=true |
| thumbnail_m | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=9781450356381/mc.gif&client=summon&freeimage=true |
| thumbnail_s | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=9781450356381/sc.gif&client=summon&freeimage=true |

