Dear Chapel community --

Cray Inc. and the Chapel open-source community are proud to announce
the release of Chapel version 1.20!

[Homebrew users: note that 1.20 is not yet available via homebrew, but
hopefully will be soon. If this is a hassle for you, upvote the PR

      https://github.com/Homebrew/homebrew-core/pull/44425

in hopes of moving it along...]

Chapel 1.20 includes the following highlights:

* Chapel's `string` type now supports UTF-8 codepoints rather than
  just ASCII characters.  In addition, a new `bytes` type with
  corresponding literals (e.g., b"here are some bytes") has been added
  to support arbitrary byte strings.

* For a class `C`, Chapel now distinguishes between variables that can
  store `nil` (using `C?`) and those that cannot (using `C`).  A new
  postfix `!` operator supports non-nil assertions for nilable `C?`
  variables.

* The memory management flavors on classes have been improved so that
  an undecorated class type `C` is now generic with respect to memory
  management type, where before it was treated as `borrowed C`.
  Undecorated `new C()` now defaults to `new owned C()`.  Argument
  passing has also been improved for managed classes to avoid some
  tricky cases.

* Chapel now supports partial instantiations of generic types.
  Uninstantiated and partially instantiated generic types can also now
  be passed to, or returned from, procedures as type arguments.

* To improve namespace sanity, module-level `use` statements can now
  be marked `private` to prevent symbols from becoming visible outside
  of the module.  In addition, top-level modules must now be `use`d
  before their names or contents can be referenced.

* New `list`, `set`, and `map` types have been introduced to support
  standard collections with familiar interfaces.  Related, list-like
  operations on 1D arrays and map-like operations on associative
  arrays have been deprecated in favor of these new types.

* Chapel now supports the creation of multi-locale libraries that can
  be called from Python or C, as well as the ability to pass or return
  strings from exported routines in Chapel libraries.

* A new `UnitTest` module has been added to support unit testing, and
  is also available via the mason package manager's `test` command.

* Several new performance optimizations and enhancements have been
  made including:
  - improved affinity and performance of parallel loops
  - optimized bulk transfers for Block-distributed arrays
  - compiler-generated unordered operations and improved performance
    for unordered operations
  - parallel scans on 1D local and block-distributed arrays
  - improved performance for parallel-safe data structures

* Improvements to the `mason` package manager in terms of testing,
  publishing, searching, and working offline.

* New `Reflection` routines support reasoning about the filename, line
  number, module, or function name of a given line of source code.

* The user-facing interfaces for `atomic` types have been improved and
  normalized.

* Support for libfabric providers has been improved in terms of
  completeness and portability, using the CHPL_COMM=ofi setting.

* A new `none` type with a corresponding `nothing` value is now
  supported to avoid the two interpretations of `void` that had
  previously existed in Chapel.

* A new `EpochManager` package has been added that supports concurrent
  memory reclamation.

* Support for the LLVM compiler back-end has improved.

* We have also improved compiler errors for failures when resolving
  functions and for generic routines.

* An initial Chapel module has been created for Cray Shasta systems
  and is expected to be available as those systems begin shipping to
  customers.


And of course, Chapel 1.20 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.20/CHANGES.md

To download and install the release, see:

  https://chapel-lang.org/download.html

And for a list of everyone who contributed to Chapel 1.20, please see:

  https://github.com/chapel-lang/chapel/blob/release/1.20/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 user of Twitter or Facebook, or would simply enjoy
checking in on us from time-to-time, Chapel's social media pages have
a steady stream of content about the project and language:

   https://twitter.com/ChapelLanguage
   https://www.facebook.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:

   https://chapel-lang.org

and it remains the best place to find Chapel-related information such
as videos, papers, presentations, blog posts, and tutorials.


_______________________________________________
Chapel-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/chapel-users

Reply via email to