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
- andCyclic
-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
compiler -
optimized remote task spawns and communications on Cray systems that
useugni
communication -
a prototype optimization that applies unordered operations to the
last statements offorall
loops on Cray systems, enabled using
–optimize-forall-unordered-ops -
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
communication -
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
, andPath
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 CHANGES.md within the release or online:
https://github.com/chapel-lang/chapel/blob/release/1.19/CHANGES.md
To download and install the release, see:
https://chapel-lang.org/download.html
And for a list of those who contributed to Chapel 1.19, please see:
https://github.com/chapel-lang/chapel/blob/release/1.19/CONTRIBUTORS.md
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:
https://www.facebook.com/ChapelLanguage
https://twitter.com/ChapelLanguage
Our development repository is hosted at GitHub, making it the best
place to track, or contribute to, ongoing Chapel development:
https://github.com/chapel-lang/chapel
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.