This document provides a comprehensive guide to XC programming. XC provides extensions to C that simplify the control over concurrency, I/O and time. These extensions map directly onto XCore hardware resources such as threads, channels and ports, avoiding the need to make extensive use of library calls. XC’s constructs are efficient compiled into short instruction sequences, and free from many sources of deadlock, race conditions and memory violations. This makes programs easy to write, understand and debug.