Orc is a programming language designed to make distributed and concurrent programs simple and intuitive to write. Orc expresses orchestration, a type of structured concurrency. It emphasizes the flow of control and gives a global view of a concurrent system. Orc is well-suited for task orchestration, a form of concurrent programming with applications in workflow, business process management, and web service orchestration. Orc provides constructs to orchestrate the concurrent invocation of services while managing time-outs, priorities, and failures of services or communication. To learn more about Orc and run your own Orc programs, visit the Web site:

Unless otherwise noted, all material in this document pertains to the Orc language implementation version 2.1.1 .

This guide introduces the reader to the Orc programming language. It does not cover every detail of the language; see the Reference Manual for comprehensive and authoritative documentation of all language features.

Chapter 1 introduces the essential concepts of Orc, such as communication with external services, and building complex orchestrations from simpler programs using the four concurrency combinators. Data structures and function definitions are also discussed.

Chapter 2 discusses some additional features of Orc that extend the basic syntax. These are useful for creating practical Orc programs, but they are not essential to the understanding of the language.

Chapters 3 through 5 turn our attention to how the language is used in practice, with guidelines on style and programming methodology, explanations of some common concurrency patterns, and larger example programs.