### *CHOP*: Composable Higher-Order Processes
Supervisor
Suitable for
Abstract
The **Go** language runtime system has deservedly gained a reputation for efficiency and scaleability across architectures with numbers of processors ranging from one to hundreds. But the **Go** language itself leaves something to be desired by those who seek higher level ways of directly realizing systems as concurrent compositions of *well-specified* components communicating by means of channels.
The goal of this project is to define a concurrent language that, like **Go**, encourages *inter-module information sharing by channel communication* (in contrast to encouraging the implementation of *intermodule communication by memory sharing*). Like [Communicating Scala Objects](CSO/cpa2008-cso-2016revision.pdf), which was modelled, to a certain extent, on [*OCCAM 3*](http://en.wikipedia.org/wiki/Occam_%28programming_language%29), it should incorporate robust language constructs for concurrent composition, alternation, and termination of composites.
*CHOP* programming should have something of the flavour of *CSO* programming, but its design should be semantically conservative -- in the sense that it should be possible for programs in *CHOP* to be simply translateable into efficient *Go* programs. Recent developments in the *Go* type system may make this easier than would have been possible earlier in the language's development.
We have done some preliminary development of a *Go* library that supports CSO-like parallel composition, and CSO-like termination of networks of connected components using the propagation of channel closures.