From: Brad C. <br...@cr...> - 2019-09-19 23:56:17
|
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. |