| Chapel | |
|---|---|
| Paradigm | Object-oriented Partitioned global address space Parallel programming |
| Designed by | David Callahan, Hans Zima, Brad Chamberlain, John Plevyak |
| Developer | Hewlett Packard Enterprise (previouslyCray Inc.) |
| First appeared | 2009; 16 years ago (2009) |
| Stable release | 2.6.0 / September 18, 2025; 2 months ago (2025-09-18) |
| Typing discipline | static inferred |
| Platform | multiplatform, includingAmazon Web Services,HPE Cray EX |
| OS | Mac OS,Linux,POSIX,Windows (withCygwin),NetBSD |
| License | Apache License 2.0 |
| Filename extensions | .chpl |
| Website | chapel-lang |
| Influenced by | |
| Ada,C#,[1]C,Fortran,C++,Java,HPF,ZPL,Cray MTA /XMT extensions to C and Fortran.[2] | |
Chapel, theCascade High Productivity Language, is aparallel programming language that was developed byCray,[3] and later byHewlett Packard Enterprise which acquired Cray. It was being developed as part of the Cray Cascade project, a participant inDARPA'sHigh Productivity Computing Systems (HPCS) program, which had the goal of increasingsupercomputer productivity by 2010. It is being developed as anopen source project, under version 2 of theApache license.[4]
The Chapel compiler is written inC andC++ (C++14). The backend (i.e. the optimizer) isLLVM, written in C++. Python 3.7 or newer is required for some optional components such Chapel’s test system and c2chapel, a tool to generate Cbindings for Chapel. By default Chapel compiles to binary executables, but it can also compile to C code, and then LLVM is not used. Chapel code can be compiled to libraries to be callable from C, or Fortran or e.g. Python also supported. Chapel supportsGPU programming through code generation for NVIDIA and AMD graphics processing units.[5]
Chapel aims to improve the programmability ofparallel computers in general and the Cascade system in particular, by providing a higher level of expression than current programming languages do and by improving the separation between algorithmic expression anddata structure implementation details.
The language designers aspire for Chapel to bridge the gap between currenthigh-performance computing (HPC) programming practitioners, who they describe as Fortran, C or C++ users writingprocedural code using technologies likeOpenMP andMPI on one side, and newly graduating computer programmers who tend to prefer Java, Python or Matlab with only some of them having experience with C++ or C. Chapel should offer the productivity advances offered by the latter suite of languages while not alienating the users of the first.[2]
Chapel supports amultithreaded parallel programming model at a high level by supporting abstractions fordata parallelism,task parallelism, andnested parallelism. It enables optimizations for thelocality of data and computation in the program via abstractions for data distribution anddata-driven placement of subcomputations. It allows forcode reuse and generality throughobject-oriented concepts andgeneric programming features. For instance, Chapel allows for the declaration oflocales.[6]
While Chapel borrows concepts from many preceding languages, its parallel concepts are most closely based on ideas fromHigh Performance Fortran (HPF),ZPL, and theCray MTA's extensions toFortran andC.