This specification is organized as follows:
Chapter Scope describes the scope of this specification.
Chapter Notation introduces the notation that is used throughout this specification.
This Chapter Organization describes the contents of each of the chapters within this specification.
Chapter Acknowledgments offers a note of thanks to people and projects.
Chapter Language Overview describes Chapel at a high level.
Chapter Lexical Structure describes the lexical components of Chapel.
Chapter Types describes the types in Chapel and defines the primitive and enumerated types.
Chapter Variables describes variables and constants in Chapel.
Chapter Conversions describes the legal implicit and explicit conversions allowed between values of different types.
Chapter Expressions describes the non-parallel expressions in Chapel.
Chapter Statements describes the non-parallel statements in Chapel.
Chapter Modules describes modules in Chapel, which allow for namespace management.
Chapter Procedures describes functions and function resolution in Chapel. It focuses on procedure functions.
Chapter Tuples describes tuples in Chapel.
Chapter Classes describes classes in Chapel, which offer reference semantics.
Chapter Records describes records in Chapel, which offer value semantics.
Chapter Unions describes unions in Chapel.
Chapter Ranges describes ranges in Chapel.
Chapter Domains describes domains in Chapel. Chapel domains are first-class index sets that support the description of iteration spaces, array sizes and shapes, and sets of indices.
Chapter Arrays describes arrays in Chapel. Chapel arrays are more general than in most languages including support for multidimensional, sparse, associative, and unstructured arrays.
Chapter Iterators describes iterator functions.
Chapter Generics describes Chapel’s support for generic functions and types.
Chapter Input and Output describes support for input and output in Chapel, including file input and output.
Chapter Task Parallelism and Synchronization describes task-parallel expressions and statements in Chapel as well as synchronization constructs, and atomic variables.
Chapter Data Parallelism describes data-parallel expressions and statements in Chapel including reductions and scans, whole array assignment, and promotion.
Chapter Locales describes constructs for managing locality and executing Chapel programs on distributed-memory systems.
Chapter Distributions describes Chapel’s distributions, which define how domains and arrays are stored in memory and/or distributed across multiple locales and how data-parallel operations are performed.
Chapter User-Defined Reductions and Scans describes how Chapel programmers can define their own reduction and scan operators.
Chapter Memory Consistency Model describes Chapel’s rules for ordering the reads and writes performed by a program’s tasks.
Chapter Interoperability describes Chapel’s interoperability features for combining Chapel programs with code written in different languages.