@InProceedings{BarnesWelch02a, title = "{P}rioritised {D}ynamic {C}ommunicating {P}rocesses - {P}art {I}", author= "Barnes, Frederick R. M. and Welch, Peter H.", editor= "Pascoe, James S. and Loader, Roger J. and Sunderam, Vaidy S.", pages = "321--352", booktitle= "{C}ommunicating {P}rocess {A}rchitectures 2002", isbn= "1 58603 268 2", year= "2002", month= "sep", abstract= "This paper reports continuing research on language design, compilation and kernel support for highly dynamic concurrent reactive systems. The work extends the occam multiprocessing language, which is both sufficiently small to allow for easy experimentation and sufficiently powerful to yield results that are directly applicable to a wide range of industrial and commercial practice. Classical occam was designed for embedded systems and enforced a number of constraints * such as statically pre-determined memory allocation and concurrency limits * that were relevant to that generation of application and hardware technology. Most of these constraints have been removed in this work and a number of new facilities introduced (channel structures, mobile channels, channel ends, dynamic process creation, extended rendezvous and process priorities) that significantly broaden occam*s field of application and raise the level of concurrent system design directly supported. Four principles were set for modifications/enhancements of the language. They must be useful and easy to use. They must be semantically sound and policed (ideally, at compile-time) to prevent mis-use. They must have very lightweight and fast implementation. Finally, they must be aligned with the concurrency model of the original core language, must not damage its security and must not add (significantly) to the ultra-low overheads. These principles have all been observed. All these enhancements are available in the latest release (1.3.3) of KRoC, freely available (GPL/open source) from: http://www.cs.ukc.ac.uk/projects/ofa/kroc/." }