% ======================================================================
% ======================================================================
\chapter{Introduction}\label{s:intro}
% ======================================================================
% ======================================================================

Concurrent programs are the wild west of programming because determinism and simple ordering of program operations go out the window. 
To seize the reins and write performant and safe concurrent code, high-level concurrent-language features are needed. 
Like any other craftsmen, programmers are only as good as their tools, and concurrent tooling and features are no exception. 

This thesis presents a suite of high-level concurrent-language features implemented in the new programming-language \CFA. 
These features aim to improve the performance of concurrent programs, aid in writing safe programs, and assist user productivity by improving the ease of concurrent programming. 
The groundwork for concurrent features in \CFA was implemented by Thierry Delisle~\cite{Delisle18}, who contributed the threading system, coroutines, monitors and other tools. 
This thesis builds on top of that foundation by providing a suite of high-level concurrent features. 
The features include a @mutex@ statement, channels, a @waituntil@ statement, and an actor system. 
All of these features exist in other programming languages in some shape or form, however this thesis extends the original ideas by improving performance, productivity, and safety.
