Skip to content

Commit 5f19ba2

Browse files
authored
CHANGES.md entries for Chapel 2.5 (#27274)
[contributed by @bradcray, reviewed and merged by Lydia] These are the main CHANGES in Chapel 2.5. Thanks to all who contributed!
2 parents cd35b43 + ce30529 commit 5f19ba2

File tree

1 file changed

+283
-0
lines changed

1 file changed

+283
-0
lines changed

CHANGES.md

Lines changed: 283 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,289 @@
11
Release Changes List
22
====================
33

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+
4287
version 2.4
5288
===========
6289

0 commit comments

Comments
 (0)