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
- improving support for split initialization and array initialization
inoutintents 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
import of that module. As a result, programs which make use of interoperability features like
c_float may not compile until the appropriate module is added to its
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
chplused 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
map) improved in terms of their orthogonality and interfaces
mason package manager received significant improvements in this release, including:
- interactive modes for
- improved ergonomics for
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
- 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:
- initial support for using Chapel with Google Protocol Buffers
- significant portability and performance improvements when using
- improvements to the LLVM-based back-end
- improvements in terms of memory fragmentation and leaks
For a more complete list of changes, including pointers to supporting documentation, please refer to CHANGES.md.
To download and install the release, see: https://chapel-lang.org/download.html (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 CONTRIBUTORS.md. 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,