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...

Celý popis

Uloženo v:
Podrobná bibliografie
Vydáno v:2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE) s. 1137 - 1148
Hlavní autoři: Lange, Julien, Ng, Nicholas, Toninho, Bernardo, Yoshida, Nobuko
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:
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!
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.369095
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/eLvHCXMwlV1LS8NAEB7a4sFT1VasL1YQvJg2TTb7OIpYvVgqqPQWsruzkoOt9OHvdzfZVgRBPIQNISxhmGS-mcz3DcClSXlis5RFUloVUZdjRIWJVRRrF1yMtsi4qoZN8PFYTKdy0oDrLRcGEavmM-z70-pfvpnrtS-VDQT1HpM1ock5q7la23qKVy0RHuqErzBzUD5I-QxpNnCu69FBv16rWKTff0xUqQLKqP2_R9mD7jczj0y2MWcfGjg7gPZmNAMJb2oHnm6Ih5GlJq_OxWwozJHRphWLOKxKHv34kze3oQPQbjdSzsj9nFRNBCToJnpRDuJz1WUXXkZ3z7cPUZieEBWJEKvIojQqKWKDiilJhWKWCU5RuQO1jIXWhrGE8gx9HkJVaoc8lV6hz2rFMD2E1mw-wyMgibBe2Et7livNBIqMFYjCSquHRseiBxfOmrlPC5Z5zXTO8mDxsPIeXP15T64WJdoedLy9849abiMPpj7-_fIJ7DoMI-oexFNorRZrPIMd_bkql4vzyke-AFtwtu0
linkProvider IEEE
linkToHtml http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlV3fS8MwED7mFPRp6ibOnxEEX-zs2iRNH0WcE7cxYcreypJepA92sh_-_SZtNhEE8aGklBLKce19d73vO4DLNIwCzULuxbGWHjU5hjdJfen5ygSXVGnkkSyGTUSDgRiP42EFrtdcGEQsms-wZU-Lf_npVC1tqexGUOsxbAM2GaWBX7K11hUVq1siLNhx32FuwLwT82lTdmOc1-KDVrkW0Ui9_5ipUoSUTu1_D7MLjW9uHhmuo84eVDDfh9pqOANx72odnm-JBZKZIq_GybQrzZHOqhmLGLRK-nYAypvZ0EBosxvJcvIwJUUbAXHKiVaWg9hsdd6Al8796K7rufkJ3iQQYuFpjFMZTPwUJZcxFZJrLiKK0hyoYl8olXIe0IihzUSoDHU7CmOr0aeV5BgeQDWf5ngIJBDaSnspy3OlTKBgfIIodKxVO1W-aMKFsWZiE4N5UnKdWeIs7taoCVd_3pPIWYa6CXVr7-SjFNxInKmPfr98DtvdUb-X9B4HT8ewYxCNKDsST6C6mC3xFLbU5yKbz84Kf_kCELC6NA
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