Announcing Chapel 1.23.0!

Dear Chapel community –

We’re proud to announce the release of Chapel version 1.23!

Perhaps the most exciting news about this release is that it does not significantly redefine core language features as the last several releases have. We’ve improved the language in several ways such as:

  • addressing some long-term point-of-instantiation issues
  • making improvements to accessing modules via use and import
  • improving support for split initialization and array initialization
  • making in, out, and inout intents work better

But for the most part these changes address cases that weren’t working as intended, and most existing programs should continue to work as they have (but please let us know if that’s not the case!).

This release continues our recent efforts to clamp down on standard module symbols that were incorrectly made available without a use or import of that module. As a result, programs which make use of interoperability features like c_ptr, c_int, or c_float may not compile until the appropriate module is added to its use/import list.

In terms of libraries:

  • new Heap and OrderedSet modules add support for those data types
  • a new Version module permits users to reason about the version of chpl used to compile their code, or to store and compare version numbers within module code
  • the LinearAlgebra module received several improvements in this release
  • the main collection types list, set, and map) improved in terms of their orthogonality and interfaces

The mason package manager received significant improvements in this release, including:

  • interactive modes for mason new and mason init
  • improved ergonomics for mason search, test, build, and publish
  • bash completion support.

Chapel 1.23 contains several performance enhancements such as:

  • a new optimization that automatically reduces the cost of array accesses within loops when the compiler can determine that the loop iterations and indices are aligned in their distributions.
  • parallelization improvements for large array assignments and initializations
  • reductions in bookkeeping overhead for declaring arrays, particularly for those over const domains
  • speed improvements for sets, maps, and associative arrays/domains

In addition, compilation times have improved significantly for programs using certain patterns, such as formatted I/O.

Chapel 1.23 also contains:

For a more complete list of changes, including pointers to supporting documentation, please refer to

To download and install the release, see: (note that, at the time of this writing, we’re still waiting for the Mac homebrew formula to be updated).

And for a list of everyone who contributed to Chapel 1.23, please refer to We’d particularly like to acknowledge our Google Summer of Code 2020 students, who contributed several of the notable improvements above, including those to the libraries and mason, as well as the newly added protobuf support. Thanks Ankush, Rahul, Aniket (@Aniket21mathur), and Yujia! And thanks also to our external GSoC mentors, Garvit and Krishna, and to the Google Summer of Code program itself for supporting these efforts.

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