Organization

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.