Cray Inc. and the Chapel open-source community are pleased to announce the release of version 1.11.0 of the Chapel Compiler.
The highlights of this release include:
The 'chpldoc' source-code-to-documentation tool has been revamped to support better web output and includes a richer feature set. Documentation for all standard library modules, created using 'chpldoc', is now available online at:
http://chapel.cray.com/docs/latest/
The standard library supports more operations on files and directories with the new FileSystem module. Key FFTW routines are supported with the new FFTW module. For more details, see:
http://chapel.cray.com/docs/latest/modules/standard/FileSystem.html
http://chapel.cray.com/docs/latest/modules/standard/FFTW.html
The language and compiler now support task intent clauses and semantics on forall loops and have initial support for 'reduce' intents on forall loops. Task intent clauses have been expanded to support "blank", 'in', 'const', 'const in', and 'const ref'. This release also includes support for standalone parallel iterators, used by non-zippered forall loops to avoid overheads stemming from zippered iteration.
The compiler now has the ability to flag parallel loops and operations as being vectorizable for the back-end C compiler via the --vectorize flag (enabled by default when using --fast). This release also contains new optimizations for reducing amount of generated communication-related code, particularly for module-scope variables and local arrays. These improvements, along with others, can significantly benefit performance for single- and multi-locale executions.
The Cray module now uses 'ugni' as its default communication layer and 'muxed' as its default tasking layer for improved performance. The default number of threads and amount of memory reserved by this configuration has changed in this release. This release is also the first in which 'ugni' communication can be mixed with 'qthreads' tasking.
An early prototype interactive/interpreted mode for writing Chapel code, the Chapel Interactive Programming Environment ('chpl-ipe'), has been added. This release includes a proof-of-concept implementation. This tool is designed to allow Chapel developers to write applications in an incremental and interactive fashion, bypassing the traditional edit-compile-run cycle. For example:
IPE 0.1 1 > var x = 20; 2 > proc double(x : int) : int return x + x; 3 > writeln('2 * x is ', double(x)); 2 * x is 40
A new utility, 'chpltags', is added to generate emacs/vim tags for Chapel code. See '$CHPL_HOME/util/chpltags --help' for more details. Initial support for Python->Chapel interoperability via PyChapel is also available. Please see http://pychapel.readthedocs.org/ for more details.
Several portability issues are fixed, so NetBSD platforms and additional flavors of Linux are supported. hwloc, qthreads, and gmp will also work on a wider number of platforms.
For more information on the above, or for a more complete list of changes, please refer to $CHPL_HOME/CHANGES.
This release of Chapel contains stable support for the base language, and for task and regular data parallelism using one or more locales. Data parallel operations on irregular domains and arrays are currently supported in a single-locale implementation. While performance has received a great deal of attention in Chapel's design and is generally improving from release-to-release, this release is lacking a number of crucial performance optimizations. See $CHPL_HOME/PERFORMANCE for additional notes on Chapel performance.