Announcing Chapel version 1.19!

Dear Chapel community –

Cray Inc. and the Chapel open-source community are proud to announce
the release of Chapel version 1.19! (homebrew users: note that 1.19
is not yet available via homebrew, but should be soon).

This release includes the following highlights:

  • support for compile-time operations on param floating point values

  • the ability to use underscores in numeric values to break long
    values into chunks (e.g., 1_000_000)

  • improvements to error-handling, initializers, and strings

  • improved lifetime checking, including language support for
    annotating the relative lifetimes of procedure arguments

  • compile-time nil-checking

  • a distinction between constructs that must be parallel (e.g.,
    forall loops) and those that will use parallelism when available,
    but fall back to serial execution otherwise (e.g., promotions,
    reductions, and []-loops)

  • index-preservation for promotions and loop expressions over ranges
    as well as index- and shape-preservation for scan expressions

  • support for distributed associative domains and arrays via the
    Hashed distribution

  • convenience functions for creating Block- and Cyclic-distributed
    domains and arrays

  • improved performance as a result of using C standard atomic
    operations by default when using GCC, Clang, or LLVM as the back-end

  • optimized remote task spawns and communications on Cray systems that
    use ugni communication

  • a prototype optimization that applies unordered operations to the
    last statements of forall loops on Cray systems, enabled using

  • a prototype parallel implementation of scans over local and
    block-distributed 1D arrays, enabled using -senableParScan

  • a new OpenFabrics Interfaces option, ofi, for libfabric-based

  • a new c_array type that can be used to represent static arrays in
    external C code (or the equivalent)

  • improved support for Python interoperability as well as initial
    support for interoperating with Fortran including the ability to
    pass 1D arrays between Fortran and Chapel

  • improvements to the Random, Sort, and Path modules

  • significant improvements to the maturity of the LLVM back-end

And of course, Chapel 1.19 contains many other feature enhancements,
bug fixes, and documentation improvements. For a far more complete
list of changes including pointers to supporting documentation, please
refer to within the release or online:

To download and install the release, see:

And for a list of those who contributed to Chapel 1.19, please see:

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

On behalf of the Chapel project,
-Brad Chamberlain

For further information about Chapel

Whether you’re a Facebook or Twitter user, or might simply enjoy
checking in on us online from time-to-time, Chapel’s social media
pages have a steady stream of content about the project and language:

Our development repository is hosted at GitHub, making it the best
place to track, or contribute to, ongoing Chapel development:

The Chapel website can be found at:

and it remains the best place to find Chapel-related information such
as videos, papers, presentations, blog posts, and tutorials.

1 Like