Dear Chapel community –
Cray, a Hewlett Packard Enterprise Company, and the Chapel open-source community are proud to announce the release of Chapel version 1.21!
[Mac users: the Homebrew formula is still working its way through the system… see https://github.com/Homebrew/homebrew-core/pull/52790 ]
This is the first of two releases that we will be making this month. Chapel 1.21 is our typical semi-annual release containing numerous feature and performance improvements. Chapel 1.22 will focus on changing Chapel’s implicitly indexed types to 0-based indexing from Chapel’s historical choice of 1-based. We recommend that users with existing Chapel code incrementally upgrade to version 1.21 before 1.22 in order to ease the transition.
Chapel 1.21 includes the following highlights, many of which support our goal of stabilizing Chapel’s core features for a forthcoming Chapel 2.0 release:
Chapel’s modules and namespaces have improved in a number of ways, including:
the addition of a new
importstatement that provides a more precise way of referring to a module’s contents
a new ability to rename modules when they’re used via
use MyLongModuleName as M;)
prototypical support for storing a module’s sub-modules in their own files
reduced bleeding of symbols between modules by making
useprivate by default and leveraging it in Chapel-provided modules
Chapel strings are now validated to ensure that they are UTF8, and the
bytestype has been improved to be a true peer to strings.
Chapel now supports split initialization of variables, constants, types, params, and refs, which permits the declaration of a symbol to occur in a distinct statement from its initialization.
We added several features that support a more index-neutral style of programming, such as support for looping over heterogeneous tuples and a
.indicesquery for most collection types.
This release also contains several new performance improvements and optimizations including:
better performance and scalability when creating distributed domains and arrays
improvements to the unordered operation optimization and its associated
on-statement performance for InfiniBand networks
improved performance (and correctness) of mis-aligned
The language specification has been converted from PDF to HTML to better integrate it with Chapel’s other online documentation (see https://chapel-lang.org/docs/language/spec/index.html)
ofi/libfabric implementation of the runtime has improved in terms of functionality, portability, and performance.
In addition, Chapel 1.21 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 CHANGES.md within the release or online:
To download and install the release, see:
And for a list of everyone who contributed to Chapel 1.21, 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,
For further information about Chapel
Whether you’re a user of Twitter or Facebook, or would simply enjoy
checking in on us from time-to-time, Chapel’s social media pages have
a reasonably 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.