Go programmeringsspråket har i stor utsträckning antagits inom industrin som ett språk som effektivt kombinerar systemprogrammering med konvergens. Go's concurrency primitiva, inspirerad av processkalkyl såsom CCS och CSP, har kanalbaserad kommunikation och lätta trådar, vilket ger ett tydligt sätt att strukturera samtidig programvara. Trots sin popularitet, Go programmering ekosystem erbjuder lite till inget stöd för att garantera riktigheten av meddelande-passing samtidiga program. I detta arbete föreslås en praktisk verifieringsram för meddelande som passerar konvergens i Go genom att utveckla en robust statisk analys som innehåller en abstrakt modell av ett programs kommunikationsbeteende i form av en beteendetyp, en kraftfull processkalkyleringsdisciplin. Vi använder oss av vår analys för att implementera en modell- och termineringskontrollerad verifiering av den härledda beteendetypen som är lämplig för en rad säkerhets- och livenessegenskaper hos Go-program, vilket ger flera förbättringar jämfört med befintliga metoder. Vi utvärderar vårt ramverk och dess genomförande på offentligt tillgänglig real-world Go-kod.
REF statiskt infer kanal kommunikationsmönster från ett Go-program som beteendetyper, som kontrolleras för levande egenskaper.
A static verification framework for message passing in Go using behavioural types
{'venue': "ICSE '18", 'journal': None, 'mag_field_of_study': ['Computer Science']}