Announcing Chapel 1.28.0!

Hello Chapel Community —

I'm very happy to announce that we have released Chapel 1.28.0 today!

Many of the changes in Chapel 1.28.0 are focused on improving the language and libraries as we continue to work toward stabilization of core features for our forthcoming 2.0 release.

As a key example, there have been a number of changes in this release designed to make working with non-default numerical types—or combinations of numerical types—simpler, more intuitive, and more consistent with other scientific languages. Our implicit conversion and resolution rules have been updated to better preserve bit-widths, and to make operations combining disparate types generate natural results rather than surprising ones or errors. We have also relaxed striding and counting operations on small-bit-width ranges to support arbitrary integer operands rather than requiring them to be compatible with the index type.

Beyond that, Chapel 1.28.0 includes numerous minor changes to the organization of, and namings within, the standard library modules. These are too numerous (and typically minor) to enumerate here, but check the links at the bottom of this announcement for details.

The GPU support that we've introduced in the past few releases has been improved in Chapel 1.28.0 to permit a wider variety of parallel loop computations to be generated as GPU kernels. We have also added a new 'GPU' utility module that provides the ability to assert that a computation will execute on the GPU as intended (or to generate an explanation for why it won't otherwise). The module also adds support for printing simple messages from within GPU loops.

Chapel 1.28.0 introduces a new Communication module that supports put/get routines for performing explicit data transfers between locales for users who want to exert more control over the low-level communication in their code.

This release also makes notable improvements to the 'chpldoc' and 'mason' tools. The 1.28.0 version of 'chpldoc' is a brand-new implementation that addresses several bugs or shortcomings in previous versions. Notably, the new 'chpldoc' is the first use case (other than 'chpl' itself) of our new compiler library that has been developed under the 'dyno' effort. We have improved the 'mason' package manager to support additional modes of operation and improve certain operations, while also making significant improvements to its documentation.

For a more complete list of changes in Chapel 1.28.0, see its file or stay tuned for the 1.27/1.28 release notes, which should be published in a few weeks.

You can download and install Chapel 1.28.0 from: Chapel: Download

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

Thanks to everyone who contributed to Chapel 1.28.0! (listed at )

On behalf of the Chapel project,
-Brad Chamberlain