|
1 | 1 | Release Changes List
|
2 | 2 | ====================
|
3 | 3 |
|
4 |
| -version 2.3.1 |
5 |
| -============= |
| 4 | +version 2.4 |
| 5 | +=========== |
| 6 | + |
| 7 | +released March 20, 2025 |
| 8 | + |
| 9 | +Highlights (see subsequent sections for further details) |
| 10 | +-------------------------------------------------------- |
| 11 | +* significantly improved the features and ergonomics of the `Python` module |
| 12 | +* improved parallel iteration and zippering over standard `set` and `map` types |
| 13 | +* added support for multi-dimensional array literals like `[11, 12; 21, 22]` |
| 14 | +* added the ability to query the number of co-locales running on a node |
| 15 | +* added support for building Chapel projects with CMake |
| 16 | +* added custom settings, location-based rules, and docs to the linter |
| 17 | +* improved the 'dyno' compiler front-end's ability to resolve types and values |
| 18 | +* significantly revamped the Chapel website at https://chapel-lang.org/ |
| 19 | +* made many other improvements in terms of bug fixes, errors, docs, etc. |
| 20 | + |
| 21 | +Updates to Chapel Prerequisites |
| 22 | +------------------------------- |
| 23 | +* raised the minimum version of Clang required to build Chapel to 11.0 |
| 24 | + (see https://chapel-lang.org/docs/2.4/usingchapel/prereqs.html) |
| 25 | + |
| 26 | +New Language Features |
| 27 | +--------------------- |
| 28 | +* added support for multi-dimensional array literals |
| 29 | + (e.g., `[1.2, 3.4; 5.6, 7.8]` creates a 2x2 array value |
| 30 | + see https://chapel-lang.org/docs/2.4/language/spec/arrays.html#rectangular-array-literals) |
| 31 | +* added the ability to cast arrays to array types of the same size / shape |
| 32 | + (e.g., `[1.2, 3.4, 5.6]: [1..6 by 2] real(32)` is now supported) |
| 33 | +* added `locale.numColocales` to query the number of co-locales on a node |
| 34 | + (see https://chapel-lang.org/docs/2.4/language/spec/locales.html#ChapelLocale.locale.numColocales) |
6 | 35 |
|
7 |
| -released February 7, 2025 |
| 36 | +Language Feature Improvements |
| 37 | +----------------------------- |
| 38 | +* added initial support for throwing `postinit()` procedures |
| 39 | + (see https://chapel-lang.org/docs/2.4/technotes/throwingInit.html#declaring-throwing-initializers) |
| 40 | + |
| 41 | +Deprecated / Unstable / Removed Language Features |
| 42 | +------------------------------------------------- |
| 43 | +* removed support for the deprecated `lambda` keyword |
| 44 | +* removed support for the deprecated `object` and `c_string` types |
| 45 | +* removed the deprecated `chpl_task_yield()` procedure |
| 46 | +* removed the deprecated `newSliceRule` config param |
| 47 | + |
| 48 | +New Standard Library Features |
| 49 | +----------------------------- |
| 50 | +* added an optional `sep` argument to `[fileWriter.]write[ln]()` in `IO` |
| 51 | + (see https://chapel-lang.org/docs/2.4/modules/standard/IO.html#IO.fileWriter.write |
| 52 | + and https://chapel-lang.org/docs/2.4/modules/standard/IO.html#IO.write) |
| 53 | +* added `timeDelta.total[Milli|Micro]seconds()` to the `Time` module |
| 54 | + (see https://chapel-lang.org/docs/2.4/modules/standard/Time.html#Time.timeDelta.totalMilliseconds) |
| 55 | +* added `heap.clear()` to the `Heap` module |
| 56 | + (see https://chapel-lang.org/docs/2.4/modules/standard/Heap.html#Heap.heap.clear) |
| 57 | +* added support for C's `wchar_t` type in `CTypes`, named `c_wchar_t` |
| 58 | + (see https://chapel-lang.org/docs/2.4/modules/standard/CTypes.html#CTypes.c_wchar_t) |
| 59 | + |
| 60 | +Changes / Feature Improvements in Standard Libraries |
| 61 | +---------------------------------------------------- |
| 62 | +* improved iterators on `set`s to support zippering with other sets and types |
| 63 | + (see https://chapel-lang.org/docs/2.4/modules/standard/Set.html#Set.set.these) |
| 64 | +* added support for `forall` loops over `map.keys()` and `map.values()` |
| 65 | + (see https://chapel-lang.org/docs/2.4/modules/standard/Map.html#Map.map.keys |
| 66 | + and https://chapel-lang.org/docs/2.4/modules/standard/Map.html#Map.map.values) |
| 67 | +* added a `fileReader.extractMatch()` overload that returns a value to `IO` |
| 68 | + (see https://chapel-lang.org/docs/2.4/modules/standard/IO/FormattedIO.html#FormattedIO.fileReader.extractMatch) |
| 69 | +* extended `CTypes.c_addrOf[Const]()` to accept domains and distributed arrays |
| 70 | + |
| 71 | +New Package Module Features |
| 72 | +--------------------------- |
| 73 | +* added support for importing Python code declared as a string |
| 74 | + (see https://chapel-lang.org/docs/2.4/modules/packages/Python.html#Python.Interpreter.importModule) |
| 75 | +* added support for loading Python code from a Python pickle |
| 76 | + (see https://chapel-lang.org/docs/2.4/modules/packages/Python.html#Python.Interpreter.load) |
| 77 | +* added the ability to pass Chapel arrays to Python without copying |
| 78 | + (see https://chapel-lang.org/docs/2.4/modules/packages/Python.html#Python.Array) |
| 79 | +* added the ability to use Python arrays from within Chapel without copying |
| 80 | + (see https://chapel-lang.org/docs/2.4/modules/packages/Python.html#Python.PyArray) |
| 81 | +* added support for using Python `list`, `dict`, and `set` types in Chapel |
| 82 | + (see https://chapel-lang.org/docs/2.4/modules/packages/Python.html#Python.PyList, |
| 83 | + https://chapel-lang.org/docs/2.4/modules/packages/Python.html#Python.PyDict, |
| 84 | + and https://chapel-lang.org/docs/2.4/modules/packages/Python.html#Python.PySet) |
| 85 | +* added an option to turn off `Python` module error handling for performance |
| 86 | + (see https://chapel-lang.org/docs/2.4/modules/packages/Python.html#Python.checkExceptions) |
| 87 | +* added a `victimPolicy` enum to `DistributedBag` and its `.remove()` method |
| 88 | + (see https://chapel-lang.org/docs/2.4/modules/packages/DistributedBag.html#DistributedBag.victimPolicy |
| 89 | + and https://chapel-lang.org/docs/2.4/modules/packages/DistributedBag.html#DistributedBag.DistributedBagImpl.remove) |
| 90 | + |
| 91 | +Changes / Feature Improvements in Package Modules |
| 92 | +------------------------------------------------- |
| 93 | +* improved the `Python` module's API in several ways: |
| 94 | + - added a new `Value` superclass from which many other classes derive |
| 95 | + (see https://chapel-lang.org/docs/2.4/modules/packages/Python.html#Python.Value) |
| 96 | + - used the new `Value` class to simplify other Python objects' interfaces |
| 97 | + - removed the `ClassObject` class in favor of `Value` |
| 98 | + - added new method-based replacements for the previous object-based API |
| 99 | + (e.g., `new Function(mod, 'foo')` can now be written `mod.get('foo')`) |
| 100 | + - allowed omitting the return type on certain Python operations |
| 101 | + (e.g., `val.get(owned Value, "xyz")` can now be written `val.get("xyz")`) |
| 102 | +* added a Python `Interpreter.flush()` method to flush standard streams |
| 103 | + (see https://chapel-lang.org/docs/2.4/modules/packages/Python.html#Python.Interpreter.flush) |
| 104 | +* improved the `Python` module's integration with Chapel's threading model |
| 105 | +* improved the `Python` module's reference counting |
| 106 | +* adjusted `CopyAggregation`'s flush methods to optionally free the buffers |
| 107 | + (see https://chapel-lang.org/docs/2.4/modules/packages/CopyAggregation.html#CopyAggregation.DstAggregator.flush) |
| 108 | +* added `ref` intents to `.flush()` in `CopyAggregation` to avoid warnings |
| 109 | + (see https://chapel-lang.org/docs/2.4/modules/packages/CopyAggregation.html#CopyAggregation.DstAggregator.flush) |
| 110 | + |
| 111 | +Deprecated / Unstable / Removed Library Features |
| 112 | +------------------------------------------------ |
| 113 | +* deprecated the `HDFS` module |
| 114 | + (see https://chapel-lang.org/docs/2.4/modules/packages/HDFS.html) |
| 115 | +* removed deprecated `imag`->`complex` trig routines in the `Math` module |
| 116 | +* removed methods on `map` that had previously been deprecated in `Map` |
| 117 | +* removed deprecated features from the `Version` module |
| 118 | +* removed deprecated `CTypes` capabilities, like `c_void_ptr` |
| 119 | +* removed deprecated `CodepointSplittingError` from the `Errors` module |
| 120 | +* removed deprecated routines from the `MemMove` module |
| 121 | + |
| 122 | +Tool Improvements |
| 123 | +----------------- |
| 124 | +* added support for building Chapel projects with CMake |
| 125 | + (see https://chapel-lang.org/docs/2.4/usingchapel/compiling.html#cmake) |
| 126 | +* added support for creating linter rules with custom settings |
| 127 | + (see https://chapel-lang.org/docs/2.4/tools/chplcheck/chplcheck.html#rule-specific-settings) |
| 128 | +* added support for text-location-only-based linter rules |
| 129 | + (see https://chapel-lang.org/docs/2.4/tools/chplcheck/chplcheck.html#location-rules) |
| 130 | +* added a new 'LineLength' linter rule |
| 131 | + (see https://chapel-lang.org/docs/2.4/tools/chplcheck/chplcheck.html#linelength) |
| 132 | +* allowed a single `chapel-py` build to be used with many Python versions |
| 133 | +* `chplvis` now relies on a system install of `fltk` rather than bundling it |
| 134 | + (see https://chapel-lang.org/docs/2.4/tools/chplvis/chplvis.html#setup) |
| 135 | + |
| 136 | +Documentation Improvements |
| 137 | +-------------------------- |
| 138 | +* updated URLs in the documentation to reflect the new website's organization |
| 139 | +* refreshed the list of actively tested GPU configurations |
| 140 | + (see https://chapel-lang.org/docs/2.4/technotes/gpu.html#tested-configurations) |
| 141 | +* added a section to the GPU tech note about halting from GPU kernels |
| 142 | + (see https://chapel-lang.org/docs/2.4/technotes/gpu.html#gpu-based-halting) |
| 143 | +* added missing documentation for Slurm launcher flags and environment vars |
| 144 | + (see https://chapel-lang.org/docs/2.4/usingchapel/launcher.html#using-slurm) |
| 145 | +* added documentation clarifying uses of GASNet with InfiniBand and Omni-Path |
| 146 | + (see https://chapel-lang.org/docs/2.4/platforms/infiniband.html#selecting-a-spawner |
| 147 | + and https://chapel-lang.org/docs/2.4/platforms/omnipath.html#selecting-a-spawner) |
| 148 | +* updated the UDP docs to mention a case where `CHPL_RT_MASTERIP` can help |
| 149 | + (see https://chapel-lang.org/docs/2.4/platforms/udp.html#i-get-worker-failed-dnslookup-on-master-host-name-error-messages) |
| 150 | +* fixed a bug in which `ChapelSysCTypes` was documented twice |
| 151 | +* made numerous other minor changes, fixes, and improvements to documentation |
| 152 | + |
| 153 | +Language Specification Improvements |
| 154 | +----------------------------------- |
| 155 | +* rewrote some examples in the spec to avoid an undesirable busy-wait loop |
| 156 | + (see https://chapel-lang.org/docs/2.4/language/spec/memory-consistency-model.html#examples) |
| 157 | +* updated sample code in the 'Types' chapter to be more inclusive |
| 158 | +* removed documentation for no-longer-supported type comparisons like `<=` |
| 159 | + |
| 160 | +Documentation Improvements for Libraries |
| 161 | +---------------------------------------- |
| 162 | +* clarified documentation for `IO.file.init()` |
| 163 | + (see https://chapel-lang.org/docs/2.4/modules/standard/IO.html#IO.file.init) |
| 164 | + |
| 165 | +Documentation Improvements for Tools |
| 166 | +------------------------------------ |
| 167 | +* added documentation for `chplcheck` linter rules |
| 168 | + (see https://chapel-lang.org/docs/2.4/tools/chplcheck/chplcheck.html#current-rules) |
| 169 | +* clarified build requirements for `chapel-py` |
| 170 | + (see https://chapel-lang.org/docs/2.4/tools/chapel-py/chapel-py.html#installation) |
| 171 | + |
| 172 | +Platform-Specific Documentation Improvements |
| 173 | +-------------------------------------------- |
| 174 | +* updated documentation on binary packages for WSL |
| 175 | + (see https://chapel-lang.org/docs/2.4/platforms/windows.html) |
| 176 | + |
| 177 | +Example Codes |
| 178 | +------------- |
| 179 | +* updated the HPCC benchmarks to compute good problem sizes for co-locales |
| 180 | + (see `$CHPL_HOME/examples/benchmarks/hpcc/HPCCProblemSize.chpl`) |
| 181 | + |
| 182 | +Performance Optimizations / Improvements |
| 183 | +---------------------------------------- |
| 184 | +* extended the array view elision optimization to arrays of distinct types |
| 185 | + (e.g. `LocalArr[x..y] = DistArr[z..t]` is now optimized) |
| 186 | +* removed unnecessary checks in `Math.log2()` when `--no-checks` is used |
| 187 | + |
| 188 | +Updates to Chapel's Release Formats |
| 189 | +----------------------------------- |
| 190 | +* updated our Dockerfile to use default dependency versions/the latest base OS |
| 191 | + |
| 192 | +Configuration / Build Changes |
| 193 | +----------------------------- |
| 194 | +* moved warnings from `printchplenv` to the end of its output for clarity |
| 195 | +* renamed `CHPL_MEM` to `CHPL_TARGET_MEM` |
| 196 | + (see https://chapel-lang.org/docs/2.4/usingchapel/chplenv.html#chpl-mem) |
| 197 | +* added checking that `CHPL_UNWIND` is set to a valid value |
| 198 | +* added the ability to infer `CHPL_LLVM_GCC_INSTALL_DIR` when needed |
| 199 | + (see https://chapel-lang.org/docs/2.4/usingchapel/chplenv.html#chpl-llvm-gcc-install-dir) |
8 | 200 |
|
9 |
| -This version is an update to the 2.3 release to address a build issue |
10 |
| -that can sometimes arise when a system has multiple versions of LLVM |
11 |
| -installed. |
| 201 | +GPU Computing |
| 202 | +------------- |
| 203 | +* removed support for CUDA versions older than 11.7 |
| 204 | + |
| 205 | +Portability / Platform-specific Improvements |
| 206 | +-------------------------------------------- |
| 207 | +* fixed a compilation error about missing `inet_aton()` on FreeBSD 13 and 14 |
| 208 | +* improved the `Python` module's handling of the system Python environment |
| 209 | + |
| 210 | +Compiler Flags |
| 211 | +-------------- |
| 212 | +* changed the `--mem` flag to `--target-mem` to match `CHPL_TARGET_MEM` |
| 213 | + |
| 214 | +Error Messages / Semantic Checks |
| 215 | +-------------------------------- |
| 216 | +* improved error messages for out-of-bounds accesses to tuple elements |
| 217 | +* improved and added detailed error messages for use-before-definition errors |
| 218 | +* added specialized error messages for defining a variable in terms of itself |
| 219 | +* improved error messages reported by the `Sort` module for unsupported types |
| 220 | + |
| 221 | +Runtime Library Improvements |
| 222 | +---------------------------- |
| 223 | +* updated the runtime for `CHPL_COMM=ofi` to support libfabric 2.x |
| 224 | +* increased the default/max number of threads supported by `CHPL_COMM=gasnet` |
| 225 | +* added a warning when `CHPL_COMM` reduces the # of threads below `maxTaskPar` |
| 226 | + |
| 227 | +Third-Party Software Changes |
| 228 | +---------------------------- |
| 229 | +* updated the bundled version of GASNet to GASNet-2025.2.0-snapshot |
| 230 | +* applied a performance fix to the bundled version of Qthreads |
| 231 | +* removed the bundled copy of `fltk` due to portability/maintenance challenges |
| 232 | + |
| 233 | +Bug Fixes |
| 234 | +--------- |
| 235 | +* fixed an issue where variables of `extern` types were not default initialized |
| 236 | +* fixed an internal error for `extern` return types in multilocale programs |
| 237 | +* fixed an internal error when erroneously writing `super.init` twice |
| 238 | +* fixed an internal error when assigning a type to a value |
| 239 | +* fixed a bug permitting `range` type args to be used before they were defined |
| 240 | +* fixed a bug in which `nothing` tuples were not properly cleaned up |
| 241 | +* fixed arbitrary-length args and dependency paths in the compiler and runtime |
| 242 | +* removed an extraneous error when using `--no-ieee-float` with the C backend |
| 243 | + |
| 244 | +Bug Fixes for Libraries |
| 245 | +----------------------- |
| 246 | +* fixed various issues with `BigInteger` on 32-bit platforms |
| 247 | +* fixed an ABI incompatibility bug between the `GMP` module and LLVM |
| 248 | +* fixed a bug preventing `map`s to be passed into `const ref` formals |
| 249 | +* fixed a bug with `distBag.addBulk()` when the input was not 0-based |
| 250 | +* fixed a free of a non-allocated address in the `CopyAggregation` module |
| 251 | +* fixed a bug with `MemDiagnostics.allocations()` on 32-bit systems |
| 252 | +* partially fixed a bug with catching errors thrown from `fromJson` |
| 253 | +* fixed the handling of comments inside arrays for the `TOML` package |
| 254 | +* fixed a bug causing hangs in some `Socket` module functions |
| 255 | +* fixed a bug to be able to pass `real`s as timeouts in `Socket` subroutines |
| 256 | + |
| 257 | +Bug Fixes for GPU Computing |
| 258 | +--------------------------- |
| 259 | +* fixed the use of `make check` with the GPU locale model |
| 260 | +* fixed an assertion failure when using `CHPL_GPU=amd` |
| 261 | + |
| 262 | +Bug Fixes for Tools |
| 263 | +------------------- |
| 264 | +* fixed the wrong linter sometimes being used when run with the language server |
| 265 | +* fixed name-based linting for `extern` symbols |
| 266 | +* fixed incorrect linter warnings for unused tuple unpacks |
| 267 | +* fixed the linter's textual locations for various statement types and rules |
| 268 | +* fixed a bug where a bad `RPATH` could be embedded in the `chapel-py` library |
| 269 | +* fixed an issue with extra arguments passed to `c2chapel` on MacOS |
| 270 | +* fixed `mason test` for prefix-based installs |
| 271 | + |
| 272 | +Bug Fixes for Build Issues |
| 273 | +-------------------------- |
| 274 | +* fixed LLVM path deduction logic when multiple LLVM versions are installed |
| 275 | +* avoided overriding the default sysroot when using a system version of Clang |
| 276 | +* fixed `CHPL_DEVELOPER` not being respected when set to a falsy value |
| 277 | +* squashed `pathchk` error output from `./configure` commands |
| 278 | + |
| 279 | +Bug Fixes for the Runtime |
| 280 | +------------------------- |
| 281 | +* fixed a seg fault when using `CHPL_TASKS=fifo` with `CHPL_COMM=gasnet` |
| 282 | +* fixed a bug with the `CHPL_LAUNCHER_USE_SBATCH` implementation |
| 283 | +* fixed a bug where Slurm-based launchers didn't preserve quoted string args |
| 284 | +* fixed a bug with temporary filenames in PBS-based launchers |
| 285 | +* fixed a bug in message buffer management for `CHPL_COMM=ofi` |
| 286 | + |
| 287 | +Developer-oriented changes: Documentation |
| 288 | +----------------------------------------- |
| 289 | +* updated the instructions for building the Chapel CI Docker image |
| 290 | + |
| 291 | +Developer-oriented changes: Module changes |
| 292 | +------------------------------------------ |
| 293 | +* used the new `Value` class to clean up the `Python` module's implementation |
| 294 | +* added a `CTypes` module when using minimal modules, enabling C interop |
| 295 | + |
| 296 | +Developer-oriented changes: Makefile / Build-time changes |
| 297 | +--------------------------------------------------------- |
| 298 | +* added scripts to update the Chapel version numbers in files that store them |
| 299 | +* fixed a developer build issue with GCC 14 with C++ template arguments |
| 300 | +* avoided spurious build warnings with MPICH 4 and GCC 12 when `WARNINGS=1` |
| 301 | +* fixed documentation builds in dirty source trees for `chapel-py` |
| 302 | +* added support for building a subset of LLVM targets |
| 303 | +* added support for setting `CHPL_PYTHON` to switch Python versions |
| 304 | + |
| 305 | +Developer-oriented changes: Compiler improvements / changes |
| 306 | +----------------------------------------------------------- |
| 307 | +* updated compiler paths from using fixed buffers to arbitrary-length strings |
| 308 | +* removed warnings for 1.32 behavior changes in `chpl_comm_{get,put}()` prims |
| 309 | + |
| 310 | +Developer-oriented changes: 'dyno' Compiler improvements / changes |
| 311 | +------------------------------------------------------------------ |
| 312 | +* added support for bad split-initialization detection and errors |
| 313 | +* added detailed errors for failed implicit `super` calls |
| 314 | +* made numerous improvements to the 'dyno' resolver for types and calls: |
| 315 | + - enabled `for param` loops over more range types |
| 316 | + - added support for associative domain types and literals via modules |
| 317 | + - added initial support for `subdomain` and `sparse subdomain` |
| 318 | + - added support for rectangular/associative array type exprs via modules |
| 319 | + - enabled converting iterable expressions into arrays |
| 320 | + - added support for `.locale` queries |
| 321 | + - added support for `manage` statements and context managers |
| 322 | + - added support for `let` expressions |
| 323 | + - enabled iteration over heterogeneous tuples |
| 324 | + - enabled unpacking tuples yielded from `zip` expressions |
| 325 | + - added support for checking interface constraints |
| 326 | + - enabled importing tertiary methods via `use`/`import` limitations |
| 327 | + - added basic support for resolution of nested types |
| 328 | + - enabled resolving enums nested in procedures |
| 329 | + - added support for `compilerError()` and `compilerWarning()` routines |
| 330 | + - added support for file-related reflection routines (e.g., `getLineNumber`) |
| 331 | + - added support for several primitives |
| 332 | + - fixed a bug accessing fields within a module with the same name |
| 333 | + - improved disambiguation process between callable objects and functions |
| 334 | + - fixed ambiguities between forwarded methods and non-forwarded routines |
| 335 | + - fixed handling of `if var` declarations and its generated `=` call |
| 336 | + - implemented numerous bug fixes and stability improvements |
| 337 | +* added support for several language features to the typed dyno->prod converter |
| 338 | + |
| 339 | +Developer-oriented changes: Runtime improvements |
| 340 | +------------------------------------------------ |
| 341 | +* added logic to avoid calls to `memalign()` with `size=0` |
| 342 | +* updated runtime paths from using fixed buffers to arbitrary-length strings |
| 343 | + |
| 344 | +Developer-oriented changes: Testing System |
| 345 | +------------------------------------------ |
| 346 | +* improved logging for `.skipif` and `.suppressif` files in the test output |
| 347 | +* fixed `sub_clean`, which was not properly cleaning up symlinks |
| 348 | +* fixed `prediff-for-slurm` to handle output that is not UTF-8 |
| 349 | +* enabled timing 'dyno' queries across revisions in `testInteractive` |
| 350 | + |
| 351 | +Developer-oriented changes: Utilities |
| 352 | +------------------------------------- |
| 353 | +* fixed a copyright update script bug that caused end-years to be repeated |
12 | 354 |
|
13 | 355 |
|
14 | 356 | version 2.3
|
@@ -1219,7 +1561,7 @@ Developer-oriented changes: 'dyno' Compiler improvements / changes
|
1219 | 1561 | - fixed a bug disambiguating between `unmanaged` and `borrowed` formals
|
1220 | 1562 | - fixed a resolver crash due to circular forwarding statements
|
1221 | 1563 | * improved performance when using `--dyno-scope-bundled`
|
1222 |
| -* fixed how Dyno prints booleans to match the production compiler |
| 1564 | +* fixed how 'dyno' prints booleans to match the production compiler |
1223 | 1565 |
|
1224 | 1566 | Developer-oriented changes: Testing System
|
1225 | 1567 | ------------------------------------------
|
|
0 commit comments