(CML) A concurrent extension of SML/NJ written by J. Reppy at Cornell University in 1990. CML supports dynamic thread creation and synchronous message passing on typed channels. Threads are implemented using first-class continuations. First-class synchronous operations allow users to tailor their synchronisation abstractions for their application. CML also supports both stream I/O and low-level I/O in an integrated fashion.