Announcing Chapel 1.25.0!

Dear Chapel community –

We’re happy to announce that Chapel version 1.25 was released yesterday!

[Homebrew users, please note: as is often the case, the brew formula for 1.25 is unfortunately lagging the rest of the release, and is currently under review]

This release represents a major shift in Chapel compilation, in which the LLVM back-end is now preferred over the traditional C back-end, and it will be used by default when an appropriate version is found on the system. When no such version is found, a user building from source is given the choice of installing one, building the bundled version of LLVM, or using the C back-end. For further details see the CHPL_LLVM documentation.

For users of HPE Apollo systems, this release includes a new CHPL_[HOST|TARGET]_PLATFORM setting, hpe-apollo, designed to simplify setup on such systems. Chapel 1.25.0 also generally improves performance on InfiniBand systems, and memory fragmentation has been significantly reduced.

Some general performance improvements in this release include faster creation of Block-distributed arrays and reduced overheads for common zippered coforall loop forms. The (off-by-default) --auto-aggregation flag has also been improved to apply in more cases.

In terms of the language and libraries, a few notable prototype features have been added:

  • a foreach loop to indicate parallel loops that should only be implemented using vectorization or GPUs rather than multiple tasks, as with forall loops
  • a manage statement for context management, simplifying patterns that require actions at the beginning and end of a block scope
  • an ArgumentParser module to simplify user-defined parsing of arguments sent to main()
  • an OrderedMap collection

While support for programming GPUs from native Chapel code is still in its early days, this release represents a significant step forward in terms of capabilities and elegance for GPU programming in Chapel. For more details, see the GPU technical note.

Chapel's ofi communication option has improved significantly in terms of portability, robustness, and performance in this release, making Chapel increasingly capable on libfabric-based systems.

Finally, the c2chapel tool has been expanded to support generation of Chapel extern prototypes from C header files containing GNU extensions.

Beyond these changes, Chapel 1.25.0 continues our push towards a stable Chapel 2.0 release by improving names and behavior for many standard library routines and methods. It also contains numerous bug fixes, error message improvements, and feature enhancements.

For a more complete list of changes, please refer to .

To download and install the release, see: Chapel: Download .

And for a list of everyone who contributed to Chapel 1.25, please refer to .

As always, we’re interested in feedback on how we can make the Chapel language, implementation, libraries, and tools more useful to you and your work.

On behalf of the Chapel project,
-Brad Chamberlain