GoInfer extracts concurrent behavioural types from a Go program
Gong perform analysis on those types
Static Single Assignment (SSA) package: IR -> system of type equations
Language MiGo (mini-Go), which models the concurrency passing features of Go
Given MiniGo, authors define an operational semantics and behavioural typing system for it (https://arxiv.org/abs/1206.1687: Behavioural Types for Actor Systems)
type of channel carries type of objects it can send and receive
Gong is written in Haskell!!!
Gong check that all types are “fenced” (ограничены?), and if so - check all of them
Fenced: we know that it will consist of a finite number of communication patterns (even infinite number of processes)