Skip to content

Commit 102e907

Browse files
ax3lfranzpoeschel
andauthored
Release: 0.15.0 (#1391)
Update version and write announcement text in changelog. * Changelog: Until 93befd7 * Add remaining items to changelog TODO: Cleanup, sorting, grouping * Group changelog items * Fix formatting * Upgrading guide * Add summary * Cleanup * Add 0.14.4 and 0.14.5 changelog * Shorter Release Title, Date * Revert: `examples/7_extended_write_serial.cpp` --------- Co-authored-by: Franz Pöschel <[email protected]>
1 parent bf385dd commit 102e907

File tree

7 files changed

+383
-10
lines changed

7 files changed

+383
-10
lines changed

CHANGELOG.rst

Lines changed: 292 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,32 +5,319 @@ Changelog
55

66
0.15.0
77
------
8-
**Date:** TBA
8+
**Date:** 2023-03-25
99

10-
[Title]
10+
C++17, Error Recovery, ADIOS2 BP5, Append & Read-Linear Modes, Performance & Memory
1111

12-
[Summary]
12+
This release adds error recovery mechanisms, in order to access erroneous datasets, created e.g. by crashing simulations.
13+
The BP5 engine of ADIOS2 v2.9 is fully supported by this release, including access to its various features for more fine-grained control of memory usage.
14+
Various I/O performance improvements for HDF5 are activated by default.
15+
Runtime configuration of openPMD and its backends, e.g. selection of backends and compression, is now consistently done via JSON, and alternatively via TOML for better readability.
16+
The data storage/retrieval API now consistently supports all common C++ pointer types (raw and smart pointers), implementing automatic memory optimizations for ADIOS2 BP5 if using unique pointers.
17+
18+
The miminum required C++ version is now C++17.
19+
Supported Python versions are Python 3.10 and 3.11.
1320

1421
Changes to "0.14.0"
1522
^^^^^^^^^^^^^^^^^^^
1623

1724
Features
1825
""""""""
1926

20-
- Python: support of 3.10 and 3.11, removal of 3.6 #1323
27+
- Python: support of 3.10 and 3.11, removal of 3.6 #1323 #1139
2128
- include internally shipped toml11 v3.7.1 #1148 #1227
2229
- pybind11: require version 2.10.1+ #1220 #1322
30+
- Switch to C++17 #1103 #1128 #1140 #1157 #1164 #1183 #1185
31+
- Error-recovery during parsing #1150 #1179 #1237
32+
- Extensive update for JSON/TOML configuration #1043
33+
- TOML as an alternative to JSON #1146
34+
- compression configuration via JSON# 1043
35+
- case insensitivity #1043
36+
- datatype conversion for string values #1043
37+
- ``json::merge`` public function #1043 #1333
38+
- better warnings for unused values #1043
39+
- new JSON options: ``backend`` and ``iteration_encoding`` #1043
40+
- ADIOS1 compression configuration via JSON #1043 #1162
41+
- New access types:
42+
- ``APPEND``: Add new iterations without reading, supports ADIOS2 Append mode #1007 #1302
43+
- ``READ_LINEAR``: For reading through ADIOS2 steps, for full support of ADIOS2 BP5 #1291 #1379
44+
- ADIOS2:
45+
46+
- Support for ADIOS 2.8 and newer #1166
47+
- Support for ADIOS2 BP5 engine #1119 #1215 #1258 #1262 #1291
48+
- Support for selecting flush targets (buffer/disk) in ADIOS2 BP5 for more fine-grained memory control #1226 #1207
49+
- Add file extensions for ADIOS2: ``.bp4``, ``.bp5`` and furthers, make them behave more as expected #1218
50+
- ADIOS2: Support for operator specification at read time #1191
51+
- ADIOS2: Automatic (de)activation of span API depending on compression configuration #1155
52+
- Optionally explicitly map ADIOS2 steps to openPMD iterations via modifiable attributes (only supported in experimental ADIOS2 modes) #949
53+
54+
- HDF5:
55+
56+
- I/O optimizations for HDF5 #1129 #1133 #1192
57+
- Improve write time by disabling fill #1192
58+
59+
- Miscellaneous API additions:
60+
61+
- Support for all char types (CHAR SCHAR UCHAR) #1275 #1378
62+
- Header for openPMD-defined error types #1080 #1355
63+
- Add ``Series::close()`` API call #1324
64+
- Support for array specializations of C++ smart pointer types #1296
65+
- Direct support for raw pointer types in ``store/loadChunk()`` API, replacing former ``shareRaw()`` #1229
66+
- Support for and backend optimizations (ADIOS2 BP5) based on unique pointer types in ``store/loadChunk()`` #1294
67+
- Use C++ ``std::optional`` types in public Attribute API (``Attribute::getOptional<T>()``) for dynamic attribute type conversion #1278
68+
69+
- Support for empty string attributes #1087 #1223 #1338
70+
- Support for inconsistent and overflowing padding of filenames in file-based encoding #1118 #1173 #1253
2371

2472
Bug Fixes
2573
"""""""""
2674

75+
- HDF5
76+
77+
- Support attribute reads from HDF5 Vlen Strings #1084
78+
- Close HFD5 handles in availableChunks task #1386
79+
- ADIOS1
80+
81+
- Fix use-after-free issue in ``ADIOS1IOHandler`` #1224
82+
- ADIOS2
83+
84+
- Don't apply compression operators multiple times #1152
85+
- Fix logic for associating openPMD objects to files and paths therein (needed for interleaved write and close) #1073
86+
- Fix precedence of environment variable vs. JSON configuration
87+
- Detect changing datatypes and warn/fail accordingly #1356
88+
- Remove deprecated debug parameter in ADIOS2 #1269
89+
- HDF5
90+
91+
- missing HDF5 include #1236
2792
- CMake:
2893

2994
- MPI: prefer HDF5 in Config package, too #1340
95+
- ADIOS1: do not include as ``-isystem`` #1076
96+
- Remove caching of global CMake variables #1313
97+
- Fix Build & Install Option Names #1326
98+
- Prefer parallel HDF5 in find_package in downstream use #1340
99+
- CMake: Multi-Config Generator #1384
100+
- Warnings:
101+
102+
- Avoid copying std::string in for loop #1268
103+
- SerialIOTest: Fix GCC Pragma Check #1213 #1260
104+
- Fix ``-Wsign-compare`` #1202
105+
- Python:
106+
107+
- Fix ``__repr__`` (time and Iteration) #1242 #1149
108+
- Python Tests: Fix ``long`` Numpy Type #1348
109+
- use ``double`` as standard for attributes #1290 #1369kk
110+
- Fix ``dtype_from_numpy`` #1357
111+
- Wheels: Fix macOS arm64 (M1) builds #1233
112+
- Avoid use-after-free in Python bindings #1225
113+
- Patch MSVC pybind11 debug bug #1209
114+
- sign compare warning #1198
115+
- Don't forget closing unmodified files #1083
116+
- Diverse relaxations on attribute type conversions #1085 #1096 #1137
117+
- Performance bug: Don't reread iterations that are already parsed #1089
118+
- Performance bug: Don't flush prematurely #1264
119+
- Avoid object slicing in Series class #1107
120+
- Logical fixes for opening iterations #1239
121+
122+
Breaking Changes
123+
""""""""""""""""
124+
125+
- Deprecations
126+
127+
- ``Iteration::closedByWriter()`` attribute #1088
128+
- ``shareRaw`` (replaced with raw- and unique-ptr overloads, see features section) #1229
129+
- ADIOS1 backend (deprecation notice has hints on upgrading to ADIOS2) #1314
130+
- Redesign of public class structure
131+
132+
- Apply frontend redesign to Container and deriving classes #1115 #1159
133+
- Removal of APIs
134+
- ``Dataset::transform``, ``Dataset::compression`` and ``Dataset::chunksize`` #1043
135+
136+
.. note::
137+
138+
See :ref:`NEWS.rst <install-upgrade>` for a more detailed upgrade guide.
139+
140+
Other
141+
"""""
142+
- Catch2: updated to 2.13.10 #1299 #1344
143+
- Tests & Examples:
144+
145+
- Test: Interleaved Write and Close #1073 #1078
146+
- Extend and fix examples 8a and 8b (bench write/read parallel) #1131 #1144 #1231 #1359 #1240
147+
- support variable encoding #1131
148+
- block located at top left corner was mistaken to read a block in the center #1131
149+
- GPU support in example 8a #1240
150+
- Extensive Python example for Streaming API #1141
151+
- General overhaul of examples to newest API standards #1371
152+
- CI
153+
154+
- URL Check for broken links #1086
155+
- CI savings (abort prior push, draft skips most) #1116
156+
- Appveyor fixes for Python Executable #1127
157+
- Pre-commit and clang-format #1142 #1175 #1178 #1032 #1222 #1370
158+
- ADIOS1: Fix Serial Builds, CI: Clang 10->12 #1167
159+
- Upgrade NVHPC Apt repository #1241
160+
- Spack upgrade to v0.17.1 and further fixes #1244
161+
- Update CUDA repository key #1256
162+
- Switch from Conda to Mamba #1261
163+
- Remove ``-Wno-deprecated-declarations`` where possible #1246
164+
- Expand read-only permission tests #1272
165+
- Ensure that the CI also build against ADIOS2 v2.7.1 #1271
166+
- Build(deps): Bump s-weigand/setup-conda from 1.1.0 to 1.1.1 #1284
167+
- Style w/ Ubuntu 22.04 #1346
168+
- Add CodeQL workflow for GitHub code scanning #1345
169+
- Cache Action v3 #1358 #1362
170+
- Spack: No More ``load -r`` #1125
171+
- CMake
172+
173+
- Extra CMake Arg Control in ``setup.py`` #1199
174+
- Do not strip Python symbols in Debug #1219
175+
- Disable in-source builds #1079
176+
- Fixes for NVCC #1102 #1103 #1184
177+
- Set RPATHs on installed targets #1105
178+
- CMake 3.22+: Policy ``CMP0127`` #1165
179+
- Warning Flags First in ``CXXFLAGS`` #1172
180+
- Docs
181+
182+
- More easily findable documentation for ``-DPython_EXECUTABLE`` #1104 and lazy parsing #1111
183+
- HDF5 performance tuning and known issues #1129 #1132
184+
- HDF5: Document ``HDF5_USE_FILE_LOCKING`` #1106
185+
- SST/libfabric installation notes for Cray systems #1134
186+
- OpenMPI: Document ``OMPI_MCA_io`` Control #1114
187+
- Update Citation & Add BibTeX (#1168)
188+
- Fix CLI Highlighting #1171
189+
- HDF5 versions that support collective metadata #1250
190+
- Recommend Static Build for Superbuilds #1325
191+
- Latest Sphinx, Docutils, RTD #1341
192+
- Tooling
193+
- ``openpmd-pipe``: better optional support for MPI #1186 #1336
194+
- ``openpmd-ls``: use lazy parsing #1111
195+
- Enable use of ``Series::setName()`` and ``Series::setIterationEncoding()`` in combination with file-based encoding 1081
196+
- Remove ``DATATYPE``, ``HIGHEST_DATATYPE`` AND ``LOWEST_DATATYPE`` from Datatype enumeration #1100
197+
- Check for undefined datatypes in dataset definitions #1099
198+
- Include ``StringManip`` header into public headers #1124
199+
- Add default constructor for ``DynamicMemoryView`` class #1156
200+
- Helpful error message upon wrong backend specification #1214
201+
- Helpful error message for errors in ``loadChunk`` API #1373
202+
- No warning when opening a single file of a file-based Series #1368
203+
- Add ``IterationIndex_t`` type alias #1285
204+
205+
206+
0.14.5
207+
------
208+
**Date:** 2022-06-07
209+
210+
Improve Series Parsing, Python & Fix Backend Bugs
211+
212+
This release improves reading back iterations that overflow the specified zero-pattern.
213+
ADIOS1, ADIOS2 and HDF5 backend stability and performance were improved.
214+
Python bindings got additional wheel platform support and various smaller issues were fixed.
215+
216+
Changes to "0.14.4"
217+
^^^^^^^^^^^^^^^^^^^
218+
219+
Bug Fixes
220+
"""""""""
221+
222+
- Series and iterations:
223+
224+
- fix read of overflowing zero patterns #1173 #1253
225+
- fix for opening an iteration #1239
226+
- ADIOS1:
227+
228+
- fix use-after-free in ``ADIOS1IOHandler`` #1224
229+
- Remove task from IO queue if it fails with exception #1179
230+
- ADIOS2:
231+
232+
- Remove deprecated debug parameter in ADIOS2 #1269
233+
- Add memory leak suppression: ``ps_make_timer_name_`` #1235
234+
- Don't safeguard empty strings while reading #1223
235+
- HDF5:
236+
237+
- missing HDF5 include #1236
238+
- Python:
239+
240+
- Wheels: Fix macOS arm64 (M1) builds #1233
241+
- Python Iteration: Fix ``__repr__`` (time) #1242
242+
- Increase reference count also in other ``load_chunk`` overload #1225
243+
- Do Not Strip Symbols In Debug #1219
244+
- Patch MSVC pybind11 debug bug #1209
30245

31246
Other
32247
"""""
33-
- Catch2: updated to 2.13.10 #1299 #...
248+
249+
- HDF5:
250+
251+
- Improve write time by disabling fill #1192
252+
- Update documented HDF5 versions with collective metadata issues #1250
253+
- Print warning if mpi4py is not found in ``openpmd-pipe`` #1186
254+
- Pass-through flushing parameters #1226
255+
- Clang-Format #1032 #1222
256+
- Warnings:
257+
258+
- Avoid copying std::string in for loop #1268
259+
- SerialIOTest: Fix GCC Pragma Check #1213 #1260
260+
- Fix ``-Wsign-compare`` #1202
261+
- CI:
262+
263+
- Fix Conda Build - <3 Mamba #1261
264+
- Fix Spack #1244
265+
- Update CUDA repo key #1256
266+
- NVHPC New Apt Repo #1241
267+
- Python:
268+
269+
- ``setup.py``: Extra CMake Arg Control #1199
270+
- sign compare warning #1198
271+
272+
273+
0.14.4
274+
------
275+
**Date:** 2022-01-21
276+
277+
Increased Compatibility & Python Install Bug
278+
279+
This release fixes various read/parsing bugs and increases compatibility with upcoming versions of ADIOS and old releases of Intel ``icpc``.
280+
An installation issue for pip-based installs from source in the last release was fixed and Python 3.10 support added.
281+
Various documentation and installation warnings have been fixed.
282+
283+
Changes to "0.14.3"
284+
^^^^^^^^^^^^^^^^^^^
285+
286+
Bug Fixes
287+
"""""""""
288+
289+
- ADIOS2:
290+
291+
- automatically deactivate ``span`` based ``Put`` API when operators are present #1155
292+
- solve incompatibilities w/ post-``2.7.1`` ``master``-branch #1166
293+
- ICC 19.1.2: C++17 work-arounds (``variant``) #1157
294+
- Don't apply compression operators multiple times in variable-based iteration encoding #1152
295+
- Reading/parsing:
296+
297+
- remove invalid records from data structures entirely #1150
298+
- fix grid spacing with type long double #1137
299+
- Python:
300+
301+
- fix ``Iteration`` ``__repr__`` typo #1149
302+
- add ``cmake/`` to ``MANIFEST.in`` #1140
303+
304+
Other
305+
"""""
306+
307+
- add simple ``.pre-commit-config.yaml``
308+
- Python:
309+
310+
- support Python 3.10 #1139
311+
- CMake:
312+
313+
- warning flags first in ``CXXFLAGS`` #1172
314+
- add policy CMP0127 (v3.22+) #1165
315+
- Docs:
316+
317+
- fix CLI highlighting #1171
318+
- update citation & add BibTeX #1168
319+
- fix HDF5 JSON File #1169
320+
- minor warnings #1170
34321

35322

36323
0.14.3

CITATION.cff

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ contact:
2525
orcid: https://orcid.org/0000-0003-1943-7141
2626
2727
title: "openPMD-api: C++ & Python API for Scientific I/O with openPMD"
28-
version: 0.15.0-dev
28+
version: 0.15.0
2929
repository-code: https://github.com/openPMD/openPMD-api
3030
doi: 10.14278/rodare.27
3131
license: LGPL-3.0-or-later

0 commit comments

Comments
 (0)