Est. 2009 Advanced

Chapel

A parallel programming language designed for productive high-performance computing at scale, developed by Cray Inc. under the DARPA HPCS program.

Created by Bradford L. Chamberlain (Cray Inc.)

Paradigm Multi-paradigm: Imperative, Object-Oriented, Generic, Concurrent
Typing Static, Strong, Inferred
First Appeared 2009
Latest Version 2.8.0 (March 2026)

Chapel (Cascade High Productivity Language) is a parallel programming language designed to make high-performance computing more productive, portable, and scalable. Developed initially by Cray Inc. as part of the DARPA High Productivity Computing Systems (HPCS) program, Chapel aims to bridge the gap between the performance of traditional HPC languages like Fortran and C and the programmability of modern languages like Python and Java. Chapel programs can run on everything from multicore laptops to large-scale supercomputers with thousands of nodes, all from a single codebase.

History & Origins

Chapel’s origins trace to 2002, when the U.S. Defense Advanced Research Projects Agency (DARPA) launched the High Productivity Computing Systems (HPCS) program with the goal of increasing supercomputer productivity by an order of magnitude. Cray Inc. was one of several companies selected for the program, and their contribution—codenamed “Cascade”—included a new programming language designed from scratch for parallel computing. That language became Chapel.

Bradford L. Chamberlain, who had previously worked on the ZPL data-parallel language during his PhD at the University of Washington, became Chapel’s technical lead in 2006 and has guided the project’s design and development since. Chamberlain’s experience with ZPL strongly influenced Chapel’s approach to domains, distributions, and data-parallel iteration.

The first version was shared with external users in December 2006. Chapel became publicly available with version 0.8 in November 2008, and version 1.0 followed in October 2009 under the BSD license, hosted on SourceForge. When the DARPA HPCS program concluded in 2012, Cray chose to continue Chapel’s development independently as an open-source project, demonstrating the company’s commitment to the language beyond its government-funded origins.

In 2014, Chapel transitioned to the Apache 2.0 license and moved its repository to GitHub, broadening community participation. When Hewlett Packard Enterprise acquired Cray in September 2019, Chapel development continued under HPE. The language reached a major milestone with version 2.0.0 in March 2024, which established stability guarantees for core language and library features.

Design Philosophy

Chapel is built around what its designers call a multiresolution philosophy: programmers can start by writing high-level, abstract code and incrementally add lower-level details for performance tuning as needed. This contrasts with traditional HPC programming, where developers must deal with explicit message passing (MPI), thread management (OpenMP), or hardware-specific intrinsics from the start.

The language’s core design goals include:

  • Productivity at scale: Writing parallel programs should not require fundamentally different skills than writing sequential ones
  • Portability across platforms: The same Chapel program should run on a laptop, a commodity cluster, a cloud environment, or a supercomputer without modification
  • Separation of algorithm from data structure: Algorithmic logic should be expressible independently of how data is distributed across memory and processors
  • Locality awareness: Programmers should be able to reason about and control where computation and data reside when performance demands it

Key Features

Domains and Arrays

Chapel’s most distinctive feature is its domain type—a first-class language construct that describes an index set. Domains can represent regular grids, sparse index sets, or associative mappings. Arrays are declared over domains, and when a domain is distributed across multiple locales (compute nodes), its arrays are automatically distributed as well:

1
2
3
4
5
6
const D = {1..1000, 1..1000};          // 2D domain
var A: [D] real;                        // array over that domain

use BlockDist;
const DBlock = blockDist.createDomain(D); // distributed domain
var B: [DBlock] real;                     // automatically distributed array

Parallel Constructs

Chapel provides several built-in constructs for parallelism:

  • forall loops: Execute iterations in parallel with automatic work distribution. The compiler and runtime determine how to partition work across available processing resources
  • coforall loops: Create one distinct task per iteration for explicit task-level parallelism
  • cobegin blocks: Launch multiple statements as concurrent tasks
  • begin statements: Fire-and-forget task creation

Locales

Locales are Chapel’s abstraction for a unit of the target architecture that has processing and memory capabilities. On a cluster, each node is typically a locale. Chapel’s on clause moves computation to a specific locale:

1
2
3
4
on Locales[1] {
  // this code executes on locale 1
  writeln("Running on ", here.name);
}

Type System

Chapel is statically typed with type inference. It supports:

  • Generic functions and types parameterized over types and compile-time values
  • Records (value types) and classes (reference types)
  • Tuples, ranges, and enumerated types
  • Configuration variables (config const, config var) that can be set at runtime from the command line without recompilation
  • Synchronization types (sync, atomic) built into the type system

Object-Oriented Features

Chapel supports classes with single inheritance, interfaces (via the evolving interface/implements mechanism), dynamic dispatch, and generic classes. Records provide value-type semantics with custom initializers and methods.

Evolution

The 1.x Era (2009–2024)

Chapel maintained an active development pace throughout the 1.x series, releasing roughly twice per year. Each release expanded the language’s capabilities—improving domain maps, adding locale models, enhancing the standard library, improving compiler optimizations, and broadening platform support. The project accumulated the majority of its approximately 112,000 total commits during this period.

Key developments during the 1.x era included improving interoperability with C and Python, adding GPU computing support, and steadily improving compilation speed and generated code performance.

Chapel 2.0 and Beyond (2024–Present)

Version 2.0.0, released in March 2024, was a landmark release that established language stability guarantees. Core language features and standard library interfaces were stabilized, giving users confidence that code written against Chapel 2.0 would continue to work in future releases. The 2.x series adopted a quarterly release cadence, with versions 2.1 through 2.8 following at regular intervals.

In November 2025, Chapel joined the High Performance Software Foundation (HPSF), a Linux Foundation project, which established a Technical Steering Committee with representatives from HPE and academia to guide the language’s governance.

Current Relevance

Chapel is actively developed with a quarterly release cadence and over 112,000 commits on GitHub. The language has found its strongest adoption in scientific computing and data analytics, with projects like Arkouda demonstrating that Chapel can scale interactive data science workloads to thousands of compute nodes.

The community gathers around the Chapel Discourse forum and the annual ChapelCon conference. The language has attracted contributions from both HPE employees and academic researchers, with growing interest from the broader HPC community as Chapel’s 2.x stability guarantees reduce the risk of adopting it for production workloads.

Chapel supports Linux (its primary platform), macOS, and Windows via WSL. It targets multicore systems, commodity clusters, cloud environments, and HPE Cray EX supercomputers. Recent development has added vendor-neutral GPU programming support for NVIDIA and AMD hardware.

Why It Matters

Chapel represents one of the most ambitious attempts to rethink how parallel programs are written. While MPI+OpenMP remains the dominant paradigm in high-performance computing, it requires programmers to manage low-level communication, synchronization, and data distribution manually. Chapel’s approach—expressing parallelism and data distribution as first-class language concepts rather than library add-ons—offers a fundamentally different model where the compiler and runtime shoulder much of that burden.

The language’s multiresolution design philosophy is particularly significant: it acknowledges that different problems and different stages of development require different levels of control, and provides a single language that can operate at all of them. Whether Chapel ultimately achieves widespread HPC adoption or not, its design ideas around domains, locales, and data-parallel iteration have contributed meaningfully to the conversation about what productive parallel programming should look like.

Timeline

2002
Chapel development begins at Cray Inc. under DARPA's High Productivity Computing Systems (HPCS) program Phase I
2006
First version released to select external users in December; Brad Chamberlain becomes project technical lead
2008
First public release (version 0.8) in November, making Chapel available to the broader community
2009
Version 1.0 released on October 15 under the BSD license, hosted on SourceForge; open-source development model adopted
2012
DARPA HPCS program concludes; Cray continues Chapel development independently as an open-source project
2014
License changed to Apache 2.0 in July; repository migrated from SourceForge to GitHub
2019
Hewlett Packard Enterprise completes acquisition of Cray Inc. in September; Chapel development continues under HPE
2024
Version 2.0.0 released on March 21, establishing stability guarantees for core language and library features
2025
Chapel joins the High Performance Software Foundation (HPSF) as an official project in November
2026
Version 2.8.0 released on March 12, continuing quarterly release cadence

Notable Uses & Legacy

Arkouda

Open-source data science framework that provides NumPy-like array operations at massive scale; implemented in Chapel to enable interactive analysis of datasets spanning hundreds of terabytes

CHAMPS (Chapel Multi-Physics Software)

Aerospace computational fluid dynamics solver developed at Polytechnique Montreal with over 125,000 lines of Chapel code for URANS equations and turbulence modeling

Cray/HPE Supercomputer Benchmarks

Chapel has been used for benchmarking and performance evaluation on Cray and HPE Cray EX supercomputer systems, demonstrating scalability to thousands of compute nodes

Coral Reef Biodiversity Analysis

Parallel algorithms developed by oceanographer Scott Bachman for identifying coral preservation sites, leveraging Chapel's data-parallel capabilities for large-scale environmental data processing

Language Influence

Influenced By

C C++ Fortran Java Modula ZPL High Performance Fortran Cray MTA Extensions CLU Scala ML

Running Today

Run examples using the official Docker image:

docker pull
Last updated: