|
1 | 1 | Release Changes List |
2 | 2 | ==================== |
3 | 3 |
|
| 4 | +version 2.5 |
| 5 | +=========== |
| 6 | + |
| 7 | +released June 12, 2025 |
| 8 | + |
| 9 | +Highlights (see subsequent sections for further details) |
| 10 | +-------------------------------------------------------- |
| 11 | +* extended the standard `sort()` routine to support block-distributed arrays |
| 12 | +* added a new package module supporting dynamic loading/calling of C functions |
| 13 | +* improved debugging support through compiler, library, and VSCode features |
| 14 | +* added a new 'edition' feature in support of experimental breaking changes |
| 15 | +* added a new `reshape()` implementation that supports aliasing of arrays |
| 16 | +* made several improvements to the `Python` module for Python interoperability |
| 17 | +* added a draft technical note describing optimization of Chapel programs |
| 18 | +* added new `CHPL_*MEM=mimalloc` and `CHPL_*PLATFORM=hpe-cray-xd` options |
| 19 | +* added validation checks of `CHPL_*` values to make sure they are legal |
| 20 | +* updated the compiler to support LLVM 20 when targeting CPUs |
| 21 | +* improved the new 'dyno' front-end's ability to resolve and lower features |
| 22 | +* made many other improvements in terms of bug fixes, errors, docs, etc. |
| 23 | + |
| 24 | +New Language Features |
| 25 | +--------------------- |
| 26 | +* added an 'edition' feature that enables opting in to breaking changes |
| 27 | + (see https://chapel-lang.org/docs/2.5/technotes/editions.html) |
| 28 | +* added a new, prototype `reshape()` implementation that aliases array data |
| 29 | + (see https://chapel-lang.org/docs/2.5/language/spec/arrays.html#ChapelArray.reshape) |
| 30 | + |
| 31 | +Language Feature Improvements |
| 32 | +----------------------------- |
| 33 | +* made `init()`/`postinit()` calls that `throw` deinit the object's fields |
| 34 | + (see https://chapel-lang.org/docs/2.5/technotes/throwingInit.html#declaring-throwing-initializers) |
| 35 | +* added support for `noinit` remote variable declarations |
| 36 | + (e.g., `on someLocale var A: [1..10] real = noinit;`) |
| 37 | + |
| 38 | +Deprecated / Unstable / Removed Language Features |
| 39 | +------------------------------------------------- |
| 40 | +* removed support for `keyPart` methods that return an integral section |
| 41 | + |
| 42 | +New Standard Library Features |
| 43 | +----------------------------- |
| 44 | +* extended the standard `sort()` routine to handle block-distributed arrays |
| 45 | + (see https://chapel-lang.org/docs/2.5/modules/standard/Sort.html#Sort.sort) |
| 46 | +* added `debugTrap` to the `Debugger` module to generate a HW debug exception |
| 47 | + (see https://chapel-lang.org/docs/2.5/modules/standard/Debugger.html#Debugger.debugTrap) |
| 48 | +* added a `disableDebugTrap` config to turn `debugTrap` into a no-op |
| 49 | + (see https://chapel-lang.org/docs/2.5/modules/standard/Debugger.html#Debugger.disableDebugTraps) |
| 50 | + |
| 51 | +New Package Module Features |
| 52 | +--------------------------- |
| 53 | +* added a new `DynamicLoading` package module to load dynamic libraries |
| 54 | + (see https://chapel-lang.org/docs/2.5/modules/packages/DynamicLoading.html) |
| 55 | + |
| 56 | +* added support for anonymous Python modules to the `Python` interop module |
| 57 | + (see https://chapel-lang.org/docs/2.5/modules/packages/Python.html#Python.Interpreter.createModule) |
| 58 | +* added support for Python tuple types to the `Python` module |
| 59 | + (see https://chapel-lang.org/docs/2.5/modules/packages/Python.html#Python.PyTuple) |
| 60 | +* expanded `PyArray` support for multi-dimensional arrays |
| 61 | + (see https://chapel-lang.org/docs/2.5/modules/packages/Python.html#Python.PyArray) |
| 62 | +* added support for native Chapel iteration on Python objects |
| 63 | + (see https://chapel-lang.org/docs/2.5/modules/packages/Python.html#Python.Value.these) |
| 64 | +* added support for native Chapel operators on Python objects |
| 65 | + (see https://chapel-lang.org/docs/2.5/modules/packages/Python.html#Python.+) |
| 66 | +* added support for casting from various Python types to Chapel types |
| 67 | + (see [https://chapel-lang.org/docs/2.5/modules/packages/Python.html#Python.Value.:](https://chapel-lang.org/docs/2.5/modules/packages/Python.html#Python.Value.:)) |
| 68 | +* added additional methods for Python `list` types to the `Python` module |
| 69 | + (see https://chapel-lang.org/docs/2.5/modules/packages/Python.html#Python.PyList) |
| 70 | +* added `.repr()` to get the debug string representation of a Python object |
| 71 | + (see https://chapel-lang.org/docs/2.5/modules/packages/Python.html#Python.Value.repr) |
| 72 | +* added `Python.[get|set|del]()` to interact with Python's global state |
| 73 | + (see https://chapel-lang.org/docs/2.5/modules/packages/Python.html#Python.Interpreter.get) |
| 74 | +* added an `assertRegexMatch()` procedure to the `UnitTest` module |
| 75 | + (see https://chapel-lang.org/docs/2.5/modules/packages/UnitTest.html#UnitTest.Test.assertRegexMatch) |
| 76 | + |
| 77 | +Changes / Feature Improvements in Package Modules |
| 78 | +------------------------------------------------- |
| 79 | +* improved memory allocation in the `Image` module |
| 80 | + |
| 81 | +Deprecated / Unstable / Removed Library Features |
| 82 | +------------------------------------------------ |
| 83 | +* removed the previously deprecated `.sort()` method on the `list` type |
| 84 | +* removed the previously deprecated `.compare()` methods in the `Sort` module |
| 85 | +* removed the previously deprecated `[Default|Reverse]Comparator` types |
| 86 | + |
| 87 | +Compiler Flags |
| 88 | +-------------- |
| 89 | +* added a new `--edition` flag to control the edition used by the compiler |
| 90 | + (see https://chapel-lang.org/docs/2.5/usingchapel/man.html#man-edition) |
| 91 | + |
| 92 | +Compiler Improvements |
| 93 | +--------------------- |
| 94 | +* added support for directly naming library files on the `chpl` command-line |
| 95 | + (see https://chapel-lang.org/docs/2.5/technotes/extern.html#expressing-dependencies) |
| 96 | +* added support for LLVM 20 |
| 97 | +* fixed debug info generated by LLVM for module-scope variables and formals |
| 98 | +* based the suffix used for `--library --dynamic` files on the target platform |
| 99 | +* resolved warnings about unused `-c` flags when parsing `extern` blocks |
| 100 | + |
| 101 | +Tool Improvements |
| 102 | +----------------- |
| 103 | +* improved support for debugging within VSCode |
| 104 | + (see https://chapel-lang.org/docs/2.5/usingchapel/editor-support.html#debugging-in-vscode) |
| 105 | +* added external library linking support to Chapel's CMake support |
| 106 | + (see https://chapel-lang.org/docs/2.5/usingchapel/compiling.html#cmake) |
| 107 | +* enabled displaying 'dyno' resolution errors in `chpl-language-server` (CLS) |
| 108 | +* added support for editor-agnostic config files in CLS and `chplcheck` |
| 109 | + (see https://chapel-lang.org/docs/2.5/tools/chplcheck/chplcheck.html#configuration-files |
| 110 | + and https://chapel-lang.org/docs/2.5/tools/chpl-language-server/chpl-language-server.html#configuration-files) |
| 111 | +* updated `chplcheck` to avoid linting `extern` functions prefixed with `chpl_` |
| 112 | +* enabled Python `str` and `repr` methods on AST nodes in `chapel-py` |
| 113 | +* added a script to generate arguments when compiling Python interop code |
| 114 | + (see https://chapel-lang.org/docs/2.5/modules/packages/Python.html#compiling-chapel-code) |
| 115 | + |
| 116 | +Documentation Improvements |
| 117 | +-------------------------- |
| 118 | +* improved quickstart documentation to suggest binary releases |
| 119 | + (see https://chapel-lang.org/docs/2.5/usingchapel/QUICKSTART.html) |
| 120 | +* improved documentation for debugging programs with the LLVM backend |
| 121 | + (see https://chapel-lang.org/docs/2.5/usingchapel/debugging.html#best-known-configuration-llvm-backend) |
| 122 | +* made the co-locale documentation more searchable |
| 123 | +* generally fixed typos, mistakes, and other small issues in the docs |
| 124 | + |
| 125 | +Language Specification Improvements |
| 126 | +----------------------------------- |
| 127 | +* updated some tests and descriptions of `init=` to bring them up-to-date |
| 128 | + (see https://chapel-lang.org/docs/2.5/language/spec/records.html#mixed-type-copy-initialization) |
| 129 | + |
| 130 | +Documentation Improvements for Libraries |
| 131 | +---------------------------------------- |
| 132 | +* made the `Sort` and `Image` module code examples testable |
| 133 | + |
| 134 | +Technical Note Improvements |
| 135 | +--------------------------- |
| 136 | +* added a draft technote describing how to optimize Chapel programs |
| 137 | + (see https://chapel-lang.org/docs/2.5/technotes/optimization.html) |
| 138 | + |
| 139 | +Configuration / Build Changes |
| 140 | +----------------------------- |
| 141 | +* added `mimalloc` as a new option for `CHPL_*_MEM` |
| 142 | + (see https://chapel-lang.org/docs/2.5/usingchapel/chplenv.html#chpl-target-mem |
| 143 | + and https://chapel-lang.org/docs/2.5/usingchapel/chplenv.html#chpl-host-mem) |
| 144 | +* added `hpe-cray-xd` as a `CHPL_*_PLATFORM` option for HPE Cray XD systems |
| 145 | + (see https://chapel-lang.org/docs/2.5/usingchapel/chplenv.html#chpl-host-platform |
| 146 | + and https://chapel-lang.org/docs/2.5/usingchapel/chplenv.html#chpl-target-platform) |
| 147 | +* default to `CHPL_LAUNCHER=slurm` when it's available and `CHPL_COMM!=none` |
| 148 | + (see https://chapel-lang.org/docs/2.5/usingchapel/launcher.html#currently-supported-launchers) |
| 149 | +* added errors for setting `CHPL_*` environment variables to invalid values |
| 150 | +* added a build-time check to catch misconfigurations in the host environment |
| 151 | +* fixed a bug preventing using the bundled LLVM with `cmake` major version > 3 |
| 152 | + |
| 153 | +Updates to Chapel's Release Formats |
| 154 | +----------------------------------- |
| 155 | +* updated the homebrew formula to use LLVM 20 |
| 156 | +* started installing CMake files into the appropriate `lib/` directories |
| 157 | + |
| 158 | +Portability / Platform-specific Improvements |
| 159 | +-------------------------------------------- |
| 160 | +* added warnings for failing to use a `PrgEnv` compiler when available |
| 161 | +* added an error for trying to use a Cray XC with GASNet (no longer supported) |
| 162 | +* improved detection of the PMI2 library for OFI OOB communication |
| 163 | +* started emitting dSYM archives on MacOS platforms with the C backend |
| 164 | +* fixed a portability issue building GASNet with GCC 15 |
| 165 | + |
| 166 | +Portability / Build Improvements for GPUs |
| 167 | +----------------------------------------- |
| 168 | +* improved the wording of error messages for unsupported ROCm versions |
| 169 | + |
| 170 | +Error Messages / Semantic Checks |
| 171 | +-------------------------------- |
| 172 | +* improved error messages for incorrect types with `minmax` reduce intents |
| 173 | +* improved errors when storing reduce intent results into outer variable |
| 174 | +* improved formatting of `chpldoc`-related links that appeared in errors |
| 175 | +* started printing yield types for iterators and promoted expressions |
| 176 | + |
| 177 | +Error Messages / Semantic Checks for Libraries |
| 178 | +---------------------------------------------- |
| 179 | +* converted halts into thrown errors in the `Python` and `Image` modules |
| 180 | +* added a warning when `gpuClock()` is called from a host processor |
| 181 | +* improved errors for invalid inputs and too-large images in the `Image` module |
| 182 | +* improved the error message for `numBits(bool)` |
| 183 | + |
| 184 | +Runtime Library Improvements |
| 185 | +---------------------------- |
| 186 | +* made minor improvements to memory and fencing behavior in `--cache-remote` |
| 187 | + |
| 188 | +Third-Party Software Changes |
| 189 | +---------------------------- |
| 190 | +* added a bundled version of `mimalloc` 2.1.7 as a memory allocator option |
| 191 | + (see https://github.com/chapel-lang/chapel/blob/main/third-party/mimalloc/README) |
| 192 | +* updated the bundled version of Qthreads to 1.22 |
| 193 | +* updated the bundled hwloc to version 2.11.2 |
| 194 | + |
| 195 | +Bug Fixes |
| 196 | +--------- |
| 197 | +* fixed a bug caused by the `--auto-local-access` (ALA) optimization |
| 198 | +* fixed an internal error for a reduce intent like `minmax(2*int) reduce sum` |
| 199 | +* fixed a bug related to naming conflicts between system and user header files |
| 200 | +* fixed a bug causing line number comments to be omitted in generated C code |
| 201 | + |
| 202 | +Bug Fixes for Libraries |
| 203 | +----------------------- |
| 204 | +* fixed a segfault with the Python interpreter for `CHPL_COMM=gasnet` |
| 205 | +* added logic to release the GIL after an exception is thrown in `Python` |
| 206 | +* refactored the `Python` module GIL entry/exit code to be more robust |
| 207 | + |
| 208 | +Bug Fixes for GPU Computing |
| 209 | +--------------------------- |
| 210 | +* added missing checks for errors in reduction kernel wrappers |
| 211 | + |
| 212 | +Bug Fixes for Build Issues |
| 213 | +-------------------------- |
| 214 | +* made failures in `printchplenv` cause `./configure` to fail |
| 215 | +* fixed a crash using `CHPL_GASNET_SEGMENT=everything` w/ an illegal substrate |
| 216 | +* fixed error messages about incorrect memory allocators in `printchplenv` |
| 217 | +* enforced a minimum Python version of 3.5 for `find-python.sh` |
| 218 | +* removed extraneous Clang `--gcc-install-dir` arguments on macOS and FreeBSD |
| 219 | +* ensured generated `pytest` files for `chpl-language-server` get cleaned up |
| 220 | + |
| 221 | +Bug Fixes for the Runtime |
| 222 | +------------------------- |
| 223 | +* fixed stack traces printed with newer LLVM/clang versions |
| 224 | + |
| 225 | +Developer-oriented changes: Process |
| 226 | +----------------------------------- |
| 227 | +* started publishing the `main` version of Chapel docs using GitHub actions |
| 228 | + |
| 229 | +Developer-oriented changes: Module changes |
| 230 | +------------------------------------------ |
| 231 | +* added support for cross-locale calls to dynamically loaded procedure pointers |
| 232 | +* improved the portability of `breakpoint` in the `Debugger` module |
| 233 | + |
| 234 | +Developer-oriented changes: Makefile / Build-time changes |
| 235 | +--------------------------------------------------------- |
| 236 | +* added a `docs-release` Makefile target for making docs snapshots for releases |
| 237 | +* fixed problematic `const char*` declarations in slurm launcher code |
| 238 | + |
| 239 | +Developer-oriented changes: Compiler improvements / changes |
| 240 | +----------------------------------------------------------- |
| 241 | +* expanded prototypical support for improved procedure pointer types |
| 242 | +* added debugger printers for LLVM metadata |
| 243 | +* renamed `gdbShouldBreakHere()` to `debuggerBreakHere()` |
| 244 | + |
| 245 | +Developer-oriented changes: 'dyno' Compiler improvements / changes |
| 246 | +------------------------------------------------------------------ |
| 247 | +* added an error message for variables declared without an initializer or type |
| 248 | +* made significant improvements to the 'dyno' resolver's performance |
| 249 | +* made numerous improvements to the 'dyno' resolver for types and calls: |
| 250 | + - added support for array indexing and slicing via internal module code |
| 251 | + - added support for nD rectangular and associative array literals via modules |
| 252 | + - added support for resolving domain / element type queries in array formals |
| 253 | + - enabled resolving calls to `new blockDist` |
| 254 | + - added support for `reduce=` |
| 255 | + - added support for labeled `break` and `continue` statements |
| 256 | + - enabled generic `sync` formal types |
| 257 | + - added support for `.bytes()` on various types |
| 258 | + - added basic support for nested types |
| 259 | + - added support for assignment between `extern` types |
| 260 | + - added call resolution for basic functions in `extern` blocks |
| 261 | + - implemented `&&=` and `||=` compound assignment operators |
| 262 | + - implemented compiler-generated `.borrow()` methods for class types |
| 263 | + - implemented field access promotion |
| 264 | + - enhanced constness analysis for field access and array indexing |
| 265 | + - enabled constness checks, split-init, and copy elision at module scope |
| 266 | + - fixed generated inits where a parent field's type is not generally visible |
| 267 | + - added support for `chpl__orderToEnum()` and `chpl__enumToOrder()` |
| 268 | + - added support de-tupled loop index variables including `_` |
| 269 | + - unified the handling of control flow across resolution, type inference, ... |
| 270 | + - significantly improved copy-elision correctness |
| 271 | +* made numerous improvements when converting 'dyno' AST to production AST |
| 272 | + - implemented generation of `select` statements |
| 273 | + - implemented generation of `enum` and `c_ptr` types |
| 274 | + - implemented generation of variable argument indexing with `param` integrals |
| 275 | + - added support for generating many other language features as well |
| 276 | + |
| 277 | +Developer-oriented changes: Testing System |
| 278 | +------------------------------------------ |
| 279 | +* dramatically improved the performance of `start_test` |
| 280 | +* improved how `start_test`/`sub_test` handle generated debug information |
| 281 | +* removed erroneous `chplenv` warnings in `start_test` output |
| 282 | +* added better handling of dSYM to `sub_clean` |
| 283 | +* added checks for `paratest` to prevent using unsupported launchers |
| 284 | +* improved `chpl_launchcmd` to handle co-locales with PBS |
| 285 | + |
| 286 | + |
4 | 287 | version 2.4 |
5 | 288 | =========== |
6 | 289 |
|
|
0 commit comments