From 70dc707a3a4763d47c095fe06f1a9a78238f549e Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Wed, 4 Sep 2024 16:26:26 -0700 Subject: [PATCH 01/29] Template for CHANGES.md for Chapel 2.2 --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 189 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index babf1d95a711..76485ee8f7ae 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,195 @@ Release Changes List ==================== +version 2.2 +=========== + +released September 26, 2024 + +Highlights (see subsequent sections for further details) +-------------------------------------------------------- + +Updates to Chapel's Release Formats +----------------------------------- + +Prerequisite Updates +-------------------- + +Syntactic / Naming Changes +-------------------------- + +New Language Features +--------------------- + +Language Feature Improvements +----------------------------- + +Semantic Changes / Changes to the Language Definition +----------------------------------------------------- + +Deprecated / Unstable / Removed Language Features +------------------------------------------------- + +Namespace Changes +----------------- + +New Standard Library Features +----------------------------- + +New Package Module Features +--------------------------- + +Changes / Feature Improvements in Standard Libraries +---------------------------------------------------- + +Changes / Feature Improvements in Package Modules +------------------------------------------------- + +Standard Layouts and Distributions +---------------------------------- + +Name Changes in Libraries +------------------------- + +Deprecated / Unstable / Removed Library Features +------------------------------------------------ + +Tool Improvements +----------------- + +GPU Computing +------------- + +Performance Optimizations / Improvements +---------------------------------------- + +Documentation Improvements +-------------------------- + +Documentation Improvements for Tools +------------------------------------ + +Language Specification Improvements +----------------------------------- + +Platform-Specific Documentation Improvements +-------------------------------------------- + +Technical Note Improvements +--------------------------- + +Documentation Improvements for Libraries +---------------------------------------- + +Documentation Improvements to the 'man' Pages +--------------------------------------------- + +Example Codes +------------- + +Compilation Time Improvements +----------------------------- + +Generated Code Improvements +--------------------------- + +Memory Improvements +------------------- + +Syntax Highlighting +------------------- + +Configuration / Build Changes +----------------------------- + +Portability / Platform-specific Improvements +-------------------------------------------- + +Compiler Improvements +--------------------- + +Compiler Flags +-------------- + +Generated Executable Flags +-------------------------- + +Error Messages / Semantic Checks +-------------------------------- + +Launchers +--------- + +Runtime Library Changes +----------------------- + +Bug Fixes +--------- + +Bug Fixes for Build Issues +-------------------------- + +Bug Fixes for GPU Computing +--------------------------- + +Bug Fixes for Libraries +----------------------- + +Bug Fixes for Tools +------------------- + +Bug Fixes for the Runtime +------------------------- + +Third-Party Software Changes +---------------------------- + +Developer-oriented changes: Process +----------------------------------- + +Developer-oriented changes: Documentation +----------------------------------------- + +Developer-oriented changes: Syntactic / Naming Changes +------------------------------------------------------ + +Developer-oriented changes: Module changes +------------------------------------------ + +Developer-oriented changes: Performance improvements +---------------------------------------------------- + +Developer-oriented changes: Makefile / Build-time changes +--------------------------------------------------------- + +Developer-oriented changes: Compiler Flags +------------------------------------------ + +Developer-oriented changes: Compiler improvements / changes +----------------------------------------------------------- + +Developer-oriented changes: 'dyno' Compiler improvements / changes +------------------------------------------------------------------ + +Developer-oriented changes: GPU support +--------------------------------------- + +Developer-oriented changes: Runtime improvements +------------------------------------------------ + +Developer-oriented changes: Platform-specific bug fixes +------------------------------------------------------- + +Developer-oriented changes: Testing System +------------------------------------------ + +Developer-oriented changes: Tool Improvements +--------------------------------------------- + +Developer-oriented changes: Utilities +------------------------------------- + + version 2.1 =========== From f9cb3db3551b4a4ea0ca4702a06ce91ff0bd2b51 Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Mon, 16 Sep 2024 10:53:33 -0700 Subject: [PATCH 02/29] My CHANGES for 2.2 --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 76485ee8f7ae..dfff3dcfe2e2 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -62,9 +62,13 @@ GPU Computing Performance Optimizations / Improvements ---------------------------------------- +* enabled optimization that auto-localizes domains by default when possible + (use `-slocalizeConstDomains=false` to disable) Documentation Improvements -------------------------- +* fixed and improved descriptions of library modules in Chapel's module index + (see https://chapel-lang.org/docs/2.2/chpl-modindex.html) Documentation Improvements for Tools ------------------------------------ @@ -116,6 +120,7 @@ Generated Executable Flags Error Messages / Semantic Checks -------------------------------- +* added an error for attempted uses of `sync nothing`, which is not supported Launchers --------- @@ -125,6 +130,7 @@ Runtime Library Changes Bug Fixes --------- +* fixed a bug in `scan` expressions over non-`int(64)` indices Bug Fixes for Build Issues -------------------------- @@ -134,6 +140,7 @@ Bug Fixes for GPU Computing Bug Fixes for Libraries ----------------------- +* fixed 'RangeChunk's `chunks*()` iterators for non-`int(64)` indices Bug Fixes for Tools ------------------- @@ -182,6 +189,7 @@ Developer-oriented changes: Platform-specific bug fixes Developer-oriented changes: Testing System ------------------------------------------ +* removed the default application of the `-o` flag in the `start_test` system Developer-oriented changes: Tool Improvements --------------------------------------------- From b7e03d83da7e1b55068a6b484ee2f60d6c40e246 Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Mon, 16 Sep 2024 11:57:45 -0700 Subject: [PATCH 03/29] Lydia's 2.2 CHANGES --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index dfff3dcfe2e2..73b0a10bb641 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -41,6 +41,8 @@ New Package Module Features Changes / Feature Improvements in Standard Libraries ---------------------------------------------------- +* made 'sendPosixSignal()' throw an `IllegalArgumentError` for bad signals + (see https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html) Changes / Feature Improvements in Package Modules ------------------------------------------------- @@ -50,9 +52,20 @@ Standard Layouts and Distributions Name Changes in Libraries ------------------------- +* renamed the array arguments for `Sort.sort()` and `Sort.isSorted()` + (see https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#Sort.sort + and https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#Sort.isSorted) +* renamed the `a`,`b` arguments for `compare()` methods in 'Sort' to `x`, `y` + (see https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#Sort.DefaultComparator.compare + and https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#Sort.ReverseComparator.compare) Deprecated / Unstable / Removed Library Features ------------------------------------------------ +* deprecated the standalone comparator instances in the 'Sort' module + (see https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#Sort.defaultComparator + and https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#Sort.reverseComparator) +* deprecated the `inPlaceAlgorithm` argument for the `Sort.sort()` procedure + (see https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#Sort.sort) Tool Improvements ----------------- @@ -69,6 +82,8 @@ Documentation Improvements -------------------------- * fixed and improved descriptions of library modules in Chapel's module index (see https://chapel-lang.org/docs/2.2/chpl-modindex.html) +* linked the module index from the documentation landing page + (see https://chapel-lang.org/docs/2.2/index.html#indexes) Documentation Improvements for Tools ------------------------------------ @@ -84,12 +99,25 @@ Technical Note Improvements Documentation Improvements for Libraries ---------------------------------------- +* corrected/extended the documentation for `atan()` and `atan2()` + (see https://chapel-lang.org/docs/2.2/modules/standard/Math.html#Math.atan + and https://chapel-lang.org/docs/2.2/modules/standard/Math.html#Math.atan2) +* documented which errors can be thrown from 'Subprocess' procedures + (see https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html#Subprocess.subprocess.close + and https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html#Subprocess.subprocess.sendPosixSignal) +* noted errors from `spawn`/`spawnshell` can be delayed until later calls + (see https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html#Subprocess.spawn) +* made numerous other docs fixes and improvements: wordings, typos, links, etc. Documentation Improvements to the 'man' Pages --------------------------------------------- +* added cross-reference to env var docs to 'Compiler Configuration Options' + (see https://chapel-lang.org/docs/main/usingchapel/man.html#man-task-tracking) Example Codes ------------- +* restored `examples/patterns/recordio.chpl` using 2.0-compatible features + (see `$CHPL_HOME/examples/patterns/recordio.chpl`) Compilation Time Improvements ----------------------------- @@ -114,13 +142,18 @@ Compiler Improvements Compiler Flags -------------- +* added a `--lib-pic` flag to control `CHPL_LIB_PIC`'s value at compile time + (see https://chapel-lang.org/docs/2.2/usingchapel/chplenv.html#chpl-lib-pic) Generated Executable Flags -------------------------- Error Messages / Semantic Checks -------------------------------- +* added an error when incorrectly modifying `const [in]` or default varargs * added an error for attempted uses of `sync nothing`, which is not supported +* improved error message when accidentally creating special method iterators +* improved error when using same location for `chpldoc` output and Sphinx files Launchers --------- @@ -131,6 +164,8 @@ Runtime Library Changes Bug Fixes --------- * fixed a bug in `scan` expressions over non-`int(64)` indices +* removed a redundant library linkage specifier when using `--library-makefile` +* fixed a bug with default values in Python interoperability Bug Fixes for Build Issues -------------------------- @@ -141,6 +176,7 @@ Bug Fixes for GPU Computing Bug Fixes for Libraries ----------------------- * fixed 'RangeChunk's `chunks*()` iterators for non-`int(64)` indices +* fixed a bug where `heap.createHeap()` only accepted the default comparator Bug Fixes for Tools ------------------- @@ -156,12 +192,15 @@ Developer-oriented changes: Process Developer-oriented changes: Documentation ----------------------------------------- +* extended the Standard Module Style Guide to include more 2.0 decisions + (see https://chapel-lang.org/docs/2.2/developer/bestPractices/StandardModuleStyle.html#best-practices-standard-module-style) Developer-oriented changes: Syntactic / Naming Changes ------------------------------------------------------ Developer-oriented changes: Module changes ------------------------------------------ +* removed queries from the argument lists of the 'Sort' routines Developer-oriented changes: Performance improvements ---------------------------------------------------- @@ -171,6 +210,7 @@ Developer-oriented changes: Makefile / Build-time changes Developer-oriented changes: Compiler Flags ------------------------------------------ +* extended `--print-commands` to include commands run with `--library-python` Developer-oriented changes: Compiler improvements / changes ----------------------------------------------------------- From f306f6d8fefba8a1692dc0266a653c6917c625bd Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Mon, 16 Sep 2024 12:23:40 -0700 Subject: [PATCH 04/29] Vass's CHANGES for 2.2 --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 73b0a10bb641..f883a20617a8 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -23,6 +23,7 @@ New Language Features Language Feature Improvements ----------------------------- +* added support for additional integer `<` comparisons generating a `param` Semantic Changes / Changes to the Language Definition ----------------------------------------------------- @@ -72,6 +73,8 @@ Tool Improvements GPU Computing ------------- +* added a new `@gpu.itersPerThread` attribute to control blocking iterations + (see https://chapel-lang.org/docs/2.2/technotes/gpu.html#gpu-related-attributes) Performance Optimizations / Improvements ---------------------------------------- @@ -151,6 +154,7 @@ Generated Executable Flags Error Messages / Semantic Checks -------------------------------- * added an error when incorrectly modifying `const [in]` or default varargs +* improved error messages when `const` `c_array`s are passed to `c_ptr` formals * added an error for attempted uses of `sync nothing`, which is not supported * improved error message when accidentally creating special method iterators * improved error when using same location for `chpldoc` output and Sphinx files @@ -164,6 +168,7 @@ Runtime Library Changes Bug Fixes --------- * fixed a bug in `scan` expressions over non-`int(64)` indices +* fixed alignment for records whose fields are a mix of `extern` types and non- * removed a redundant library linkage specifier when using `--library-makefile` * fixed a bug with default values in Python interoperability From 4afc1d526c99ce1609ae2b6e26695c3019467d57 Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Mon, 16 Sep 2024 12:25:54 -0700 Subject: [PATCH 05/29] BHarsh CHANGES for 2.2 --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index f883a20617a8..e40133e66034 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -222,6 +222,12 @@ Developer-oriented changes: Compiler improvements / changes Developer-oriented changes: 'dyno' Compiler improvements / changes ------------------------------------------------------------------ +* made numerous improvements to the 'dyno' resolver for types and calls: + - added support for casting `param` `enum` values to strings + - added support for type construction of generic classes + - improved support for initializers on classes that inherit + - improved error messages for out-of-order field initialization + - improved support for forwarding unmanaged class methods Developer-oriented changes: GPU support --------------------------------------- From c380169ff5aa3b0cbce3e161d679e481d8ce5a2f Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Mon, 16 Sep 2024 15:09:07 -0700 Subject: [PATCH 06/29] Jade's CHANGES for 2.2 --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index e40133e66034..a1a73391d858 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -17,9 +17,14 @@ Prerequisite Updates Syntactic / Naming Changes -------------------------- +* improved the orthogonality of Chapel syntax in several cases + (e.g., `coforall zip(a, b) { ... }` is now supported) New Language Features --------------------- +* added the ability to define and use custom memory allocators with classes + (see https://chapel-lang.org/docs/2.2/modules/standard/Allocators.html) +* added the ability to apply attributes to interfaces Language Feature Improvements ----------------------------- @@ -30,20 +35,37 @@ Semantic Changes / Changes to the Language Definition Deprecated / Unstable / Removed Language Features ------------------------------------------------- +* removed previously deprecated support for `single` variables +* removed `clear()`, `retain()`, `release()`, `create()` on `shared`/`owned` +* removed previously deprecated `owned`/`shared` casts +* improved the deprecation message when using `<=>` on sync variables Namespace Changes ----------------- New Standard Library Features ----------------------------- +* promoted the 'Sort' package module to be a stable standard module + (see https://chapel-lang.org/docs/2.2/modules/standard/Sort.html) +* added a new argument to request `sort()` to be stable (w.r.t. equal keys) + (see https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#Sort.sort) New Package Module Features --------------------------- +* added support for reading images to the 'Image' module + (see https://chapel-lang.org/docs/2.2/modules/packages/Image.html#Image.readImage) +* added PNG and JPEG formats to the 'Image' module + (see https://chapel-lang.org/docs/2.2/modules/packages/Image.html#Image.imageType.png + and https://chapel-lang.org/docs/2.2/modules/packages/Image.html#Image.imageType.jpg) +* added `colorToPixel()` and `pixelToColor()` routines to the 'Image' module + (see https://chapel-lang.org/docs/2.2/modules/packages/Image.html#Image.colorToPixel + and https://chapel-lang.org/docs/2.2/modules/packages/Image.html#Image.pixelToColor) Changes / Feature Improvements in Standard Libraries ---------------------------------------------------- * made 'sendPosixSignal()' throw an `IllegalArgumentError` for bad signals (see https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html) +* improved the error message for calling `sort()` on unsupported types Changes / Feature Improvements in Package Modules ------------------------------------------------- @@ -67,12 +89,22 @@ Deprecated / Unstable / Removed Library Features and https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#Sort.reverseComparator) * deprecated the `inPlaceAlgorithm` argument for the `Sort.sort()` procedure (see https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#Sort.sort) +* deprecated creating custom Sort comparators in favor of using interfaces + (see https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#comparators) +* deprecated `list.sort()` in favor of `Sort.sort(x: list)` + (see https://chapel-lang.org/docs/2.2/modules/standard/List.html#List.list.sort) +* removed the deprecated 'VectorizingIterator' module Tool Improvements ----------------- +* added an `--only` flag to `printchplenv` to focus on a specific variable + (e.g., `$CHPL_HOME/util/printchplenv --only CHPL_TARGET_COMPILER`) +* added the ability to document interfaces with `chpldoc` GPU Computing ------------- +* added support for ROCm 6 + (see https://chapel-lang.org/docs/2.2/technotes/gpu.html#requirements) * added a new `@gpu.itersPerThread` attribute to control blocking iterations (see https://chapel-lang.org/docs/2.2/technotes/gpu.html#gpu-related-attributes) @@ -90,6 +122,10 @@ Documentation Improvements Documentation Improvements for Tools ------------------------------------ +* added an 'Editor Support' page + (see https://chapel-lang.org/docs/2.2/usingchapel/editor-support.html) +* improved the debugging best practices documentation for macOS + (see https://chapel-lang.org/docs/2.2/usingchapel/debugging.html#best-known-configuration) Language Specification Improvements ----------------------------------- @@ -110,6 +146,9 @@ Documentation Improvements for Libraries and https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html#Subprocess.subprocess.sendPosixSignal) * noted errors from `spawn`/`spawnshell` can be delayed until later calls (see https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html#Subprocess.spawn) +* clarified the compilation commands for 'LinearAlgebra' and 'LAPACK' modules + (see https://chapel-lang.org/docs/2.2/modules/packages/LAPACK.html#compiling-with-lapack + and https://chapel-lang.org/docs/2.2/modules/packages/LinearAlgebra.html#compiling-with-linear-algebra) * made numerous other docs fixes and improvements: wordings, typos, links, etc. Documentation Improvements to the 'man' Pages @@ -136,9 +175,23 @@ Syntax Highlighting Configuration / Build Changes ----------------------------- +* added `CHPL_[TARGET|HOST]_JEMALLOC` to specify 'jemalloc' usage and sources + (see https://chapel-lang.org/docs/2.2/usingchapel/chplenv.html#chpl-target-jemalloc + and https://chapel-lang.org/docs/2.2/usingchapel/chplenv.html#chpl-host-jemalloc) +* added `CHPL_COMM_OFI_OOB` to specify out-of-band launch mechanism for `ofi` + (see https://chapel-lang.org/docs/2.2/platforms/libfabric.html#building-chapel-with-the-ofi-communication-layer) +* added a warning when using `CHPL_ATOMICS=intrinsics` + (see https://chapel-lang.org/docs/2.2/usingchapel/chplenv.html#chpl-atomics) +* improved errors for `CHPL_TARGET_COMPILER`/`CHPL_TARGET_CC` mismatches Portability / Platform-specific Improvements -------------------------------------------- +* added more Linux package installations that support multiple locales + (see https://chapel-lang.org/install-pkg.html) +* changed the Fedora 40 package dependencies to use LLVM 18 +* made the default for `CHPL_ATOMICS` always be `cstdlib` for bundled LLVM +* disallowed the use of `CHPL_ATOMICS=locks` on MacOS +* added the ability to infer the path for `nvcc` from `CHPL_CUDA_PATH` Compiler Improvements --------------------- @@ -154,8 +207,17 @@ Generated Executable Flags Error Messages / Semantic Checks -------------------------------- * added an error when incorrectly modifying `const [in]` or default varargs +* added an error when modifying `const` `sync` variables * improved error messages when `const` `c_array`s are passed to `c_ptr` formals +* improved task intent errors for tuples +* improved the error message for incorrect placement of intent keywords + (e.g., `proc in A.foo() { }`) * added an error for attempted uses of `sync nothing`, which is not supported +* improved the error message for casting abstract enums to numeric types +* improved the error message for incorrectly formatted `with` clauses + (i.e. `begin with ref A { }`) +* improved errors for generic anonymous functions + (e.g., `proc(x: []) { }`) * improved error message when accidentally creating special method iterators * improved error when using same location for `chpldoc` output and Sphinx files @@ -169,14 +231,22 @@ Bug Fixes --------- * fixed a bug in `scan` expressions over non-`int(64)` indices * fixed alignment for records whose fields are a mix of `extern` types and non- +* fixed support for interfaces nested within subroutines +* fixed erroneous `--specialize` warnings when using multi-locale OS packages * removed a redundant library linkage specifier when using `--library-makefile` * fixed a bug with default values in Python interoperability +* fixed an incorrect deprecation when creating a distributed array of atomics Bug Fixes for Build Issues -------------------------- +* fixed `printchplenv` and `printchplbuilds.py` output for prefix installations +* ensured that `pycache` is fully deleted with `make clobber` Bug Fixes for GPU Computing --------------------------- +* fixed support for the `--library` flag when compiling for GPUs +* fixed code generation for ROCm 5.4.3, which was seg faulting +* fixed a host-to-device copy in which an incorrect function was being called Bug Fixes for Libraries ----------------------- @@ -185,15 +255,22 @@ Bug Fixes for Libraries Bug Fixes for Tools ------------------- +* fixed 'goto definition' for inheritance and enums in `chpl-language-server` +* fixed how locations are reported for enum elements +* silenced an erroneous `IncorrectIndentation` warning from `chplcheck` +* fixed the `chapel-py` build to use the same compiler as the frontend library Bug Fixes for the Runtime ------------------------- Third-Party Software Changes ---------------------------- +* updated the bundled version of QThreads to 1.20 +* applied a patch to address a performance regression in Qthreads 1.20 Developer-oriented changes: Process ----------------------------------- +* added a CI check for badly formatted performance tests Developer-oriented changes: Documentation ----------------------------------------- @@ -216,9 +293,12 @@ Developer-oriented changes: Makefile / Build-time changes Developer-oriented changes: Compiler Flags ------------------------------------------ * extended `--print-commands` to include commands run with `--library-python` +* added `--llvm-print-ir-file` to write LLVM IR to a file rather than `stdout` Developer-oriented changes: Compiler improvements / changes ----------------------------------------------------------- +* added a missing check for `--break-on-codegen-id` on `CForLoop` +* refactored the `always_inline` code for GETs and PUTs Developer-oriented changes: 'dyno' Compiler improvements / changes ------------------------------------------------------------------ @@ -234,6 +314,7 @@ Developer-oriented changes: GPU support Developer-oriented changes: Runtime improvements ------------------------------------------------ +* added a missing assertion for a non-null pointer Developer-oriented changes: Platform-specific bug fixes ------------------------------------------------------- From e19a74e5cf6648ff1ea3124664a67f6ea4cccb33 Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Mon, 16 Sep 2024 15:17:41 -0700 Subject: [PATCH 07/29] Brandon's CHANGES for 2.2 --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index a1a73391d858..6a9e427632d4 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -69,6 +69,12 @@ Changes / Feature Improvements in Standard Libraries Changes / Feature Improvements in Package Modules ------------------------------------------------- +* added support for configurable compressors to the 'Zarr' module + (e.g., see https://chapel-lang.org/docs/2.2/modules/packages/Zarr.html#Zarr.writeZarrArray) +* extended the 'Zarr' module to support single-locale IO + (e.g., see https://chapel-lang.org/docs/2.2/modules/packages/Zarr.html#Zarr.readZarrArrayLocal) +* added the ability to read a 'Zarr' array using arbitrary target locales + (see https://chapel-lang.org/docs/2.2/modules/packages/Zarr.html#Zar) Standard Layouts and Distributions ---------------------------------- @@ -252,6 +258,7 @@ Bug Fixes for Libraries ----------------------- * fixed 'RangeChunk's `chunks*()` iterators for non-`int(64)` indices * fixed a bug where `heap.createHeap()` only accepted the default comparator +* closed a memory leak when reading with the 'Zarr' package module Bug Fixes for Tools ------------------- @@ -308,6 +315,7 @@ Developer-oriented changes: 'dyno' Compiler improvements / changes - improved support for initializers on classes that inherit - improved error messages for out-of-order field initialization - improved support for forwarding unmanaged class methods + - added support for resolving generic routines when passed tuple arguments Developer-oriented changes: GPU support --------------------------------------- From a10d1183d9036c18612b73a6c95b32f895d0cddb Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Mon, 16 Sep 2024 15:31:59 -0700 Subject: [PATCH 08/29] Anna's CHANGES for 2.2 --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 6a9e427632d4..170d07f0ff95 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,8 @@ Highlights (see subsequent sections for further details) Updates to Chapel's Release Formats ----------------------------------- +* started publishing a `nightly` Docker image tag + (see https://hub.docker.com/r/chapel/chapel) Prerequisite Updates -------------------- @@ -247,6 +249,7 @@ Bug Fixes for Build Issues -------------------------- * fixed `printchplenv` and `printchplbuilds.py` output for prefix installations * ensured that `pycache` is fully deleted with `make clobber` +* fixed an issue building `CHPL_COMM=gasnet` Docker images Bug Fixes for GPU Computing --------------------------- @@ -304,18 +307,27 @@ Developer-oriented changes: Compiler Flags Developer-oriented changes: Compiler improvements / changes ----------------------------------------------------------- +* removed the broken features intended to support `gdb` cleanup of `tmp` dirs * added a missing check for `--break-on-codegen-id` on `CForLoop` * refactored the `always_inline` code for GETs and PUTs Developer-oriented changes: 'dyno' Compiler improvements / changes ------------------------------------------------------------------ * made numerous improvements to the 'dyno' resolver for types and calls: + - added support for resolving tuple accessor calls - added support for casting `param` `enum` values to strings - added support for type construction of generic classes + - fixed a bug resolving constrained, dependently-typed type constructor args - improved support for initializers on classes that inherit + - fixed an error resolving initializers w/ generic fields following concrete - improved error messages for out-of-order field initialization + - fixed a bug passing instantiated generics to generic record formal args - improved support for forwarding unmanaged class methods + - fixed resolution of methods on types that are only generic by inheritance - added support for resolving generic routines when passed tuple arguments + - fixed an incorrect ambiguity between fields and unrelated secondary methods + - fixed an error for ambiguities btwn locals and paren-less procs in a method + - fixed a bug causing `testInteractive --std` to not resolve std module types Developer-oriented changes: GPU support --------------------------------------- @@ -330,6 +342,7 @@ Developer-oriented changes: Platform-specific bug fixes Developer-oriented changes: Testing System ------------------------------------------ * removed the default application of the `-o` flag in the `start_test` system +* removed unneeded `CC` env var logic in `smokeTest` that broke on some systems Developer-oriented changes: Tool Improvements --------------------------------------------- From 27a33f2461ae0e931f0677ebddc03855de07ea7c Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Mon, 16 Sep 2024 16:04:25 -0700 Subject: [PATCH 09/29] Jeremiah's CHANGES for 2.2 --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 170d07f0ff95..3c357d32617a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -54,6 +54,8 @@ New Standard Library Features New Package Module Features --------------------------- +* added new 'PrecisionSerializer' package to control numeric precision/padding + (see https://chapel-lang.org/docs/2.2/modules/packages/PrecisionSerializer.html) * added support for reading images to the 'Image' module (see https://chapel-lang.org/docs/2.2/modules/packages/Image.html#Image.readImage) * added PNG and JPEG formats to the 'Image' module @@ -65,12 +67,18 @@ New Package Module Features Changes / Feature Improvements in Standard Libraries ---------------------------------------------------- +* added parallel/distributed support to the `fileReader.lines()` iterator + (see https://chapel-lang.org/docs/2.2/modules/standard/IO.html#IO.fileReader.lines) +* added multi-dim support to `randomStream.[shuffle|choose|sample|permute]()` + (see https://chapel-lang.org/docs/2.2/modules/standard/Random.html#Random.randomStream.shuffle) * made 'sendPosixSignal()' throw an `IllegalArgumentError` for bad signals (see https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html) * improved the error message for calling `sort()` on unsupported types Changes / Feature Improvements in Package Modules ------------------------------------------------- +* added multi-locale support to 'ParallelIO's iterators + (see https://chapel-lang.org/docs/2.2/modules/packages/ParallelIO.html#ParallelIO.readLines) * added support for configurable compressors to the 'Zarr' module (e.g., see https://chapel-lang.org/docs/2.2/modules/packages/Zarr.html#Zarr.writeZarrArray) * extended the 'Zarr' module to support single-locale IO @@ -92,6 +100,9 @@ Name Changes in Libraries Deprecated / Unstable / Removed Library Features ------------------------------------------------ +* added a `false` default to the `locking` property of `file.[reader|writer]` + (see https://chapel-lang.org/docs/2.2/modules/standard/IO.html#IO.file.reader + and https://chapel-lang.org/docs/2.2/modules/standard/IO.html#IO.file.writer) * deprecated the standalone comparator instances in the 'Sort' module (see https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#Sort.defaultComparator and https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#Sort.reverseComparator) @@ -103,6 +114,12 @@ Deprecated / Unstable / Removed Library Features (see https://chapel-lang.org/docs/2.2/modules/standard/List.html#List.list.sort) * removed the deprecated 'VectorizingIterator' module +* removed deprecated `locking=true` overloads of `open[Reader|Writer]()` +* removed deprecated `IllegalArgumentError` overloads in the 'Errors' module +* removed deprecated `RandomStream` class +* removed deprecated `randomStream` methods +* removed deprecated `RandomSupport` and `PCGRandom` submodules + Tool Improvements ----------------- * added an `--only` flag to `printchplenv` to focus on a specific variable @@ -120,6 +137,7 @@ Performance Optimizations / Improvements ---------------------------------------- * enabled optimization that auto-localizes domains by default when possible (use `-slocalizeConstDomains=false` to disable) +* reduced communication overheads in `stencilArr.updateFluff()` method Documentation Improvements -------------------------- @@ -137,6 +155,8 @@ Documentation Improvements for Tools Language Specification Improvements ----------------------------------- +* added examples of distribution factory methods + (see https://chapel-lang.org/docs/2.2/language/spec/domain-maps.html#distributions-for-domain-types) Platform-Specific Documentation Improvements -------------------------------------------- From 98ceebaadd528961d3ac95b1c5f4d4849efe0eee Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Mon, 16 Sep 2024 16:08:14 -0700 Subject: [PATCH 10/29] Shreyas's 2.2 CHANGES --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 3c357d32617a..f44a014b4a7e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -125,6 +125,8 @@ Tool Improvements * added an `--only` flag to `printchplenv` to focus on a specific variable (e.g., `$CHPL_HOME/util/printchplenv --only CHPL_TARGET_COMPILER`) * added the ability to document interfaces with `chpldoc` +* updated the script for anonymizing unstable warnings + (https://chapel-lang.org/docs/2.2/tools/unstableWarningAnonymizer/unstableWarningAnonymizer.html) GPU Computing ------------- From 772abf2816696ec473a4f5ca686b6b2a201e7989 Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Mon, 16 Sep 2024 16:20:55 -0700 Subject: [PATCH 11/29] John's CHANGES for 1.22 (and one fix to Jeremiah's that I missed til now) --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index f44a014b4a7e..d623180c29d1 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -134,12 +134,14 @@ GPU Computing (see https://chapel-lang.org/docs/2.2/technotes/gpu.html#requirements) * added a new `@gpu.itersPerThread` attribute to control blocking iterations (see https://chapel-lang.org/docs/2.2/technotes/gpu.html#gpu-related-attributes) +* extended co-locale support to divide GPUs between co-locales Performance Optimizations / Improvements ---------------------------------------- * enabled optimization that auto-localizes domains by default when possible (use `-slocalizeConstDomains=false` to disable) -* reduced communication overheads in `stencilArr.updateFluff()` method +* reduced communication overheads in 'StencilDist's `.updateFluff()` method +* reduced overheads due to fencing when using `CHPL_COMM=ofi` Documentation Improvements -------------------------- @@ -162,6 +164,10 @@ Language Specification Improvements Platform-Specific Documentation Improvements -------------------------------------------- +* fixed a bug in injection with `CHPL_COMM=ofi` +* fixed a bug in progressing non-blocking operations with `CHPL_COMM=ofi` +* fixed a bug using unsupported injection with `CHPL_COMM=ofi` and `efa` +* fixed a bug striping the fixed heap with `CHPL_COMM=gasnet` and non-`ibv` Technical Note Improvements --------------------------- @@ -294,6 +300,10 @@ Bug Fixes for Tools Bug Fixes for the Runtime ------------------------- +* fixed a bug with `CHPL_COMM=ofi` that led to hangs at certain scales +* fixed a bug in progressing non-blocking operations with `CHPL_COMM=ofi` +* worked around a bug with `efa` for `ofi` related to lack of injection support +* fixed a bug striping the fixed heap for `CHPL_COMM=gasnet` over non-`ibv` Third-Party Software Changes ---------------------------- @@ -365,6 +375,7 @@ Developer-oriented changes: Testing System ------------------------------------------ * removed the default application of the `-o` flag in the `start_test` system * removed unneeded `CC` env var logic in `smokeTest` that broke on some systems +* added support for co-locale performance testing for `CHPL_COMM=gasnet` Developer-oriented changes: Tool Improvements --------------------------------------------- From ec0fb655aa0e3589aabcdeffa1266914de41efef Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Mon, 16 Sep 2024 16:23:30 -0700 Subject: [PATCH 12/29] Andy's CHANGES for 2.2 --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index d623180c29d1..87ad19e29d5d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -134,7 +134,9 @@ GPU Computing (see https://chapel-lang.org/docs/2.2/technotes/gpu.html#requirements) * added a new `@gpu.itersPerThread` attribute to control blocking iterations (see https://chapel-lang.org/docs/2.2/technotes/gpu.html#gpu-related-attributes) +* added support for `ref` intents on scalars in GPU-eligible loops * extended co-locale support to divide GPUs between co-locales +* extended `make check` to test a GPU-oriented example when GPUs are enabled Performance Optimizations / Improvements ---------------------------------------- @@ -272,6 +274,7 @@ Bug Fixes * removed a redundant library linkage specifier when using `--library-makefile` * fixed a bug with default values in Python interoperability * fixed an incorrect deprecation when creating a distributed array of atomics +* fixed a crash when assigning a module-scope `var` to a `ref` in an iterator Bug Fixes for Build Issues -------------------------- From 43a24fb5840041de0ca6fb0eaab10522d141d61b Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Mon, 16 Sep 2024 16:31:11 -0700 Subject: [PATCH 13/29] Engin's CHANGES for 2.2 --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 87ad19e29d5d..514328922f8d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -71,6 +71,7 @@ Changes / Feature Improvements in Standard Libraries (see https://chapel-lang.org/docs/2.2/modules/standard/IO.html#IO.fileReader.lines) * added multi-dim support to `randomStream.[shuffle|choose|sample|permute]()` (see https://chapel-lang.org/docs/2.2/modules/standard/Random.html#Random.randomStream.shuffle) +* added support for passing distributed arrays to `c_addrOf()` * made 'sendPosixSignal()' throw an `IllegalArgumentError` for bad signals (see https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html) * improved the error message for calling `sort()` on unsupported types @@ -132,16 +133,22 @@ GPU Computing ------------- * added support for ROCm 6 (see https://chapel-lang.org/docs/2.2/technotes/gpu.html#requirements) +* improved performance for some kernels on multi-GPU locales * added a new `@gpu.itersPerThread` attribute to control blocking iterations (see https://chapel-lang.org/docs/2.2/technotes/gpu.html#gpu-related-attributes) * added support for `ref` intents on scalars in GPU-eligible loops * extended co-locale support to divide GPUs between co-locales * extended `make check` to test a GPU-oriented example when GPUs are enabled +* improved the error message when a vendor's SDK can't be found Performance Optimizations / Improvements ---------------------------------------- * enabled optimization that auto-localizes domains by default when possible (use `-slocalizeConstDomains=false` to disable) +* significantly improved performance when assigning between array slices + (e.g., `Arr1[x..y] = Arr2[a..b]` now performs up to 30x faster) +* extended the automatic local-access optimization to handle basic stencils + (e.g., `forall i in InnerA {... A[i-1] ...}` is optimized for 'StencilDist') * reduced communication overheads in 'StencilDist's `.updateFluff()` method * reduced overheads due to fencing when using `CHPL_COMM=ofi` @@ -269,6 +276,9 @@ Bug Fixes --------- * fixed a bug in `scan` expressions over non-`int(64)` indices * fixed alignment for records whose fields are a mix of `extern` types and non- +* fixed bugs in auto-[local-access|aggregation] optimizzations for local arrays +* fixed an automatic-local-access bug for certain poorly aligned zippered loops +* fixed a bug in which certain rank-change slices failed to compile * fixed support for interfaces nested within subroutines * fixed erroneous `--specialize` warnings when using multi-locale OS packages * removed a redundant library linkage specifier when using `--library-makefile` @@ -284,12 +294,18 @@ Bug Fixes for Build Issues Bug Fixes for GPU Computing --------------------------- +* fixed a bug where `on someGpuVar` did not work correctly +* fixed a bug where some `for` loops could cause inadvertent kernel launches * fixed support for the `--library` flag when compiling for GPUs * fixed code generation for ROCm 5.4.3, which was seg faulting +* fixed a bug which prevented Chapel to be built with Clang 18 and CUDA 11 +* fixed a bug where GPU allocations on CPU data structures caused segfaults +* fixed a bug where some kernel launch diagnostics line numbers were incorrect * fixed a host-to-device copy in which an incorrect function was being called Bug Fixes for Libraries ----------------------- +* fixed a bug preventing `this` from being passed to `Reflection.getFieldRef()` * fixed 'RangeChunk's `chunks*()` iterators for non-`int(64)` indices * fixed a bug where `heap.createHeap()` only accepted the default comparator * closed a memory leak when reading with the 'Zarr' package module From 39464b6f1eb37ab4366805e1518ee2d0d3defd68 Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Mon, 16 Sep 2024 16:54:13 -0700 Subject: [PATCH 14/29] Daniel's CHANGES for 2.2 --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 514328922f8d..34b19cea458b 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -30,7 +30,13 @@ New Language Features Language Feature Improvements ----------------------------- +* extended remote variable declarations to support multi-decls and coercions + (see https://chapel-lang.org/docs/technotes/remote.html) +* fixed remote variable declaration initializers to evaluate remotely +* added support for declaring `enum`s within classes * added support for additional integer `<` comparisons generating a `param` +* added support for using module-qualified expressions for inheritance decls + (e.g., `class Child: MyMod.Parent { ... }`) Semantic Changes / Changes to the Language Definition ----------------------------------------------------- @@ -40,6 +46,7 @@ Deprecated / Unstable / Removed Language Features * removed previously deprecated support for `single` variables * removed `clear()`, `retain()`, `release()`, `create()` on `shared`/`owned` * removed previously deprecated `owned`/`shared` casts +* removed previously deprecated `assertOnGpu()` routine * improved the deprecation message when using `<=>` on sync variables Namespace Changes @@ -51,6 +58,8 @@ New Standard Library Features (see https://chapel-lang.org/docs/2.2/modules/standard/Sort.html) * added a new argument to request `sort()` to be stable (w.r.t. equal keys) (see https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#Sort.sort) +* added helper routines to convert values to and from JSON strings + (see https://chapel-lang.org/docs/2.2/modules/standard/JSON.html#JSON.fromJson) New Package Module Features --------------------------- @@ -125,6 +134,12 @@ Tool Improvements ----------------- * added an `--only` flag to `printchplenv` to focus on a specific variable (e.g., `$CHPL_HOME/util/printchplenv --only CHPL_TARGET_COMPILER`) +* made several changes and improvements to the `chplcheck` linter + (see https://chapel-lang.org/docs/2.2/tools/chplcheck/chplcheck.html) + - added a new rule for `complex` literals whose `imag` precedes the `real` + - allowed ignoring children incorrectly indented relative to their parent + - added support for a `@fixit` dectorator to the Python API + - renamed the `RedundantParentheses` rule to `ControlFlowParentheses` * added the ability to document interfaces with `chpldoc` * updated the script for anonymizing unstable warnings (https://chapel-lang.org/docs/2.2/tools/unstableWarningAnonymizer/unstableWarningAnonymizer.html) @@ -134,8 +149,12 @@ GPU Computing * added support for ROCm 6 (see https://chapel-lang.org/docs/2.2/technotes/gpu.html#requirements) * improved performance for some kernels on multi-GPU locales +* added a new `@gpu.assertElligible` attribute for compile-time GPU checks + (see https://chapel-lang.org/docs/main/modules/standard/GPU.html#GPU.@gpu.assertEligible) * added a new `@gpu.itersPerThread` attribute to control blocking iterations (see https://chapel-lang.org/docs/2.2/technotes/gpu.html#gpu-related-attributes) +* added support for GPU attributes to compile without the GPU locale model +* added a warning when `@assertOnGpu` is used without the GPU locale model * added support for `ref` intents on scalars in GPU-eligible loops * extended co-locale support to divide GPUs between co-locales * extended `make check` to test a GPU-oriented example when GPUs are enabled @@ -158,6 +177,8 @@ Documentation Improvements (see https://chapel-lang.org/docs/2.2/chpl-modindex.html) * linked the module index from the documentation landing page (see https://chapel-lang.org/docs/2.2/index.html#indexes) +* added documentation of the GPU attributes to the 'GPU' module docs + (see https://chapel-lang.org/docs/main/modules/standard/GPU.html) Documentation Improvements for Tools ------------------------------------ @@ -214,6 +235,9 @@ Generated Code Improvements Memory Improvements ------------------- +* fixed memory leak when using loop expressions with empty bodies +* fixed a memory leak when ignoring values in `try!` expressions +* fixed a memory leak when using per-locale "static" variables Syntax Highlighting ------------------- @@ -255,6 +279,7 @@ Error Messages / Semantic Checks * added an error when modifying `const` `sync` variables * improved error messages when `const` `c_array`s are passed to `c_ptr` formals * improved task intent errors for tuples +* added a user error when constructing incomplete `extern` types * improved the error message for incorrect placement of intent keywords (e.g., `proc in A.foo() { }`) * added an error for attempted uses of `sync nothing`, which is not supported @@ -263,8 +288,12 @@ Error Messages / Semantic Checks (i.e. `begin with ref A { }`) * improved errors for generic anonymous functions (e.g., `proc(x: []) { }`) +* improved the error message when `sparse subdomain` is incorrectly used * improved error message when accidentally creating special method iterators * improved error when using same location for `chpldoc` output and Sphinx files +* added a user error when `getFieldRef()` is used on a `type` field +* updated memory management checks for non-classes to fire in more cases +* added a warning for ignoring the result of a function capture Launchers --------- @@ -285,6 +314,14 @@ Bug Fixes * fixed a bug with default values in Python interoperability * fixed an incorrect deprecation when creating a distributed array of atomics * fixed a crash when assigning a module-scope `var` to a `ref` in an iterator +* fixed a bug where types of promoted expressions could be incorrectly inferred +* fixed an incorrect error about missing constructor arguments in some cases +* fixed "using value as type" error in certain conditional type expressions +* allowed `ref`-intent procedures to not return anything if they halt +* fixed an internal error when `out` is used with a default value and no type +* fixed an internal error when returning a `ref` to a value of different type +* fixed an internal error when using first-class fns as arguments to classes +* fixed compilation errors due to runtime types under `--baseline` Bug Fixes for Build Issues -------------------------- @@ -302,6 +339,7 @@ Bug Fixes for GPU Computing * fixed a bug where GPU allocations on CPU data structures caused segfaults * fixed a bug where some kernel launch diagnostics line numbers were incorrect * fixed a host-to-device copy in which an incorrect function was being called +* fixed various errors when bulk transferring GPU arrays Bug Fixes for Libraries ----------------------- @@ -366,7 +404,9 @@ Developer-oriented changes: 'dyno' Compiler improvements / changes ------------------------------------------------------------------ * made numerous improvements to the 'dyno' resolver for types and calls: - added support for resolving tuple accessor calls + - added support for iteration over `enum` types - added support for casting `param` `enum` values to strings + - adjusted resolver to syntactically determine whether fields are generic - added support for type construction of generic classes - fixed a bug resolving constrained, dependently-typed type constructor args - improved support for initializers on classes that inherit @@ -376,9 +416,11 @@ Developer-oriented changes: 'dyno' Compiler improvements / changes - improved support for forwarding unmanaged class methods - fixed resolution of methods on types that are only generic by inheritance - added support for resolving generic routines when passed tuple arguments + - implemented paren-less `type`/`param` procs on nilable types - fixed an incorrect ambiguity between fields and unrelated secondary methods - fixed an error for ambiguities btwn locals and paren-less procs in a method - fixed a bug causing `testInteractive --std` to not resolve std module types + - improved performance of `runAndTrackErrors` API function Developer-oriented changes: GPU support --------------------------------------- From 2635e5ce3cc5f3b6fc6ab4a58335be956c277fcb Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Mon, 16 Sep 2024 17:08:39 -0700 Subject: [PATCH 15/29] Michael's CHANGES for 2.2 --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 34b19cea458b..dabc9054fbcf 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -40,9 +40,17 @@ Language Feature Improvements Semantic Changes / Changes to the Language Definition ----------------------------------------------------- +* `use` and `import` are always case sensitive when finding module files + (see https://chapel-lang.org/docs/language/spec/modules.html#finding-toplevel-module-files) +* `require` statements no longer impact the determination of the main module + (see https://chapel-lang.org/docs/main/language/spec/statements.html#the-require-statement + and https://chapel-lang.org/docs/language/spec/modules.html#the-main-module) +* modules brought in with `require` are no initialized if not used +* standard library modules are now preferred in the event of a name conflict Deprecated / Unstable / Removed Language Features ------------------------------------------------- +* user modules sharing names with a standard library module are now unstable * removed previously deprecated support for `single` variables * removed `clear()`, `retain()`, `release()`, `create()` on `shared`/`owned` * removed previously deprecated `owned`/`shared` casts @@ -78,6 +86,8 @@ Changes / Feature Improvements in Standard Libraries ---------------------------------------------------- * added parallel/distributed support to the `fileReader.lines()` iterator (see https://chapel-lang.org/docs/2.2/modules/standard/IO.html#IO.fileReader.lines) +* Added an unstable `sort()` overload accepting a region to sort + (see https://chapel-lang.org/docs/main/modules/standard/Sort.html#Sort.sort) * added multi-dim support to `randomStream.[shuffle|choose|sample|permute]()` (see https://chapel-lang.org/docs/2.2/modules/standard/Random.html#Random.randomStream.shuffle) * added support for passing distributed arrays to `c_addrOf()` @@ -166,6 +176,7 @@ Performance Optimizations / Improvements (use `-slocalizeConstDomains=false` to disable) * significantly improved performance when assigning between array slices (e.g., `Arr1[x..y] = Arr2[a..b]` now performs up to 30x faster) +* removed an unnecessary allocation when moving an array value to a typed var * extended the automatic local-access optimization to handle basic stencils (e.g., `forall i in InnerA {... A[i-1] ...}` is optimized for 'StencilDist') * reduced communication overheads in 'StencilDist's `.updateFluff()` method @@ -179,6 +190,7 @@ Documentation Improvements (see https://chapel-lang.org/docs/2.2/index.html#indexes) * added documentation of the GPU attributes to the 'GPU' module docs (see https://chapel-lang.org/docs/main/modules/standard/GPU.html) +* searching for `init=` now finds the relevant documentation Documentation Improvements for Tools ------------------------------------ @@ -189,6 +201,10 @@ Documentation Improvements for Tools Language Specification Improvements ----------------------------------- +* described the process of finding module files through `use` and `import` + (see https://chapel-lang.org/docs/language/spec/modules.html#finding-toplevel-module-files) +* Added a section describing the implicit `this.` in methods + (see https://chapel-lang.org/docs/language/spec/methods.html#implicit-this-in-methods) * added examples of distribution factory methods (see https://chapel-lang.org/docs/2.2/language/spec/domain-maps.html#distributions-for-domain-types) @@ -235,6 +251,7 @@ Generated Code Improvements Memory Improvements ------------------- +* removed an unnecessary allocation when moving an array value to a typed var * fixed memory leak when using loop expressions with empty bodies * fixed a memory leak when ignoring values in `try!` expressions * fixed a memory leak when using per-locale "static" variables @@ -247,6 +264,8 @@ Configuration / Build Changes * added `CHPL_[TARGET|HOST]_JEMALLOC` to specify 'jemalloc' usage and sources (see https://chapel-lang.org/docs/2.2/usingchapel/chplenv.html#chpl-target-jemalloc and https://chapel-lang.org/docs/2.2/usingchapel/chplenv.html#chpl-host-jemalloc) +* added `CHPL_LLVM_GCC_INSTALL_DIR` to work with a specific GCC installation + (see https://chapel-lang.org/docs/usingchapel/chplenv.html#chpl-llvm-gcc-install-dir) * added `CHPL_COMM_OFI_OOB` to specify out-of-band launch mechanism for `ofi` (see https://chapel-lang.org/docs/2.2/platforms/libfabric.html#building-chapel-with-the-ofi-communication-layer) * added a warning when using `CHPL_ATOMICS=intrinsics` @@ -261,9 +280,11 @@ Portability / Platform-specific Improvements * made the default for `CHPL_ATOMICS` always be `cstdlib` for bundled LLVM * disallowed the use of `CHPL_ATOMICS=locks` on MacOS * added the ability to infer the path for `nvcc` from `CHPL_CUDA_PATH` +* filtered out `-L/usr/lib` when linking to avoid problems on some platforms Compiler Improvements --------------------- +* made the compiler remove dead modules more aggressively early in compilation Compiler Flags -------------- @@ -288,12 +309,14 @@ Error Messages / Semantic Checks (i.e. `begin with ref A { }`) * improved errors for generic anonymous functions (e.g., `proc(x: []) { }`) +* improved the error when creating an associative domain of `owned` classes * improved the error message when `sparse subdomain` is incorrectly used * improved error message when accidentally creating special method iterators * improved error when using same location for `chpldoc` output and Sphinx files * added a user error when `getFieldRef()` is used on a `type` field * updated memory management checks for non-classes to fire in more cases * added a warning for ignoring the result of a function capture +* improved the surprising shadowing warning to consider enclosing module names Launchers --------- @@ -322,6 +345,8 @@ Bug Fixes * fixed an internal error when returning a `ref` to a value of different type * fixed an internal error when using first-class fns as arguments to classes * fixed compilation errors due to runtime types under `--baseline` +* fixed a problem importing from a parent module from an `include`d submodule +* fixed problems resolving calls to parenless methods from within a method Bug Fixes for Build Issues -------------------------- @@ -402,6 +427,7 @@ Developer-oriented changes: Compiler improvements / changes Developer-oriented changes: 'dyno' Compiler improvements / changes ------------------------------------------------------------------ +* the frontend library now drives the process of deciding which files to parse * made numerous improvements to the 'dyno' resolver for types and calls: - added support for resolving tuple accessor calls - added support for iteration over `enum` types @@ -421,6 +447,7 @@ Developer-oriented changes: 'dyno' Compiler improvements / changes - fixed an error for ambiguities btwn locals and paren-less procs in a method - fixed a bug causing `testInteractive --std` to not resolve std module types - improved performance of `runAndTrackErrors` API function +* improved the performance of `--dyno-scope-bundled` Developer-oriented changes: GPU support --------------------------------------- From a1106c5911eb70e225b8f158d2d57b17f3fc51c1 Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Mon, 16 Sep 2024 17:10:42 -0700 Subject: [PATCH 16/29] Ahmad's CHANGES for 2.2 --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index dabc9054fbcf..3c24450749dd 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -191,6 +191,7 @@ Documentation Improvements * added documentation of the GPU attributes to the 'GPU' module docs (see https://chapel-lang.org/docs/main/modules/standard/GPU.html) * searching for `init=` now finds the relevant documentation +* clarified that the terminating null byte is optional on string/bytes buffers Documentation Improvements for Tools ------------------------------------ @@ -210,6 +211,8 @@ Language Specification Improvements Platform-Specific Documentation Improvements -------------------------------------------- +* expanded docs for using Chapel with Windows Subsystem for Linux (WSL) + (see https://chapel-lang.org/docs/2.2/platforms/windows.html#using-chapel-on-wsl) * fixed a bug in injection with `CHPL_COMM=ofi` * fixed a bug in progressing non-blocking operations with `CHPL_COMM=ofi` * fixed a bug using unsupported injection with `CHPL_COMM=ofi` and `efa` From 1ad065fa56ae748a727a6e651d3d5092624fb047 Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Mon, 16 Sep 2024 17:12:04 -0700 Subject: [PATCH 17/29] Move some things around --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 3c24450749dd..ba0d5e92330e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -213,10 +213,6 @@ Platform-Specific Documentation Improvements -------------------------------------------- * expanded docs for using Chapel with Windows Subsystem for Linux (WSL) (see https://chapel-lang.org/docs/2.2/platforms/windows.html#using-chapel-on-wsl) -* fixed a bug in injection with `CHPL_COMM=ofi` -* fixed a bug in progressing non-blocking operations with `CHPL_COMM=ofi` -* fixed a bug using unsupported injection with `CHPL_COMM=ofi` and `efa` -* fixed a bug striping the fixed heap with `CHPL_COMM=gasnet` and non-`ibv` Technical Note Improvements --------------------------- @@ -324,8 +320,12 @@ Error Messages / Semantic Checks Launchers --------- -Runtime Library Changes ------------------------ +Runtime Library Improvements +---------------------------- +* fixed a bug in injection with `CHPL_COMM=ofi` +* fixed a bug in progressing non-blocking operations with `CHPL_COMM=ofi` +* fixed a bug using unsupported injection with `CHPL_COMM=ofi` and `efa` +* fixed a bug striping the fixed heap with `CHPL_COMM=gasnet` and non-`ibv` Bug Fixes --------- From 29b12bf00029d294a3556fbe6daaf9b9cbc0f426 Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Mon, 16 Sep 2024 17:17:54 -0700 Subject: [PATCH 18/29] DavidL CHANGES for 2.2 --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index ba0d5e92330e..dd82dd0fbe6c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -441,6 +441,7 @@ Developer-oriented changes: 'dyno' Compiler improvements / changes - improved support for initializers on classes that inherit - fixed an error resolving initializers w/ generic fields following concrete - improved error messages for out-of-order field initialization + - added initial support for resolving `zip` expressions and parallel `iter`s - fixed a bug passing instantiated generics to generic record formal args - improved support for forwarding unmanaged class methods - fixed resolution of methods on types that are only generic by inheritance From 46b36254e921bc357d01ddccd88001840ad1d078 Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Mon, 16 Sep 2024 18:20:41 -0700 Subject: [PATCH 19/29] Start working on sanity checks --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index dd82dd0fbe6c..a28e3e874fad 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,26 @@ Release Changes List ==================== +TODO: +* '(http:' -> '(see http:' +o sort items within categories +o check placement of items into categories +o check sorting of categories +o check for ' vs ` +o fulfill TODOs +o check man page for new compiler flags +o check test/release/examples +* check for docs/1.33/ links +o check forced linebreaks +o check initial '*' +* check initial 'A-Z' +* check 'see:' +o check for changes put too far down in file +o remove empty sections +o check links +o add highlights +o spellcheck + version 2.2 =========== @@ -86,7 +106,7 @@ Changes / Feature Improvements in Standard Libraries ---------------------------------------------------- * added parallel/distributed support to the `fileReader.lines()` iterator (see https://chapel-lang.org/docs/2.2/modules/standard/IO.html#IO.fileReader.lines) -* Added an unstable `sort()` overload accepting a region to sort +* added an unstable `sort()` overload accepting a region to sort (see https://chapel-lang.org/docs/main/modules/standard/Sort.html#Sort.sort) * added multi-dim support to `randomStream.[shuffle|choose|sample|permute]()` (see https://chapel-lang.org/docs/2.2/modules/standard/Random.html#Random.randomStream.shuffle) @@ -152,7 +172,7 @@ Tool Improvements - renamed the `RedundantParentheses` rule to `ControlFlowParentheses` * added the ability to document interfaces with `chpldoc` * updated the script for anonymizing unstable warnings - (https://chapel-lang.org/docs/2.2/tools/unstableWarningAnonymizer/unstableWarningAnonymizer.html) + (see https://chapel-lang.org/docs/2.2/tools/unstableWarningAnonymizer/unstableWarningAnonymizer.html) GPU Computing ------------- @@ -160,7 +180,7 @@ GPU Computing (see https://chapel-lang.org/docs/2.2/technotes/gpu.html#requirements) * improved performance for some kernels on multi-GPU locales * added a new `@gpu.assertElligible` attribute for compile-time GPU checks - (see https://chapel-lang.org/docs/main/modules/standard/GPU.html#GPU.@gpu.assertEligible) + (see https://chapel-lang.org/docs/2.2/modules/standard/GPU.html#GPU.@gpu.assertEligible) * added a new `@gpu.itersPerThread` attribute to control blocking iterations (see https://chapel-lang.org/docs/2.2/technotes/gpu.html#gpu-related-attributes) * added support for GPU attributes to compile without the GPU locale model @@ -189,7 +209,7 @@ Documentation Improvements * linked the module index from the documentation landing page (see https://chapel-lang.org/docs/2.2/index.html#indexes) * added documentation of the GPU attributes to the 'GPU' module docs - (see https://chapel-lang.org/docs/main/modules/standard/GPU.html) + (see https://chapel-lang.org/docs/2.2/modules/standard/GPU.html) * searching for `init=` now finds the relevant documentation * clarified that the terminating null byte is optional on string/bytes buffers @@ -203,9 +223,9 @@ Documentation Improvements for Tools Language Specification Improvements ----------------------------------- * described the process of finding module files through `use` and `import` - (see https://chapel-lang.org/docs/language/spec/modules.html#finding-toplevel-module-files) -* Added a section describing the implicit `this.` in methods - (see https://chapel-lang.org/docs/language/spec/methods.html#implicit-this-in-methods) + (see https://chapel-lang.org/docs/2.2/language/spec/modules.html#finding-toplevel-module-files) +* added a section describing the implicit `this.` in methods + (see https://chapel-lang.org/docs/2.2/language/spec/methods.html#implicit-this-in-methods) * added examples of distribution factory methods (see https://chapel-lang.org/docs/2.2/language/spec/domain-maps.html#distributions-for-domain-types) @@ -235,7 +255,7 @@ Documentation Improvements for Libraries Documentation Improvements to the 'man' Pages --------------------------------------------- * added cross-reference to env var docs to 'Compiler Configuration Options' - (see https://chapel-lang.org/docs/main/usingchapel/man.html#man-task-tracking) + (see https://chapel-lang.org/docs/2.2/usingchapel/man.html#man-task-tracking) Example Codes ------------- @@ -264,7 +284,7 @@ Configuration / Build Changes (see https://chapel-lang.org/docs/2.2/usingchapel/chplenv.html#chpl-target-jemalloc and https://chapel-lang.org/docs/2.2/usingchapel/chplenv.html#chpl-host-jemalloc) * added `CHPL_LLVM_GCC_INSTALL_DIR` to work with a specific GCC installation - (see https://chapel-lang.org/docs/usingchapel/chplenv.html#chpl-llvm-gcc-install-dir) + (see https://chapel-lang.org/docs/2.2/usingchapel/chplenv.html#chpl-llvm-gcc-install-dir) * added `CHPL_COMM_OFI_OOB` to specify out-of-band launch mechanism for `ofi` (see https://chapel-lang.org/docs/2.2/platforms/libfabric.html#building-chapel-with-the-ofi-communication-layer) * added a warning when using `CHPL_ATOMICS=intrinsics` @@ -6215,7 +6235,7 @@ Documentation * improved the 'Modules' chapter of the language spec for `use` and `import` (see https://chapel-lang.org/docs/1.23/language/spec/modules.html#access-of-module-contents) * updated the language specification to discuss `.type` and runtime types - (see http://chapel-lang.org/docs/1.23/language/spec/types.html#querying-the-type-of-an-expression) + (see https://chapel-lang.org/docs/1.23/language/spec/types.html#querying-the-type-of-an-expression) * updated the description of initializing `sync` variables in the language spec (see https://chapel-lang.org/docs/1.23/language/spec/task-parallelism-and-synchronization.html#synchronization-variables) * added a section on conflicts to the 'Variables' chapter of the language spec From 15904bd597f1f5880e5e97f4cf7cb37762911070 Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Wed, 18 Sep 2024 11:59:29 -0700 Subject: [PATCH 20/29] Checkpoint --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 147 ++++++++++++++++++++++++++++------------------------- 1 file changed, 79 insertions(+), 68 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index a28e3e874fad..d8bc38e25c58 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -28,9 +28,25 @@ released September 26, 2024 Highlights (see subsequent sections for further details) -------------------------------------------------------- +* we're releasing multi-locale Chapel support in several new Linux packages +* programmers can now define and use custom memory allocators with classes +* remote variable declarations are greatly improved in capabilities & behavior +* the 'Sort' module has been revamped and promoted to a standard module +* new routines support convenient conversions between JSON strings +* a new 'PrecisionSerializer' package controls numerical precision/padding +* the 'Image' module has been extended to support new file formats and routines +* we've introduced new parallel/distributed I/O iterators +* the 'Zarr' package module's capabilities have been extended and improved +* added ROCm 6 support for AMD GPUs and generally improved GPU features & perf +* significantly improved performance for several key array programming patterns +* closed a few previously unknown memory leaks +* added new environment variables for specifying jemalloc/gcc/ofi options +* made many other user-driven improvements w.r.t. bugs, errors, features, tools Updates to Chapel's Release Formats ----------------------------------- +* added several new Linux package installations supporting multiple locales + (see https://chapel-lang.org/install-pkg.html) * started publishing a `nightly` Docker image tag (see https://hub.docker.com/r/chapel/chapel) @@ -39,7 +55,7 @@ Prerequisite Updates Syntactic / Naming Changes -------------------------- -* improved the orthogonality of Chapel syntax in several cases +* improved the orthogonality of Chapel syntax in several cases (e.g., `coforall zip(a, b) { ... }` is now supported) New Language Features @@ -52,20 +68,20 @@ Language Feature Improvements ----------------------------- * extended remote variable declarations to support multi-decls and coercions (see https://chapel-lang.org/docs/technotes/remote.html) -* fixed remote variable declaration initializers to evaluate remotely +* remote variable declaration initializers are now evaluated remotely * added support for declaring `enum`s within classes -* added support for additional integer `<` comparisons generating a `param` -* added support for using module-qualified expressions for inheritance decls +* added support for using module-qualified expressions in inheritance decls (e.g., `class Child: MyMod.Parent { ... }`) +* added support for additional integer `<` comparisons generating a `param` Semantic Changes / Changes to the Language Definition ----------------------------------------------------- -* `use` and `import` are always case sensitive when finding module files +* `use` and `import` are now always case sensitive when finding module files (see https://chapel-lang.org/docs/language/spec/modules.html#finding-toplevel-module-files) * `require` statements no longer impact the determination of the main module (see https://chapel-lang.org/docs/main/language/spec/statements.html#the-require-statement and https://chapel-lang.org/docs/language/spec/modules.html#the-main-module) -* modules brought in with `require` are no initialized if not used +* modules brought in with `require` are no longer initialized if not used * standard library modules are now preferred in the event of a name conflict Deprecated / Unstable / Removed Language Features @@ -82,11 +98,11 @@ Namespace Changes New Standard Library Features ----------------------------- -* promoted the 'Sort' package module to be a stable standard module +* promoted the 'Sort' package module to be a standard module (see https://chapel-lang.org/docs/2.2/modules/standard/Sort.html) -* added a new argument to request `sort()` to be stable (w.r.t. equal keys) +* added a new argument to request a stable `sort()` (w.r.t. equal key orders) (see https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#Sort.sort) -* added helper routines to convert values to and from JSON strings +* added new helper routines to convert values to and from JSON strings (see https://chapel-lang.org/docs/2.2/modules/standard/JSON.html#JSON.fromJson) New Package Module Features @@ -106,9 +122,9 @@ Changes / Feature Improvements in Standard Libraries ---------------------------------------------------- * added parallel/distributed support to the `fileReader.lines()` iterator (see https://chapel-lang.org/docs/2.2/modules/standard/IO.html#IO.fileReader.lines) -* added an unstable `sort()` overload accepting a region to sort +* added an unstable `sort()` overload accepting a region of indices to sort (see https://chapel-lang.org/docs/main/modules/standard/Sort.html#Sort.sort) -* added multi-dim support to `randomStream.[shuffle|choose|sample|permute]()` +* added multi-dimensional support to several `randomStream` methods (see https://chapel-lang.org/docs/2.2/modules/standard/Random.html#Random.randomStream.shuffle) * added support for passing distributed arrays to `c_addrOf()` * made 'sendPosixSignal()' throw an `IllegalArgumentError` for bad signals @@ -148,17 +164,15 @@ Deprecated / Unstable / Removed Library Features and https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#Sort.reverseComparator) * deprecated the `inPlaceAlgorithm` argument for the `Sort.sort()` procedure (see https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#Sort.sort) -* deprecated creating custom Sort comparators in favor of using interfaces +* deprecated creating custom 'Sort' comparators in favor of using interfaces (see https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#comparators) * deprecated `list.sort()` in favor of `Sort.sort(x: list)` (see https://chapel-lang.org/docs/2.2/modules/standard/List.html#List.list.sort) * removed the deprecated 'VectorizingIterator' module - * removed deprecated `locking=true` overloads of `open[Reader|Writer]()` * removed deprecated `IllegalArgumentError` overloads in the 'Errors' module -* removed deprecated `RandomStream` class -* removed deprecated `randomStream` methods -* removed deprecated `RandomSupport` and `PCGRandom` submodules +* removed the deprecated `RandomStream` class and `randomStream` methods +* removed the deprecated `RandomSupport` and `PCGRandom` submodules Tool Improvements ----------------- @@ -166,9 +180,9 @@ Tool Improvements (e.g., `$CHPL_HOME/util/printchplenv --only CHPL_TARGET_COMPILER`) * made several changes and improvements to the `chplcheck` linter (see https://chapel-lang.org/docs/2.2/tools/chplcheck/chplcheck.html) - - added a new rule for `complex` literals whose `imag` precedes the `real` - - allowed ignoring children incorrectly indented relative to their parent - - added support for a `@fixit` dectorator to the Python API + - added a new rule for a `complex` literal whose `imag` precedes its `real` + - allowed the ability to ignore incorrect indentation within a given scope + - added support for a `@fixit` decorator to the Python API - renamed the `RedundantParentheses` rule to `ControlFlowParentheses` * added the ability to document interfaces with `chpldoc` * updated the script for anonymizing unstable warnings @@ -178,7 +192,7 @@ GPU Computing ------------- * added support for ROCm 6 (see https://chapel-lang.org/docs/2.2/technotes/gpu.html#requirements) -* improved performance for some kernels on multi-GPU locales +* improved performance for certain kernels on multi-GPU locales * added a new `@gpu.assertElligible` attribute for compile-time GPU checks (see https://chapel-lang.org/docs/2.2/modules/standard/GPU.html#GPU.@gpu.assertEligible) * added a new `@gpu.itersPerThread` attribute to control blocking iterations @@ -192,42 +206,42 @@ GPU Computing Performance Optimizations / Improvements ---------------------------------------- -* enabled optimization that auto-localizes domains by default when possible - (use `-slocalizeConstDomains=false` to disable) * significantly improved performance when assigning between array slices (e.g., `Arr1[x..y] = Arr2[a..b]` now performs up to 30x faster) +* enabled an optimization that auto-localizes `const` domains when possible + (use `-slocalizeConstDomains=false` to disable) * removed an unnecessary allocation when moving an array value to a typed var * extended the automatic local-access optimization to handle basic stencils (e.g., `forall i in InnerA {... A[i-1] ...}` is optimized for 'StencilDist') * reduced communication overheads in 'StencilDist's `.updateFluff()` method -* reduced overheads due to fencing when using `CHPL_COMM=ofi` +* significantly reduced unnecessary fencing overheads when using `ofi` Documentation Improvements -------------------------- -* fixed and improved descriptions of library modules in Chapel's module index - (see https://chapel-lang.org/docs/2.2/chpl-modindex.html) * linked the module index from the documentation landing page (see https://chapel-lang.org/docs/2.2/index.html#indexes) -* added documentation of the GPU attributes to the 'GPU' module docs - (see https://chapel-lang.org/docs/2.2/modules/standard/GPU.html) -* searching for `init=` now finds the relevant documentation -* clarified that the terminating null byte is optional on string/bytes buffers Documentation Improvements for Tools ------------------------------------ -* added an 'Editor Support' page +* added a new 'Editor Support' page (see https://chapel-lang.org/docs/2.2/usingchapel/editor-support.html) * improved the debugging best practices documentation for macOS (see https://chapel-lang.org/docs/2.2/usingchapel/debugging.html#best-known-configuration) +* added a section discussing when to use `mason` to the Mason documentation + (see https://chapel-lang.org/docs/main/2.2/mason/mason.html#when-to-leverage-mason-for-chapel-builds) Language Specification Improvements ----------------------------------- -* described the process of finding module files through `use` and `import` +* documented the process of finding module files through `use` and `import` (see https://chapel-lang.org/docs/2.2/language/spec/modules.html#finding-toplevel-module-files) * added a section describing the implicit `this.` in methods (see https://chapel-lang.org/docs/2.2/language/spec/methods.html#implicit-this-in-methods) +* clarified that terminating null bytes are optional on string/bytes buffers + (see https://chapel-lang.org/docs/language/spec/strings.html + and https://chapel-lang.org/docs/language/spec/bytes.html) * added examples of distribution factory methods (see https://chapel-lang.org/docs/2.2/language/spec/domain-maps.html#distributions-for-domain-types) +* searching for `init=` now finds the relevant language spec documentation Platform-Specific Documentation Improvements -------------------------------------------- @@ -239,13 +253,17 @@ Technical Note Improvements Documentation Improvements for Libraries ---------------------------------------- +* fixed and improved descriptions of library modules in Chapel's module index + (see https://chapel-lang.org/docs/2.2/chpl-modindex.html) +* added documentation of the GPU attributes to the 'GPU' module docs + (see https://chapel-lang.org/docs/2.2/modules/standard/GPU.html) * corrected/extended the documentation for `atan()` and `atan2()` (see https://chapel-lang.org/docs/2.2/modules/standard/Math.html#Math.atan and https://chapel-lang.org/docs/2.2/modules/standard/Math.html#Math.atan2) * documented which errors can be thrown from 'Subprocess' procedures (see https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html#Subprocess.subprocess.close and https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html#Subprocess.subprocess.sendPosixSignal) -* noted errors from `spawn`/`spawnshell` can be delayed until later calls +* noted errors from `spawn`/`spawnshell` may be delayed until later calls (see https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html#Subprocess.spawn) * clarified the compilation commands for 'LinearAlgebra' and 'LAPACK' modules (see https://chapel-lang.org/docs/2.2/modules/packages/LAPACK.html#compiling-with-lapack @@ -254,7 +272,7 @@ Documentation Improvements for Libraries Documentation Improvements to the 'man' Pages --------------------------------------------- -* added cross-reference to env var docs to 'Compiler Configuration Options' +* cross-referenced env var docs within 'Compiler Configuration Options' (see https://chapel-lang.org/docs/2.2/usingchapel/man.html#man-task-tracking) Example Codes @@ -271,9 +289,10 @@ Generated Code Improvements Memory Improvements ------------------- * removed an unnecessary allocation when moving an array value to a typed var -* fixed memory leak when using loop expressions with empty bodies +* fixed a memory leak when using loop expressions with empty bodies * fixed a memory leak when ignoring values in `try!` expressions * fixed a memory leak when using per-locale "static" variables +* closed a memory leak when reading with the 'Zarr' package module Syntax Highlighting ------------------- @@ -293,12 +312,10 @@ Configuration / Build Changes Portability / Platform-specific Improvements -------------------------------------------- -* added more Linux package installations that support multiple locales - (see https://chapel-lang.org/install-pkg.html) -* changed the Fedora 40 package dependencies to use LLVM 18 * made the default for `CHPL_ATOMICS` always be `cstdlib` for bundled LLVM * disallowed the use of `CHPL_ATOMICS=locks` on MacOS * added the ability to infer the path for `nvcc` from `CHPL_CUDA_PATH` +* changed the Fedora 40 package dependencies to use LLVM 18 * filtered out `-L/usr/lib` when linking to avoid problems on some platforms Compiler Improvements @@ -309,6 +326,7 @@ Compiler Flags -------------- * added a `--lib-pic` flag to control `CHPL_LIB_PIC`'s value at compile time (see https://chapel-lang.org/docs/2.2/usingchapel/chplenv.html#chpl-lib-pic) +* extended `--print-commands` to include commands run with `--library-python` Generated Executable Flags -------------------------- @@ -323,13 +341,13 @@ Error Messages / Semantic Checks * improved the error message for incorrect placement of intent keywords (e.g., `proc in A.foo() { }`) * added an error for attempted uses of `sync nothing`, which is not supported -* improved the error message for casting abstract enums to numeric types +* improved the error message for casting abstract `enum`s to numeric types * improved the error message for incorrectly formatted `with` clauses (i.e. `begin with ref A { }`) * improved errors for generic anonymous functions (e.g., `proc(x: []) { }`) * improved the error when creating an associative domain of `owned` classes -* improved the error message when `sparse subdomain` is incorrectly used +* improved the error message when `sparse subdomain` is used incorrectly * improved error message when accidentally creating special method iterators * improved error when using same location for `chpldoc` output and Sphinx files * added a user error when `getFieldRef()` is used on a `type` field @@ -342,27 +360,23 @@ Launchers Runtime Library Improvements ---------------------------- -* fixed a bug in injection with `CHPL_COMM=ofi` -* fixed a bug in progressing non-blocking operations with `CHPL_COMM=ofi` -* fixed a bug using unsupported injection with `CHPL_COMM=ofi` and `efa` -* fixed a bug striping the fixed heap with `CHPL_COMM=gasnet` and non-`ibv` Bug Fixes --------- * fixed a bug in `scan` expressions over non-`int(64)` indices * fixed alignment for records whose fields are a mix of `extern` types and non- -* fixed bugs in auto-[local-access|aggregation] optimizzations for local arrays +* fixed a bug in which the compiler incorrectly complained about missing '(?)' +* fixed bugs in auto local-access/aggregation optimizations for local arrays * fixed an automatic-local-access bug for certain poorly aligned zippered loops * fixed a bug in which certain rank-change slices failed to compile * fixed support for interfaces nested within subroutines -* fixed erroneous `--specialize` warnings when using multi-locale OS packages * removed a redundant library linkage specifier when using `--library-makefile` -* fixed a bug with default values in Python interoperability +* fixed a bug with default values and Python interoperability * fixed an incorrect deprecation when creating a distributed array of atomics * fixed a crash when assigning a module-scope `var` to a `ref` in an iterator * fixed a bug where types of promoted expressions could be incorrectly inferred * fixed an incorrect error about missing constructor arguments in some cases -* fixed "using value as type" error in certain conditional type expressions +* fixed "using value as type" errors in certain conditional type expressions * allowed `ref`-intent procedures to not return anything if they halt * fixed an internal error when `out` is used with a default value and no type * fixed an internal error when returning a `ref` to a value of different type @@ -374,16 +388,17 @@ Bug Fixes Bug Fixes for Build Issues -------------------------- * fixed `printchplenv` and `printchplbuilds.py` output for prefix installations +* fixed erroneous `--specialize` warnings when using multi-locale OS packages * ensured that `pycache` is fully deleted with `make clobber` * fixed an issue building `CHPL_COMM=gasnet` Docker images Bug Fixes for GPU Computing --------------------------- -* fixed a bug where `on someGpuVar` did not work correctly +* fixed a bug where `on myVar` didn't work correctly for GPU-stored variables * fixed a bug where some `for` loops could cause inadvertent kernel launches * fixed support for the `--library` flag when compiling for GPUs * fixed code generation for ROCm 5.4.3, which was seg faulting -* fixed a bug which prevented Chapel to be built with Clang 18 and CUDA 11 +* fixed a bug that prevented Chapel to be built with Clang 18 and CUDA 11 * fixed a bug where GPU allocations on CPU data structures caused segfaults * fixed a bug where some kernel launch diagnostics line numbers were incorrect * fixed a host-to-device copy in which an incorrect function was being called @@ -394,12 +409,11 @@ Bug Fixes for Libraries * fixed a bug preventing `this` from being passed to `Reflection.getFieldRef()` * fixed 'RangeChunk's `chunks*()` iterators for non-`int(64)` indices * fixed a bug where `heap.createHeap()` only accepted the default comparator -* closed a memory leak when reading with the 'Zarr' package module Bug Fixes for Tools ------------------- -* fixed 'goto definition' for inheritance and enums in `chpl-language-server` -* fixed how locations are reported for enum elements +* fixed 'goto definition' for inheritance and `enum`s in `chpl-language-server` +* fixed how locations are reported for `enum` elements * silenced an erroneous `IncorrectIndentation` warning from `chplcheck` * fixed the `chapel-py` build to use the same compiler as the frontend library @@ -407,13 +421,13 @@ Bug Fixes for the Runtime ------------------------- * fixed a bug with `CHPL_COMM=ofi` that led to hangs at certain scales * fixed a bug in progressing non-blocking operations with `CHPL_COMM=ofi` -* worked around a bug with `efa` for `ofi` related to lack of injection support +* worked around a bug with `ofi/efa` related to lack of injection support * fixed a bug striping the fixed heap for `CHPL_COMM=gasnet` over non-`ibv` Third-Party Software Changes ---------------------------- -* updated the bundled version of QThreads to 1.20 -* applied a patch to address a performance regression in Qthreads 1.20 +* updated the bundled version of Qthreads to 1.20 +* applied a Qthreads patch to address a performance regression in version 1.20 Developer-oriented changes: Process ----------------------------------- @@ -421,8 +435,8 @@ Developer-oriented changes: Process Developer-oriented changes: Documentation ----------------------------------------- -* extended the Standard Module Style Guide to include more 2.0 decisions - (see https://chapel-lang.org/docs/2.2/developer/bestPractices/StandardModuleStyle.html#best-practices-standard-module-style) +* extended the standard module style guide to include more 2.0 decisions + (see https://chapel-lang.org/docs/2.2/developer/bestPractices/StandardModuleStyle.html) Developer-oriented changes: Syntactic / Naming Changes ------------------------------------------------------ @@ -439,7 +453,6 @@ Developer-oriented changes: Makefile / Build-time changes Developer-oriented changes: Compiler Flags ------------------------------------------ -* extended `--print-commands` to include commands run with `--library-python` * added `--llvm-print-ir-file` to write LLVM IR to a file rather than `stdout` Developer-oriented changes: Compiler improvements / changes @@ -453,22 +466,22 @@ Developer-oriented changes: 'dyno' Compiler improvements / changes * the frontend library now drives the process of deciding which files to parse * made numerous improvements to the 'dyno' resolver for types and calls: - added support for resolving tuple accessor calls - - added support for iteration over `enum` types + - added support for iterating over `enum` types - added support for casting `param` `enum` values to strings - - adjusted resolver to syntactically determine whether fields are generic - - added support for type construction of generic classes - - fixed a bug resolving constrained, dependently-typed type constructor args + - implemented paren-less `type`/`param` procs on nilable types + - added initial support for resolving `zip` expressions and parallel `iter`s - improved support for initializers on classes that inherit - - fixed an error resolving initializers w/ generic fields following concrete - improved error messages for out-of-order field initialization - - added initial support for resolving `zip` expressions and parallel `iter`s + - fixed an error resolving initializers w/ generic fields following concrete + - adjusted the resolver to syntactically determine whether fields are generic + - added support for type construction of generic classes + - fixed a bug resolving constrained, dependently-typed type constructor args - fixed a bug passing instantiated generics to generic record formal args - improved support for forwarding unmanaged class methods - fixed resolution of methods on types that are only generic by inheritance - added support for resolving generic routines when passed tuple arguments - - implemented paren-less `type`/`param` procs on nilable types - fixed an incorrect ambiguity between fields and unrelated secondary methods - - fixed an error for ambiguities btwn locals and paren-less procs in a method + - fixed an error for ambiguities btwn locals and paren-less procs in methods - fixed a bug causing `testInteractive --std` to not resolve std module types - improved performance of `runAndTrackErrors` API function * improved the performance of `--dyno-scope-bundled` @@ -486,8 +499,6 @@ Developer-oriented changes: Platform-specific bug fixes Developer-oriented changes: Testing System ------------------------------------------ * removed the default application of the `-o` flag in the `start_test` system -* removed unneeded `CC` env var logic in `smokeTest` that broke on some systems -* added support for co-locale performance testing for `CHPL_COMM=gasnet` Developer-oriented changes: Tool Improvements --------------------------------------------- From 715bb74b880f88549f67ef8da522b7c93c60e260 Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Wed, 18 Sep 2024 13:08:38 -0700 Subject: [PATCH 21/29] Re-sorted categories --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 96 +++++++++++++++++++++++++++--------------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index d8bc38e25c58..05c107d6ad64 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,9 +3,9 @@ Release Changes List TODO: * '(http:' -> '(see http:' -o sort items within categories -o check placement of items into categories -o check sorting of categories +* sort items within categories +* check placement of items into categories +* check sorting of categories o check for ' vs ` o fulfill TODOs o check man page for new compiler flags @@ -50,13 +50,11 @@ Updates to Chapel's Release Formats * started publishing a `nightly` Docker image tag (see https://hub.docker.com/r/chapel/chapel) -Prerequisite Updates --------------------- +Updates to Chapel Prerequisites +------------------------------- Syntactic / Naming Changes -------------------------- -* improved the orthogonality of Chapel syntax in several cases - (e.g., `coforall zip(a, b) { ... }` is now supported) New Language Features --------------------- @@ -72,6 +70,8 @@ Language Feature Improvements * added support for declaring `enum`s within classes * added support for using module-qualified expressions in inheritance decls (e.g., `class Child: MyMod.Parent { ... }`) +* improved the orthogonality of Chapel syntax in several cases + (e.g., `coforall zip(a, b) { ... }` is now supported) * added support for additional integer `<` comparisons generating a `param` Semantic Changes / Changes to the Language Definition @@ -174,19 +174,17 @@ Deprecated / Unstable / Removed Library Features * removed the deprecated `RandomStream` class and `randomStream` methods * removed the deprecated `RandomSupport` and `PCGRandom` submodules -Tool Improvements ------------------ -* added an `--only` flag to `printchplenv` to focus on a specific variable - (e.g., `$CHPL_HOME/util/printchplenv --only CHPL_TARGET_COMPILER`) -* made several changes and improvements to the `chplcheck` linter - (see https://chapel-lang.org/docs/2.2/tools/chplcheck/chplcheck.html) - - added a new rule for a `complex` literal whose `imag` precedes its `real` - - allowed the ability to ignore incorrect indentation within a given scope - - added support for a `@fixit` decorator to the Python API - - renamed the `RedundantParentheses` rule to `ControlFlowParentheses` -* added the ability to document interfaces with `chpldoc` -* updated the script for anonymizing unstable warnings - (see https://chapel-lang.org/docs/2.2/tools/unstableWarningAnonymizer/unstableWarningAnonymizer.html) +Performance Optimizations / Improvements +---------------------------------------- +* significantly improved performance when assigning between array slices + (e.g., `Arr1[x..y] = Arr2[a..b]` now performs up to 30x faster) +* enabled an optimization that auto-localizes `const` domains when possible + (use `-slocalizeConstDomains=false` to disable) +* removed an unnecessary allocation when moving an array value to a typed var +* extended the automatic local-access optimization to handle basic stencils + (e.g., `forall i in InnerA {... A[i-1] ...}` is optimized for 'StencilDist') +* reduced communication overheads in 'StencilDist's `.updateFluff()` method +* significantly reduced unnecessary fencing overheads when using `ofi` GPU Computing ------------- @@ -204,17 +202,19 @@ GPU Computing * extended `make check` to test a GPU-oriented example when GPUs are enabled * improved the error message when a vendor's SDK can't be found -Performance Optimizations / Improvements ----------------------------------------- -* significantly improved performance when assigning between array slices - (e.g., `Arr1[x..y] = Arr2[a..b]` now performs up to 30x faster) -* enabled an optimization that auto-localizes `const` domains when possible - (use `-slocalizeConstDomains=false` to disable) -* removed an unnecessary allocation when moving an array value to a typed var -* extended the automatic local-access optimization to handle basic stencils - (e.g., `forall i in InnerA {... A[i-1] ...}` is optimized for 'StencilDist') -* reduced communication overheads in 'StencilDist's `.updateFluff()` method -* significantly reduced unnecessary fencing overheads when using `ofi` +Tool Improvements +----------------- +* added an `--only` flag to `printchplenv` to focus on a specific variable + (e.g., `$CHPL_HOME/util/printchplenv --only CHPL_TARGET_COMPILER`) +* made several changes and improvements to the `chplcheck` linter + (see https://chapel-lang.org/docs/2.2/tools/chplcheck/chplcheck.html) + - added a new rule for a `complex` literal whose `imag` precedes its `real` + - allowed the ability to ignore incorrect indentation within a given scope + - added support for a `@fixit` decorator to the Python API + - renamed the `RedundantParentheses` rule to `ControlFlowParentheses` +* added the ability to document interfaces with `chpldoc` +* updated the script for anonymizing unstable warnings + (see https://chapel-lang.org/docs/2.2/tools/unstableWarningAnonymizer/unstableWarningAnonymizer.html) Documentation Improvements -------------------------- @@ -361,6 +361,11 @@ Launchers Runtime Library Improvements ---------------------------- +Third-Party Software Changes +---------------------------- +* updated the bundled version of Qthreads to 1.20 +* applied a Qthreads patch to address a performance regression in version 1.20 + Bug Fixes --------- * fixed a bug in `scan` expressions over non-`int(64)` indices @@ -385,12 +390,11 @@ Bug Fixes * fixed a problem importing from a parent module from an `include`d submodule * fixed problems resolving calls to parenless methods from within a method -Bug Fixes for Build Issues --------------------------- -* fixed `printchplenv` and `printchplbuilds.py` output for prefix installations -* fixed erroneous `--specialize` warnings when using multi-locale OS packages -* ensured that `pycache` is fully deleted with `make clobber` -* fixed an issue building `CHPL_COMM=gasnet` Docker images +Bug Fixes for Libraries +----------------------- +* fixed a bug preventing `this` from being passed to `Reflection.getFieldRef()` +* fixed 'RangeChunk's `chunks*()` iterators for non-`int(64)` indices +* fixed a bug where `heap.createHeap()` only accepted the default comparator Bug Fixes for GPU Computing --------------------------- @@ -404,12 +408,6 @@ Bug Fixes for GPU Computing * fixed a host-to-device copy in which an incorrect function was being called * fixed various errors when bulk transferring GPU arrays -Bug Fixes for Libraries ------------------------ -* fixed a bug preventing `this` from being passed to `Reflection.getFieldRef()` -* fixed 'RangeChunk's `chunks*()` iterators for non-`int(64)` indices -* fixed a bug where `heap.createHeap()` only accepted the default comparator - Bug Fixes for Tools ------------------- * fixed 'goto definition' for inheritance and `enum`s in `chpl-language-server` @@ -417,6 +415,13 @@ Bug Fixes for Tools * silenced an erroneous `IncorrectIndentation` warning from `chplcheck` * fixed the `chapel-py` build to use the same compiler as the frontend library +Bug Fixes for Build Issues +-------------------------- +* fixed `printchplenv` and `printchplbuilds.py` output for prefix installations +* fixed erroneous `--specialize` warnings when using multi-locale OS packages +* ensured that `pycache` is fully deleted with `make clobber` +* fixed an issue building `CHPL_COMM=gasnet` Docker images + Bug Fixes for the Runtime ------------------------- * fixed a bug with `CHPL_COMM=ofi` that led to hangs at certain scales @@ -424,11 +429,6 @@ Bug Fixes for the Runtime * worked around a bug with `ofi/efa` related to lack of injection support * fixed a bug striping the fixed heap for `CHPL_COMM=gasnet` over non-`ibv` -Third-Party Software Changes ----------------------------- -* updated the bundled version of Qthreads to 1.20 -* applied a Qthreads patch to address a performance regression in version 1.20 - Developer-oriented changes: Process ----------------------------------- * added a CI check for badly formatted performance tests From 4dc4a201b018473f200dbe104260adb6318d8e68 Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Wed, 18 Sep 2024 13:22:43 -0700 Subject: [PATCH 22/29] Completed more TODOs --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 05c107d6ad64..56ba55a28a6f 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,16 +6,16 @@ TODO: * sort items within categories * check placement of items into categories * check sorting of categories -o check for ' vs ` -o fulfill TODOs -o check man page for new compiler flags -o check test/release/examples +* check for ' vs ` +* fulfill TODOs +* check man page for new compiler flags +* check test/release/examples * check for docs/1.33/ links -o check forced linebreaks -o check initial '*' +* check forced linebreaks +* check initial '*' * check initial 'A-Z' * check 'see:' -o check for changes put too far down in file +* check for changes put too far down in file o remove empty sections o check links o add highlights @@ -176,12 +176,12 @@ Deprecated / Unstable / Removed Library Features Performance Optimizations / Improvements ---------------------------------------- -* significantly improved performance when assigning between array slices +* significantly improved performance when assigning between array slice s (e.g., `Arr1[x..y] = Arr2[a..b]` now performs up to 30x faster) * enabled an optimization that auto-localizes `const` domains when possible (use `-slocalizeConstDomains=false` to disable) * removed an unnecessary allocation when moving an array value to a typed var -* extended the automatic local-access optimization to handle basic stencils +* extended the automatic local-access optimization to handle basic stencils (e.g., `forall i in InnerA {... A[i-1] ...}` is optimized for 'StencilDist') * reduced communication overheads in 'StencilDist's `.updateFluff()` method * significantly reduced unnecessary fencing overheads when using `ofi` @@ -277,8 +277,11 @@ Documentation Improvements to the 'man' Pages Example Codes ------------- +* added a new `examples/gpu/` directory for GPU-oriented example codes + (see `$CHPL_HOME/examples/gpu/README`) * restored `examples/patterns/recordio.chpl` using 2.0-compatible features (see `$CHPL_HOME/examples/patterns/recordio.chpl`) +* updated example codes with respect to 'Sort' and 'Random' module changes Compilation Time Improvements ----------------------------- @@ -325,7 +328,12 @@ Compiler Improvements Compiler Flags -------------- * added a `--lib-pic` flag to control `CHPL_LIB_PIC`'s value at compile time - (see https://chapel-lang.org/docs/2.2/usingchapel/chplenv.html#chpl-lib-pic) + (see https://chapel-lang.org/docs/2.2/usingchapel/man.html#man-lib-pic + and https://chapel-lang.org/docs/2.2/usingchapel/chplenv.html#chpl-lib-pic) +* added `--[no-]array-view-elision` to control optimizations of slices/views + (see https://chapel-lang.org/docs/2.2/usingchapel/man.html#man-array-view-elision) +* added `--[no-]offset-auto-local-access` to control stencil locality opts + (see https://chapel-lang.org/docs/2.2/usingchapel/man.html#man-offset-auto-local-access) * extended `--print-commands` to include commands run with `--library-python` Generated Executable Flags From a0a5c10ab4da4d45320f92fd61f87f062ca6aaf4 Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Wed, 18 Sep 2024 13:46:05 -0700 Subject: [PATCH 23/29] Fix some docs links to 2.1 or main --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 56ba55a28a6f..1ac929bd8dd7 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -65,7 +65,7 @@ New Language Features Language Feature Improvements ----------------------------- * extended remote variable declarations to support multi-decls and coercions - (see https://chapel-lang.org/docs/technotes/remote.html) + (see https://chapel-lang.org/docs/2.2/technotes/remote.html) * remote variable declaration initializers are now evaluated remotely * added support for declaring `enum`s within classes * added support for using module-qualified expressions in inheritance decls @@ -77,10 +77,10 @@ Language Feature Improvements Semantic Changes / Changes to the Language Definition ----------------------------------------------------- * `use` and `import` are now always case sensitive when finding module files - (see https://chapel-lang.org/docs/language/spec/modules.html#finding-toplevel-module-files) + (see https://chapel-lang.org/docs/2.2/language/spec/modules.html#finding-toplevel-module-files) * `require` statements no longer impact the determination of the main module - (see https://chapel-lang.org/docs/main/language/spec/statements.html#the-require-statement - and https://chapel-lang.org/docs/language/spec/modules.html#the-main-module) + (see https://chapel-lang.org/docs/2.2/language/spec/statements.html#the-require-statement + and https://chapel-lang.org/docs/2.2/language/spec/modules.html#the-main-module) * modules brought in with `require` are no longer initialized if not used * standard library modules are now preferred in the event of a name conflict @@ -123,7 +123,7 @@ Changes / Feature Improvements in Standard Libraries * added parallel/distributed support to the `fileReader.lines()` iterator (see https://chapel-lang.org/docs/2.2/modules/standard/IO.html#IO.fileReader.lines) * added an unstable `sort()` overload accepting a region of indices to sort - (see https://chapel-lang.org/docs/main/modules/standard/Sort.html#Sort.sort) + (see https://chapel-lang.org/docs/2.2/modules/standard/Sort.html#Sort.sort) * added multi-dimensional support to several `randomStream` methods (see https://chapel-lang.org/docs/2.2/modules/standard/Random.html#Random.randomStream.shuffle) * added support for passing distributed arrays to `c_addrOf()` @@ -176,7 +176,7 @@ Deprecated / Unstable / Removed Library Features Performance Optimizations / Improvements ---------------------------------------- -* significantly improved performance when assigning between array slice s +* significantly improved performance when assigning between array slices (e.g., `Arr1[x..y] = Arr2[a..b]` now performs up to 30x faster) * enabled an optimization that auto-localizes `const` domains when possible (use `-slocalizeConstDomains=false` to disable) @@ -228,7 +228,7 @@ Documentation Improvements for Tools * improved the debugging best practices documentation for macOS (see https://chapel-lang.org/docs/2.2/usingchapel/debugging.html#best-known-configuration) * added a section discussing when to use `mason` to the Mason documentation - (see https://chapel-lang.org/docs/main/2.2/mason/mason.html#when-to-leverage-mason-for-chapel-builds) + (see https://chapel-lang.org/docs/2.2/mason/mason.html#when-to-leverage-mason-for-chapel-builds) Language Specification Improvements ----------------------------------- @@ -237,8 +237,8 @@ Language Specification Improvements * added a section describing the implicit `this.` in methods (see https://chapel-lang.org/docs/2.2/language/spec/methods.html#implicit-this-in-methods) * clarified that terminating null bytes are optional on string/bytes buffers - (see https://chapel-lang.org/docs/language/spec/strings.html - and https://chapel-lang.org/docs/language/spec/bytes.html) + (see https://chapel-lang.org/docs/2.2/language/spec/strings.html + and https://chapel-lang.org/docs/2.2/language/spec/bytes.html) * added examples of distribution factory methods (see https://chapel-lang.org/docs/2.2/language/spec/domain-maps.html#distributions-for-domain-types) * searching for `init=` now finds the relevant language spec documentation @@ -378,7 +378,7 @@ Bug Fixes --------- * fixed a bug in `scan` expressions over non-`int(64)` indices * fixed alignment for records whose fields are a mix of `extern` types and non- -* fixed a bug in which the compiler incorrectly complained about missing '(?)' +* fixed a bug in which the compiler incorrectly complained about missing '(?)` * fixed bugs in auto local-access/aggregation optimizations for local arrays * fixed an automatic-local-access bug for certain poorly aligned zippered loops * fixed a bug in which certain rank-change slices failed to compile From 86721c3284cf5b1b295b29d1eb73d78610ba22ad Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Wed, 18 Sep 2024 14:09:45 -0700 Subject: [PATCH 24/29] Fixed broken links, but others remain due to docs/main being 2 weeks old --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 1ac929bd8dd7..5268067bb7cc 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -112,11 +112,9 @@ New Package Module Features * added support for reading images to the 'Image' module (see https://chapel-lang.org/docs/2.2/modules/packages/Image.html#Image.readImage) * added PNG and JPEG formats to the 'Image' module - (see https://chapel-lang.org/docs/2.2/modules/packages/Image.html#Image.imageType.png - and https://chapel-lang.org/docs/2.2/modules/packages/Image.html#Image.imageType.jpg) + (see https://chapel-lang.org/docs/2.2/modules/packages/Image.html#Image.imageType.png) * added `colorToPixel()` and `pixelToColor()` routines to the 'Image' module - (see https://chapel-lang.org/docs/2.2/modules/packages/Image.html#Image.colorToPixel - and https://chapel-lang.org/docs/2.2/modules/packages/Image.html#Image.pixelToColor) + (see https://chapel-lang.org/docs/2.2/modules/packages/Image.html#Image.colorToPixel) Changes / Feature Improvements in Standard Libraries ---------------------------------------------------- @@ -128,7 +126,7 @@ Changes / Feature Improvements in Standard Libraries (see https://chapel-lang.org/docs/2.2/modules/standard/Random.html#Random.randomStream.shuffle) * added support for passing distributed arrays to `c_addrOf()` * made 'sendPosixSignal()' throw an `IllegalArgumentError` for bad signals - (see https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html) + (see https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html#Subprocess.subprocess.sendPosixSignal) * improved the error message for calling `sort()` on unsupported types Changes / Feature Improvements in Package Modules @@ -140,7 +138,7 @@ Changes / Feature Improvements in Package Modules * extended the 'Zarr' module to support single-locale IO (e.g., see https://chapel-lang.org/docs/2.2/modules/packages/Zarr.html#Zarr.readZarrArrayLocal) * added the ability to read a 'Zarr' array using arbitrary target locales - (see https://chapel-lang.org/docs/2.2/modules/packages/Zarr.html#Zar) + (see https://chapel-lang.org/docs/2.2/modules/packages/Zarr.html#Zarr.readZarrArray) Standard Layouts and Distributions ---------------------------------- @@ -194,7 +192,7 @@ GPU Computing * added a new `@gpu.assertElligible` attribute for compile-time GPU checks (see https://chapel-lang.org/docs/2.2/modules/standard/GPU.html#GPU.@gpu.assertEligible) * added a new `@gpu.itersPerThread` attribute to control blocking iterations - (see https://chapel-lang.org/docs/2.2/technotes/gpu.html#gpu-related-attributes) + (see https://chapel-lang.org/docs/2.2/modules/standard/GPU.html#GPU.@gpu.itersPerThread) * added support for GPU attributes to compile without the GPU locale model * added a warning when `@assertOnGpu` is used without the GPU locale model * added support for `ref` intents on scalars in GPU-eligible loops @@ -228,7 +226,7 @@ Documentation Improvements for Tools * improved the debugging best practices documentation for macOS (see https://chapel-lang.org/docs/2.2/usingchapel/debugging.html#best-known-configuration) * added a section discussing when to use `mason` to the Mason documentation - (see https://chapel-lang.org/docs/2.2/mason/mason.html#when-to-leverage-mason-for-chapel-builds) + (see https://chapel-lang.org/docs/2.2/tools/mason/mason.html#when-to-leverage-mason-for-chapel-builds) Language Specification Improvements ----------------------------------- @@ -256,13 +254,12 @@ Documentation Improvements for Libraries * fixed and improved descriptions of library modules in Chapel's module index (see https://chapel-lang.org/docs/2.2/chpl-modindex.html) * added documentation of the GPU attributes to the 'GPU' module docs - (see https://chapel-lang.org/docs/2.2/modules/standard/GPU.html) + (see https://chapel-lang.org/docs/2.2/modules/standard/GPU.html#GPU.@gpu.assertEligible) * corrected/extended the documentation for `atan()` and `atan2()` (see https://chapel-lang.org/docs/2.2/modules/standard/Math.html#Math.atan and https://chapel-lang.org/docs/2.2/modules/standard/Math.html#Math.atan2) * documented which errors can be thrown from 'Subprocess' procedures - (see https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html#Subprocess.subprocess.close - and https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html#Subprocess.subprocess.sendPosixSignal) + (e.g., see https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html#Subprocess.subprocess.close) * noted errors from `spawn`/`spawnshell` may be delayed until later calls (see https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html#Subprocess.spawn) * clarified the compilation commands for 'LinearAlgebra' and 'LAPACK' modules From 289fb632c1e8c68961a958a39766c23c8a6dbf21 Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Wed, 18 Sep 2024 14:18:45 -0700 Subject: [PATCH 25/29] Tighten up highlights --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 5268067bb7cc..bc780296fc8c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -18,8 +18,8 @@ TODO: * check for changes put too far down in file o remove empty sections o check links -o add highlights -o spellcheck +* add highlights +* spellcheck version 2.2 =========== @@ -28,19 +28,15 @@ released September 26, 2024 Highlights (see subsequent sections for further details) -------------------------------------------------------- -* we're releasing multi-locale Chapel support in several new Linux packages +* several new Linux packages are being released containing multi-locale support * programmers can now define and use custom memory allocators with classes * remote variable declarations are greatly improved in capabilities & behavior -* the 'Sort' module has been revamped and promoted to a standard module -* new routines support convenient conversions between JSON strings +* performance is significantly improved for key array programming patterns +* added ROCm 6 support for AMD GPUs, and generally improved GPU features & perf +* the 'Sort' module has been revised and promoted to a standard module +* new parallel/distributed I/O iterators are available in 'IO'/'ParallelIO' * a new 'PrecisionSerializer' package controls numerical precision/padding -* the 'Image' module has been extended to support new file formats and routines -* we've introduced new parallel/distributed I/O iterators -* the 'Zarr' package module's capabilities have been extended and improved -* added ROCm 6 support for AMD GPUs and generally improved GPU features & perf -* significantly improved performance for several key array programming patterns -* closed a few previously unknown memory leaks -* added new environment variables for specifying jemalloc/gcc/ofi options +* the 'Image' and 'Zarr' package modules have been improved via new features * made many other user-driven improvements w.r.t. bugs, errors, features, tools Updates to Chapel's Release Formats From 276bd881b6b32e0a01d4fee0b32fc10f594a9d2b Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Wed, 18 Sep 2024 14:24:37 -0700 Subject: [PATCH 26/29] Remove TODOs / drop blank section --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 74 ------------------------------------------------------ 1 file changed, 74 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index bc780296fc8c..66ec8645895b 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,26 +1,6 @@ Release Changes List ==================== -TODO: -* '(http:' -> '(see http:' -* sort items within categories -* check placement of items into categories -* check sorting of categories -* check for ' vs ` -* fulfill TODOs -* check man page for new compiler flags -* check test/release/examples -* check for docs/1.33/ links -* check forced linebreaks -* check initial '*' -* check initial 'A-Z' -* check 'see:' -* check for changes put too far down in file -o remove empty sections -o check links -* add highlights -* spellcheck - version 2.2 =========== @@ -46,12 +26,6 @@ Updates to Chapel's Release Formats * started publishing a `nightly` Docker image tag (see https://hub.docker.com/r/chapel/chapel) -Updates to Chapel Prerequisites -------------------------------- - -Syntactic / Naming Changes --------------------------- - New Language Features --------------------- * added the ability to define and use custom memory allocators with classes @@ -89,9 +63,6 @@ Deprecated / Unstable / Removed Language Features * removed previously deprecated `assertOnGpu()` routine * improved the deprecation message when using `<=>` on sync variables -Namespace Changes ------------------ - New Standard Library Features ----------------------------- * promoted the 'Sort' package module to be a standard module @@ -136,9 +107,6 @@ Changes / Feature Improvements in Package Modules * added the ability to read a 'Zarr' array using arbitrary target locales (see https://chapel-lang.org/docs/2.2/modules/packages/Zarr.html#Zarr.readZarrArray) -Standard Layouts and Distributions ----------------------------------- - Name Changes in Libraries ------------------------- * renamed the array arguments for `Sort.sort()` and `Sort.isSorted()` @@ -242,9 +210,6 @@ Platform-Specific Documentation Improvements * expanded docs for using Chapel with Windows Subsystem for Linux (WSL) (see https://chapel-lang.org/docs/2.2/platforms/windows.html#using-chapel-on-wsl) -Technical Note Improvements ---------------------------- - Documentation Improvements for Libraries ---------------------------------------- * fixed and improved descriptions of library modules in Chapel's module index @@ -276,12 +241,6 @@ Example Codes (see `$CHPL_HOME/examples/patterns/recordio.chpl`) * updated example codes with respect to 'Sort' and 'Random' module changes -Compilation Time Improvements ------------------------------ - -Generated Code Improvements ---------------------------- - Memory Improvements ------------------- * removed an unnecessary allocation when moving an array value to a typed var @@ -290,9 +249,6 @@ Memory Improvements * fixed a memory leak when using per-locale "static" variables * closed a memory leak when reading with the 'Zarr' package module -Syntax Highlighting -------------------- - Configuration / Build Changes ----------------------------- * added `CHPL_[TARGET|HOST]_JEMALLOC` to specify 'jemalloc' usage and sources @@ -329,9 +285,6 @@ Compiler Flags (see https://chapel-lang.org/docs/2.2/usingchapel/man.html#man-offset-auto-local-access) * extended `--print-commands` to include commands run with `--library-python` -Generated Executable Flags --------------------------- - Error Messages / Semantic Checks -------------------------------- * added an error when incorrectly modifying `const [in]` or default varargs @@ -356,12 +309,6 @@ Error Messages / Semantic Checks * added a warning for ignoring the result of a function capture * improved the surprising shadowing warning to consider enclosing module names -Launchers ---------- - -Runtime Library Improvements ----------------------------- - Third-Party Software Changes ---------------------------- * updated the bundled version of Qthreads to 1.20 @@ -439,19 +386,10 @@ Developer-oriented changes: Documentation * extended the standard module style guide to include more 2.0 decisions (see https://chapel-lang.org/docs/2.2/developer/bestPractices/StandardModuleStyle.html) -Developer-oriented changes: Syntactic / Naming Changes ------------------------------------------------------- - Developer-oriented changes: Module changes ------------------------------------------ * removed queries from the argument lists of the 'Sort' routines -Developer-oriented changes: Performance improvements ----------------------------------------------------- - -Developer-oriented changes: Makefile / Build-time changes ---------------------------------------------------------- - Developer-oriented changes: Compiler Flags ------------------------------------------ * added `--llvm-print-ir-file` to write LLVM IR to a file rather than `stdout` @@ -487,26 +425,14 @@ Developer-oriented changes: 'dyno' Compiler improvements / changes - improved performance of `runAndTrackErrors` API function * improved the performance of `--dyno-scope-bundled` -Developer-oriented changes: GPU support ---------------------------------------- - Developer-oriented changes: Runtime improvements ------------------------------------------------ * added a missing assertion for a non-null pointer -Developer-oriented changes: Platform-specific bug fixes -------------------------------------------------------- - Developer-oriented changes: Testing System ------------------------------------------ * removed the default application of the `-o` flag in the `start_test` system -Developer-oriented changes: Tool Improvements ---------------------------------------------- - -Developer-oriented changes: Utilities -------------------------------------- - version 2.1 =========== From 1e57f033167fbe569e9b651ab22619cfd82bfdf1 Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Wed, 18 Sep 2024 15:26:48 -0700 Subject: [PATCH 27/29] Incorporate Daniel's feedback --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 66ec8645895b..1ecd8ea653ae 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -10,7 +10,7 @@ Highlights (see subsequent sections for further details) -------------------------------------------------------- * several new Linux packages are being released containing multi-locale support * programmers can now define and use custom memory allocators with classes -* remote variable declarations are greatly improved in capabilities & behavior +* remote variable declarations are complete in terms of capabilities & behavior * performance is significantly improved for key array programming patterns * added ROCm 6 support for AMD GPUs, and generally improved GPU features & perf * the 'Sort' module has been revised and promoted to a standard module @@ -34,9 +34,10 @@ New Language Features Language Feature Improvements ----------------------------- -* extended remote variable declarations to support multi-decls and coercions +* remote variable declarations are now fully implemented (see https://chapel-lang.org/docs/2.2/technotes/remote.html) -* remote variable declaration initializers are now evaluated remotely + - initializer expressions are now evaluated on the remote locale + - multi-var declarations and implicit `init=` conversions are now supported * added support for declaring `enum`s within classes * added support for using module-qualified expressions in inheritance decls (e.g., `class Child: MyMod.Parent { ... }`) @@ -98,7 +99,7 @@ Changes / Feature Improvements in Standard Libraries Changes / Feature Improvements in Package Modules ------------------------------------------------- -* added multi-locale support to 'ParallelIO's iterators +* added multi-locale support to iterators in the 'ParallelIO' module (see https://chapel-lang.org/docs/2.2/modules/packages/ParallelIO.html#ParallelIO.readLines) * added support for configurable compressors to the 'Zarr' module (e.g., see https://chapel-lang.org/docs/2.2/modules/packages/Zarr.html#Zarr.writeZarrArray) @@ -247,7 +248,7 @@ Memory Improvements * fixed a memory leak when using loop expressions with empty bodies * fixed a memory leak when ignoring values in `try!` expressions * fixed a memory leak when using per-locale "static" variables -* closed a memory leak when reading with the 'Zarr' package module +* fixed a memory leak when reading with the 'Zarr' package module Configuration / Build Changes ----------------------------- From 7ee3cfa5d8a235cc113ba11251f0f0196211e48f Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Wed, 18 Sep 2024 15:32:37 -0700 Subject: [PATCH 28/29] quotes check --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 1ecd8ea653ae..8ee0d5bbcbcd 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -93,7 +93,7 @@ Changes / Feature Improvements in Standard Libraries * added multi-dimensional support to several `randomStream` methods (see https://chapel-lang.org/docs/2.2/modules/standard/Random.html#Random.randomStream.shuffle) * added support for passing distributed arrays to `c_addrOf()` -* made 'sendPosixSignal()' throw an `IllegalArgumentError` for bad signals +* made `sendPosixSignal()` throw an `IllegalArgumentError` for bad signals (see https://chapel-lang.org/docs/2.2/modules/standard/Subprocess.html#Subprocess.subprocess.sendPosixSignal) * improved the error message for calling `sort()` on unsupported types @@ -135,7 +135,7 @@ Deprecated / Unstable / Removed Library Features * removed deprecated `locking=true` overloads of `open[Reader|Writer]()` * removed deprecated `IllegalArgumentError` overloads in the 'Errors' module * removed the deprecated `RandomStream` class and `randomStream` methods -* removed the deprecated `RandomSupport` and `PCGRandom` submodules +* removed the deprecated 'RandomSupport' and 'PCGRandom' submodules Performance Optimizations / Improvements ---------------------------------------- @@ -319,7 +319,7 @@ Bug Fixes --------- * fixed a bug in `scan` expressions over non-`int(64)` indices * fixed alignment for records whose fields are a mix of `extern` types and non- -* fixed a bug in which the compiler incorrectly complained about missing '(?)` +* fixed a bug in which the compiler incorrectly complained about missing `(?)` * fixed bugs in auto local-access/aggregation optimizations for local arrays * fixed an automatic-local-access bug for certain poorly aligned zippered loops * fixed a bug in which certain rank-change slices failed to compile From f728f06e8ae5e826924e491cf239d0b42815ec2a Mon Sep 17 00:00:00 2001 From: Brad Chamberlain Date: Thu, 19 Sep 2024 10:01:25 -0700 Subject: [PATCH 29/29] Incorporate fixes for Michael's comments and links check --- Signed-off-by: Brad Chamberlain --- CHANGES.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 8ee0d5bbcbcd..caa15156518f 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -154,7 +154,7 @@ GPU Computing * added support for ROCm 6 (see https://chapel-lang.org/docs/2.2/technotes/gpu.html#requirements) * improved performance for certain kernels on multi-GPU locales -* added a new `@gpu.assertElligible` attribute for compile-time GPU checks +* added a new `@gpu.assertEligible` attribute for compile-time GPU checks (see https://chapel-lang.org/docs/2.2/modules/standard/GPU.html#GPU.@gpu.assertEligible) * added a new `@gpu.itersPerThread` attribute to control blocking iterations (see https://chapel-lang.org/docs/2.2/modules/standard/GPU.html#GPU.@gpu.itersPerThread) @@ -200,8 +200,7 @@ Language Specification Improvements * added a section describing the implicit `this.` in methods (see https://chapel-lang.org/docs/2.2/language/spec/methods.html#implicit-this-in-methods) * clarified that terminating null bytes are optional on string/bytes buffers - (see https://chapel-lang.org/docs/2.2/language/spec/strings.html - and https://chapel-lang.org/docs/2.2/language/spec/bytes.html) + (e.g., see https://chapel-lang.org/docs/2.2/language/spec/strings.html#String.string.createAdoptingBuffer) * added examples of distribution factory methods (see https://chapel-lang.org/docs/2.2/language/spec/domain-maps.html#distributions-for-domain-types) * searching for `init=` now finds the relevant language spec documentation