Skip to content

Commit a868c9f

Browse files
authored
Merge pull request #18808 from Maxrimus/release/1.25
Release/1.25 Merging main branch into Release/1.25 branch for 1.25.1 point release [reviewed by @bradcray and @mppf ]
2 parents 026edcc + 09bb951 commit a868c9f

File tree

2,359 files changed

+189617
-25488
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,359 files changed

+189617
-25488
lines changed

Diff for: .github/workflows/CI.yml

+30-22
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,33 @@ on:
77

88
env:
99
NIGHTLY_TEST_SETTINGS: true
10-
# By default `smokeTest` will run `make check`, `make mason`, and `make
11-
# docs`. We split those into 3 separate jobs to speed up CI times, so
12-
# disable all options here, and selectively enable below
13-
CHPL_SMOKE_SKIP_MAKE_CHECK: true
14-
CHPL_SMOKE_SKIP_MAKE_MASON: true
15-
CHPL_SMOKE_SKIP_DOC: true
10+
# store the dependencies in one place
11+
CHPL_APT_DEPS: gcc g++ m4 perl python3 python3-pip python3-venv python3-dev bash make mawk git pkg-config cmake llvm-11-dev llvm-11 llvm-11-tools clang-11 libclang-11-dev libclang-cpp11-dev libedit-dev
1612

1713
jobs:
1814
make_check:
1915
runs-on: ubuntu-latest
20-
env:
21-
CHPL_SMOKE_SKIP_MAKE_CHECK: false
2216
steps:
2317
- uses: actions/checkout@v2
18+
- name: install deps
19+
run: sudo apt-get install $CHPL_APT_DEPS
2420
- name: make check
2521
run: |
26-
CHPL_LLVM=none ./util/buildRelease/smokeTest
22+
./util/buildRelease/smokeTest chpl
2723
2824
make_doc:
2925
runs-on: ubuntu-latest
30-
env:
31-
CHPL_SMOKE_SKIP_DOC: false
3226
steps:
3327
- uses: actions/checkout@v2
28+
- name: install deps
29+
run: sudo apt-get install cmake doxygen
30+
- name: make libchplcomp-docs
31+
run: |
32+
make libchplcomp-docs
3433
- name: make check-chpldoc && make docs
34+
# Uses a quickstart config to keep it from running too long
3535
run: |
36-
CHPL_LLVM=none ./util/buildRelease/smokeTest
36+
./util/buildRelease/smokeTest quickstart docs
3737
- name: upload docs
3838
uses: actions/upload-artifact@v2
3939
with:
@@ -42,31 +42,39 @@ jobs:
4242

4343
make_mason:
4444
runs-on: ubuntu-latest
45-
env:
46-
CHPL_SMOKE_SKIP_MAKE_MASON: false
4745
steps:
4846
- uses: actions/checkout@v2
4947
- name: make mason
48+
# Use a quickstart config to keep it from running to long
49+
# While there, run a make check in that config for more coverage
5050
run: |
51-
CHPL_LLVM=none ./util/buildRelease/smokeTest
51+
./util/buildRelease/smokeTest quickstart mason chpl
5252
53-
check_annotations:
53+
check_compiler_next_tests:
5454
runs-on: ubuntu-latest
5555
steps:
5656
- uses: actions/checkout@v2
57-
with:
58-
fetch-depth: 100000
59-
- name: check annotations
57+
- name: install deps
58+
run: sudo apt-get install $CHPL_APT_DEPS
59+
- name: make test-libchplcomp
6060
run: |
61-
CHPL_LLVM=none make test-venv
62-
CHPL_LLVM=none CHPL_HOME=$PWD ./util/test/run-in-test-venv.bash ./util/test/check_annotations.py
61+
make test-libchplcomp -j`util/buildRelease/chpl-make-cpu_count`
6362
64-
bad_rt_calls:
63+
check_annotations_rt_calls:
6564
runs-on: ubuntu-latest
6665
steps:
6766
- uses: actions/checkout@v2
67+
with:
68+
fetch-depth: 100000
6869
- name: install deps
6970
run: sudo apt-get install cscope
7071
- name: find bad runtime calls
7172
run: |
7273
./util/devel/lookForBadRTCalls
74+
- name: check annotations
75+
run: |
76+
CHPL_LLVM=none make test-venv
77+
CHPL_LLVM=none CHPL_HOME=$PWD ./util/test/run-in-test-venv.bash ./util/test/check_annotations.py
78+
- name: smokeTest lint
79+
run: |
80+
./util/buildRelease/smokeTest lint

Diff for: CHANGES.md

+251-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,253 @@
11
Release Changes List
22
====================
33

4+
version 1.25.1
5+
==============
6+
7+
Update to the twenty-eighth public release of Chapel, December 2021
8+
(see also changes below for 1.25.0)
9+
10+
Highlights (see subsequent sections for further details)
11+
--------------------------------------------------------
12+
* generally improved the portability and robustness of the LLVM-based back-end
13+
* added an option to build the compiler with 'jemalloc' to reduce compile times
14+
* improved the performance and flexibility of types that use hash tables
15+
* generalized support for `sync` and `single` types to include classes/records
16+
* improved the initialization behaviors of variables of external types
17+
* added a new 'ConcurrentMap' package module
18+
* further improved the 'ArgumentParser' package and `mason`'s use of it
19+
* improved several names and features in support of stabilizing libraries
20+
* many other bug fixes and improvements to error messages and documentation
21+
22+
Packaging / Configuration Changes
23+
---------------------------------
24+
* improved the compiler's configuration when the LLVM back-end is enabled:
25+
- setting `CC`/`CXX` no longer disables the LLVM back-end
26+
(see https://chapel-lang.org/docs/1.25/usingchapel/chplenv.html)
27+
- `CHPL_LLVM=system` on linux now uses the more common `clang-cpp` library
28+
(see https://chapel-lang.org/docs/1.25/usingchapel/prereqs.html)
29+
- building the compiler no longer stores paths to system compiler resources
30+
- improved the robustness of `CHPL_LLVM=bundled` builds
31+
* added an option to build the compiler with 'jemalloc' to reduce compile-times
32+
(see https://chapel-lang.org/docs/1.25/usingchapel/chplenv.html#chpl-host-mem)
33+
34+
Semantic Changes / Changes to Chapel Language
35+
---------------------------------------------
36+
* variables of `extern` types without initializers are now zero-initialized
37+
(see https://chapel-lang.org/docs/1.25/language/spec/interoperability.html#variable-initialization)
38+
* `param` `c_string`<->`string` conversions are now considered to be narrowing
39+
(see https://chapel-lang.org/docs/1.25/language/spec/procedures.html#determining-more-specific-functions)
40+
41+
New Features
42+
------------
43+
* added support for `sync` and `single` records and classes
44+
(see https://chapel-lang.org/docs/1.25/language/spec/task-parallelism-and-synchronization.html#synchronization-variables)
45+
* added support for coercions when writing to `sync` and `single` variables
46+
* `extern` records can now define initializers to opt into Chapel initialization
47+
(see https://chapel-lang.org/docs/1.25/language/spec/interoperability.html#variable-initialization)
48+
* added support for specifying user-defined hash functions via a `hash()` method
49+
* enabled implicit conversions from `imag(32)` to `imag(64)`
50+
(see https://chapel-lang.org/docs/1.25/language/spec/conversions.html#implicit-numeric-and-bool-conversions)
51+
52+
Name Changes in Libraries
53+
-------------------------
54+
* deprecated the standard module 'Spawn', renaming it to 'Subprocess'
55+
(see https://chapel-lang.org/docs/1.25/modules/standard/Subprocess.html)
56+
* deprecated the 'Ordered[Set|Map]' modules, renaming them to 'Sorted[Set|Map]'
57+
(see https://chapel-lang.org/docs/1.25/modules/packages/SortedMap.html
58+
and https://chapel-lang.org/docs/1.25/modules/packages/SortedSet.html)
59+
* deprecated `.front()`/`.back()` on arrays, renaming them to `.first`/`.last`
60+
(see https://chapel-lang.org/docs/1.25/builtins/ChapelArray.html#ChapelArray.back)
61+
62+
Deprecated / Removed Library Features
63+
-------------------------------------
64+
* removed deprecated methods with `out` error arguments from `subprocess`
65+
* removed deprecated method `exit_status()` from `subprocess`
66+
67+
Standard Library Modules
68+
------------------------
69+
* added optional arguments to `map` initializers for more control over resizing
70+
(see https://chapel-lang.org/docs/1.25/modules/standard/Map.html#Map.map.init)
71+
* added support for hashing `bigint` values
72+
* improved support for sets of arrays and maps with array keys
73+
* converted standalone domain/array type queries into methods
74+
(e.g., `isRectangularDom()` -> `Domain.isRectangular()`)
75+
76+
Package Modules
77+
---------------
78+
* added a new 'ConcurrentMap' package module
79+
(see https://chapel-lang.org/docs/1.25/modules/packages/ConcurrentMap.html)
80+
* added automatic help handling and message generation to 'ArgumentParser'
81+
(see https://chapel-lang.org/docs/1.25/modules/packages/ArgumentParser.html#customizing-help-output)
82+
83+
Tool Improvements
84+
-----------------
85+
* improved `c2chapel` to reflect whether a C type has been `typedef`d
86+
* refactored `mason` to use 'ArgumentParser' for all command-line parsing
87+
88+
Performance Optimizations / Improvements
89+
----------------------------------------
90+
* optimized the hash tables used by 'Set', 'Map', and associative domains/arrays
91+
* fixed a bug in which `sort()` had stopped using insertionSort at small sizes
92+
* `regex` values are now eagerly localized, reducing overheads
93+
94+
Compilation-Time / Generated Code Improvements
95+
----------------------------------------------
96+
* reduced compilation time by ~10-20% when opting into `CHPL_HOST_MEM=jemalloc`
97+
(see https://chapel-lang.org/docs/1.25/usingchapel/chplenv.html#chpl-host-mem)
98+
* modestly improved the time spent in the 'buildDefaultFunctions' pass
99+
100+
Memory Improvements
101+
-------------------
102+
* optimized memory tracking when `memThreshold` is set
103+
104+
Documentation
105+
-------------
106+
* merged module-based docs for atomic, complex, and locale types into the spec
107+
(see https://chapel-lang.org/docs/1.25/language/spec/task-parallelism-and-synchronization.html#functions-on-atomic-variables,
108+
https://chapel-lang.org/docs/1.25/language/spec/types.html#module-ChapelComplex_forDocs,
109+
and https://chapel-lang.org/docs/1.25/language/spec/locales.html#locale-methods)
110+
* added contributor documentation, such as best practices, to the online docs
111+
(see https://chapel-lang.org/docs/1.25/developer/index.html)
112+
* added contributor documentation for the new compiler front-end
113+
(see https://chapel-lang.org/docs/1.25/developer/compiler-internals/index.html)
114+
* improved the description of the prerequisites for documentation builds
115+
(see https://chapel-lang.org/docs/1.25/usingchapel/prereqs.html)
116+
* documented `CHPL_RT_UNWIND`
117+
(see https://chapel-lang.org/docs/1.25/usingchapel/executing.html)
118+
* improved the description of default initialization for records
119+
(see https://chapel-lang.org/docs/1.25/language/spec/records.html#record-initialization)
120+
* improved documentation for standard distributions
121+
(see https://chapel-lang.org/docs/1.25/modules/layoutdist.html#standard-distributions)
122+
* added documentation for `bigint.pow()` to the 'BigInteger' module
123+
(see https://chapel-lang.org/docs/1.25/modules/standard/BigInteger.html#BigInteger.bigint.pow)
124+
* added `throws` documentation to some methods in the 'Subprocess' module
125+
(see https://chapel-lang.org/docs/1.25/modules/standard/Subprocess.html#Subprocess.subprocess.poll,
126+
https://chapel-lang.org/docs/1.25/modules/standard/Subprocess.html#Subprocess.subprocess.wait,
127+
and https://chapel-lang.org/docs/1.25/modules/standard/Subprocess.html#Subprocess.subprocess.communicate)
128+
* removed out-of-date note about whole-domain assignments being serialized
129+
(see https://chapel-lang.org/docs/1.25/language/spec/domains.html#associative-domain-values)
130+
* fixed various typos in documentation
131+
132+
Syntax Highlighting
133+
-------------------
134+
* added `operator` to various highlighters
135+
* added highlighting of `lambda` to `vim` and `emacs`
136+
137+
Portability
138+
-----------
139+
* fixed an error building the compiler with GCC 11.2
140+
* addressed a problem building the compiler on OpenBSD 7.0
141+
* enabled `CHPL_TARGET_CPU=native` when using the LLVM back-end on ARM systems
142+
* fixed the `chplvis` build w.r.t. C++11
143+
* fixed a warning when building the compiler with clang++ 13
144+
145+
GPU Computing
146+
-------------
147+
* bundled generated kernel code into the executable, instead of a `.fatbin` file
148+
149+
Compiler Improvements
150+
---------------------
151+
* improved the LLVM back-end's support for clang arguments via `--ccflags`
152+
* the LLVM back-end now generates structure sizes as simpler constants
153+
* reduced the amount of memory allocated within the compiler
154+
* reduced memory leaks within the compiler, such as for string literals
155+
156+
Launchers
157+
---------
158+
* made `slurm-gasnetrun*` respect `CHPL_LAUNCHER_ACCOUNT` more consistently
159+
160+
Error Messages / Semantic Checks
161+
--------------------------------
162+
* added an error when a non-operator is declared with the `operator` keyword
163+
* added a warning when using `extern` and `inline` together on a declaration
164+
* added a user error when indexing into an enumerated type
165+
* added a user error when trying to `import` a bad expression type
166+
* improved error messages for indexing into heterogeneous tuples w/ non-`param`s
167+
168+
Bug Fixes
169+
---------
170+
* fixed a bug with limitation clauses naming symbols via private `use`/`import`
171+
* fixed default-initialization for `param` strings
172+
* fixed a bug with concatenating `param` strings with escape sequences
173+
* fixed a bug in `.join()` on `string`/`bytes` with single-element tuples
174+
* fixed a bug related to remote references to module-scope `bytes` values
175+
* fixed a problem with formals whose default value is `none`
176+
* fixed intermittent corrupted packets when using GASNet over `udp`
177+
* fixed a bug with unresolved defaulted formals in overridden methods
178+
* fixed certain optimization errors involving virtual method calls
179+
* fixed an internal error related to the `_wide_make` primitive and references
180+
181+
Bug Fixes for Build Issues
182+
--------------------------
183+
* fixed a problem when using a custom GCC with the bundled LLVM and clang
184+
* `make clobber` no longer prints errors for `CHPL_LLVM=bundled`
185+
186+
Bug Fixes for Libraries
187+
-----------------------
188+
* fixed a bug in `bigint.pow()` for negative exponents
189+
* fixed an infinite loop bug when using an empty `regex` pattern
190+
* fixed buggy `regex` behaviors when a pattern contained a null byte
191+
* fixed bugs when using `regex` values from remote locales
192+
* fixed a bug related to custom comparators in 'sortedSet'
193+
194+
Bug Fixes for Tools
195+
-------------------
196+
* made minor fixes to `mason`'s command-line parsing
197+
198+
Platform-specific Bug Fixes
199+
---------------------------
200+
* fixed sporadic `GNI_PostRdma` errors for the `ugni` communication layer
201+
* increased the default number of PMI KVS entries to have enough on HPE Cray EX
202+
203+
Third-Party Software Changes
204+
----------------------------
205+
* updated GASNet-EX to version 2021.9.0
206+
* updated libunwind to version 1.5.0, which fixed certain build issues
207+
208+
Developer-oriented changes: Documentation
209+
-----------------------------------------
210+
* documented the automatic chpldoc text generated for `deprecated` symbols
211+
(see https://chapel-lang.org/docs/1.25/developer/bestPractices/Deprecation.html)
212+
* filtered deprecation warnings to remove inline markup used for `chpldoc` pages
213+
* added a note about passing environment variables to `paratest`
214+
(see https://chapel-lang.org/docs/1.25/developer/bestPractices/Sanitizers.html)
215+
* `make docs` now includes compiler docs if `doxygen` and `cmake` are available
216+
(see https://chapel-lang.org/docs/1.25/developer/compiler-internals/index.html)
217+
* combined the docs for `.join()` on `string`/`bytes` for arrays and tuples
218+
* updated `ofi` communication layer developer documentation
219+
220+
Developer-oriented changes: Module changes
221+
------------------------------------------
222+
* refactored 'ChapelHashtable' to use 'Memory.Initialization'
223+
* removed a trivial/pointless utility routine `shouldReturnRvalueByConstRef()`
224+
* removed some unnecessary helper functions related to enumerating `enum` types
225+
* removed unnecessary explicit `this.complete()` call in `_shared` initializer
226+
* removed old comments referencing constructors
227+
228+
Developer-oriented changes: Build-time changes
229+
----------------------------------------------
230+
* on Cray systems, simplified integration between PrgEnvs and the LLVM back-end
231+
232+
Developer-oriented changes: Compiler improvements/changes
233+
---------------------------------------------------------
234+
* added auto-deprecation documentation to symbols with `deprecated` keyword
235+
* increased the number of primers and modules that the new front-end can parse
236+
* continued improving the new prototype compiler front-end's resolution logic
237+
* migrated some code from the production compiler to the new compiler front-end
238+
* updated compiler code for compatibility with LLVM-12
239+
* removed some un-needed compiler-generated iterators for traversing enums
240+
* made the `--incremental` flag more robust w.r.t. large numbers of modules
241+
242+
Developer-oriented changes: Runtime improvements
243+
------------------------------------------------
244+
* `CHPL_RT_COMM_OFI_DEBUG_FNAME` can now redirect debug output to stdout/stderr
245+
246+
Developer-oriented changes: Tool Improvements
247+
---------------------------------------------
248+
* updated the `spack` back-end version to 0.15.4 for `mason external` commands
249+
250+
4251
version 1.25.0
5252
==============
6253

@@ -230,13 +477,13 @@ Documentation
230477
* fixed the formatting of double-dash arguments on the online `chpl` man page
231478
(see https://chapel-lang.org/docs/1.25/usingchapel/man.html)
232479
* clarified our requirements for using the LLVM back-end
233-
(see https://chapel-lang.org/docs/main/usingchapel/prereqs.html#readme-prereqs)
480+
(see https://chapel-lang.org/docs/1.25/usingchapel/prereqs.html#readme-prereqs)
234481
* described the `make check` target in the 'Building Chapel' documentation
235482
(see https://chapel-lang.org/docs/1.25/usingchapel/building.html#makefile-targets)
236483
* improved the language specification's formatting of reserved keywords
237484
(see https://chapel-lang.org/docs/1.25/language/spec/lexical-structure.html#keywords)
238485
* updated the language spec to refer to a user-defined reduction example
239-
(https://chapel-lang.org/docs/main/language/spec/user-defined-reductions-and-scans.html)
486+
(https://chapel-lang.org/docs/1.25/language/spec/user-defined-reductions-and-scans.html)
240487
* modestly improved the documentation for the 'IO' module
241488
* fixed the formatting of a list in the 'classes' primer
242489
* improved the docs for various library routines to reflect return types
@@ -1131,7 +1378,7 @@ Interoperability Improvements
11311378
(see https://chapel-lang.org/docs/1.23/technotes/extern.html#array-arguments)
11321379
* restricted types and intents for `extern`/`export` functions to working cases
11331380
(see https://chapel-lang.org/docs/1.23/technotes/extern.html#allowed-intents-and-types)
1134-
* added implicit uses of 'CPtr', 'SysCTypes', and 'SysBasic' to `extern` blocks
1381+
* added implicit uses of 'CPtr', 'SysCTypes', and 'SysBasic' to `extern` blocks
11351382
(see https://chapel-lang.org/docs/1.23/technotes/extern.html#support-for-extern-blocks)
11361383
* improved `--llvm` and `extern` block support for macros to include shifts
11371384

@@ -1529,7 +1776,7 @@ Semantic Changes / Changes to Chapel Language
15291776
---------------------------------------------
15301777
* made `use` private by default
15311778
(see https://chapel-lang.org/docs/1.21/language/spec/statements.html#the-use-statement)
1532-
* sub-modules no longer have lexical visibility into their parent modules
1779+
* sub-modules no longer have lexical visibility into their parent modules
15331780
(see https://chapel-lang.org/docs/1.21/language/spec/modules.html#nested-modules)
15341781
* the `locale` type now has value semantics and a default value of `Locales[0]`
15351782
* strings are now validated to ensure they are UTF8

0 commit comments

Comments
 (0)