|
1 | 1 | Release Changes List
|
2 | 2 | ====================
|
3 | 3 |
|
| 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 | + |
4 | 251 | version 1.25.0
|
5 | 252 | ==============
|
6 | 253 |
|
@@ -230,13 +477,13 @@ Documentation
|
230 | 477 | * fixed the formatting of double-dash arguments on the online `chpl` man page
|
231 | 478 | (see https://chapel-lang.org/docs/1.25/usingchapel/man.html)
|
232 | 479 | * 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) |
234 | 481 | * described the `make check` target in the 'Building Chapel' documentation
|
235 | 482 | (see https://chapel-lang.org/docs/1.25/usingchapel/building.html#makefile-targets)
|
236 | 483 | * improved the language specification's formatting of reserved keywords
|
237 | 484 | (see https://chapel-lang.org/docs/1.25/language/spec/lexical-structure.html#keywords)
|
238 | 485 | * 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) |
240 | 487 | * modestly improved the documentation for the 'IO' module
|
241 | 488 | * fixed the formatting of a list in the 'classes' primer
|
242 | 489 | * improved the docs for various library routines to reflect return types
|
@@ -1131,7 +1378,7 @@ Interoperability Improvements
|
1131 | 1378 | (see https://chapel-lang.org/docs/1.23/technotes/extern.html#array-arguments)
|
1132 | 1379 | * restricted types and intents for `extern`/`export` functions to working cases
|
1133 | 1380 | (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 |
1135 | 1382 | (see https://chapel-lang.org/docs/1.23/technotes/extern.html#support-for-extern-blocks)
|
1136 | 1383 | * improved `--llvm` and `extern` block support for macros to include shifts
|
1137 | 1384 |
|
@@ -1529,7 +1776,7 @@ Semantic Changes / Changes to Chapel Language
|
1529 | 1776 | ---------------------------------------------
|
1530 | 1777 | * made `use` private by default
|
1531 | 1778 | (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 |
1533 | 1780 | (see https://chapel-lang.org/docs/1.21/language/spec/modules.html#nested-modules)
|
1534 | 1781 | * the `locale` type now has value semantics and a default value of `Locales[0]`
|
1535 | 1782 | * strings are now validated to ensure they are UTF8
|
|
0 commit comments