Skip to content

Commit 5c8630f

Browse files
franzpoeschelax3l
andauthored
Release notes 0.17.0 (#1818)
* Steal changelog from 0.16.1 * Remove dev label from version * First draft * Fixes * News.rst * Add most recent PRs * Syntax fix * Changelog: Formatting, Summary, Date * Reorganize summary * Add latest fix --------- Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
1 parent 1cfc68c commit 5c8630f

File tree

7 files changed

+161
-9
lines changed

7 files changed

+161
-9
lines changed

CHANGELOG.rst

Lines changed: 143 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,156 @@
33
Changelog
44
=========
55

6-
0.16.0
6+
0.17.0
77
------
8+
**Date:** 2025-01-14
89

9-
Changes to "0.15.0"
10+
Unified Snapshots API, HDF5 Compression, Dataset-Specific Backend Configuration, fully supported Variable Encoding in ADIOS2, Chunk Distribution Strategies & Performance
11+
12+
This release unifies the Streaming API and the Random-Access File API into a unified Snapshots API, with improved support for lazy parsing.
13+
Filtering and compression features are now also available for HDF5 (previously only ADIOS2), configured via JSON/TOML.
14+
JSON/TOML configuration can now target individual datasets for an improved tuning of compression operations.
15+
Variable Encoding is now fully supported in ADIOS2 (one ADIOS2 step per Iteration), as an alternative for File Encoding (one file per Iteration).
16+
Advanced chunk distribution strategies are now available in the API and in ``openpmd-pipe`` for data organization in parallel read operations.
17+
Multiple performance optimizations have been added throughout.
18+
19+
20+
Changes to "0.16.1"
21+
^^^^^^^^^^^^^^^^^^^
22+
23+
Features
24+
""""""""
25+
26+
- API:
27+
28+
- Unify Random-Access API and Streaming API into ``Series::snapshots()``, support reopening closed Iterations (#1592 #1810)
29+
- Dataset-specific JSON/TOML configuration (#1646)
30+
- Add a selection of chunk distribution algorithms for parallel data access (including RoundRobin, Blocks, BlocksOfSourceRanks, ByHostname, DiscardingStrategy) to the API and to ``openpmd-pipe`` (#824)
31+
- HDF5:
32+
33+
- HDF5 2.0.0 support (#1812)
34+
- HDF5 filters (compression) with JSON/TOML configuration, C++ and Python examples for compression (#1644)
35+
- Support for opening scalar datasets (#1764)
36+
- ADIOS2:
37+
38+
- ADIOS2 v2.11 support (#1804)
39+
- Support reading variable encoding in random access mode (using step selection) (#1706 #1750)
40+
- Support reading variable-encoded datasets with changing metadata (partial datasets, modifiable attributes) (#1746)
41+
- Allow only up to 100 steps by default in BP5 group encoding (performance consideration) (#1732)
42+
- JSON/TOML IO backends:
43+
44+
- JSON/TOML: Abbreviated IO modes (#1493)
45+
- Performance:
46+
47+
- Performance optimizations for interacting with many meshes/species types (#1741)
48+
- C++ API: optimized include times (#1774)
49+
- Improve flushing performance for file-based Series with many steps (#1642)
50+
- Python:
51+
52+
- DataFrame: Add attribute columns (#1814)
53+
- Miscellaneous:
54+
55+
- Add JSON schema for openPMD file validation, introduce openpmd-convert-toml-json tool (#1426)
56+
- Experimental support for openPMD standard 2.0 (#1551)
57+
- Non-spatial meshes (in standard 2.0) (#1534)
58+
- Optional shape in constant components (#1661)
59+
- Stderr hints for lazy parsing when appropriate (#1802 #1816)
60+
- storeChunk: use const-type pointers (#1778)
61+
- Span API: use ``std::unique_ptr`` in default fallback (#1820)
62+
- Pickle API: Cache unpickled Series to avoid repeated file access (#1654)
63+
- Fix license headers (#1819)
64+
65+
Bug Fixes
66+
"""""""""
67+
68+
- ADIOS2:
69+
70+
- Deactivate Span API in BP5 up to ADIOS2 v2.10.2 (#1771)
71+
- Fix propagation of joined dimension to the backend (#1740)
72+
- Fix late ``unique_ptr`` puts without ``CLOSE_FILE`` or ``ADVANCE`` operations (#1744)
73+
- Fix double write from ``unique_ptr`` (#1743)
74+
- Fix hangup with ``writeIterations()`` (#1728)
75+
- Always use ``CurrentStep()`` in ``mode::Read``, fixing nonstandard SST workflows (#1749)
76+
77+
- JSON/TOML IO backend:
78+
79+
- Remove unnecessary ``putJsonContents()`` calls (#1782)
80+
- Fix uninitialized values (#1745)
81+
- Python:
82+
83+
- Fix reference counting (#1775)
84+
- Type conversions for Series constructor (#1737)
85+
- Support for zero-sized storeChunk in Span API Python (#1738)
86+
- General:
87+
88+
- Fix missing check for constant components (#1776)
89+
- Fixes for deferred initialization (#1777)
90+
- Remove leftover debugging messages (#1816)
91+
- Fix Variant issue with certain CUDA versions (#1722 #1807)
92+
- Fix behavior of ``Iteration::open()`` for correct use of Span API (#1794)
93+
- ``iterator::operator==`` fix for C++20 (#1798)
94+
- Fix a couple of false positive warnings (#1806 #1824)
95+
- Safeguards for ``READ_LINEAR`` mode (#1753)
96+
- Fix & simplify ``BaseRecord::erase`` (#1841)
97+
98+
Other
99+
"""""
100+
101+
- CMake:
102+
103+
- Skip ``MPICXX`` dependency (#1785)
104+
- CI/Infrastructure:
105+
106+
- Upgrade to macOS-14 (#1808)
107+
- Upgrade Musllinux runner to Ubuntu 24.04 (#1795)
108+
- Upgrade Nvidia Nvhpc runner to 25.9 (#1811)
109+
- Clang Tidy and Sanitizer: Use clang-19 on Ubuntu 24.04 (#1783)
110+
- Update CodeQL action to v4 (#1790)
111+
- Support for new CMake versions (#1742)
112+
- Various pre-commit updates
113+
- Move Ubuntu 20.04 workflows to 22.04 (#1731)
114+
- Documentation:
115+
116+
- Update streaming documentation to snapshots API (#1773)
117+
- Doc: First Write with explicit ``float64`` type (#1780)
118+
- WarpX repo update (#1733)
119+
- Link code examples to current version instead of ``dev`` (#1821)
120+
121+
122+
0.16.1
123+
------
124+
**Date:** 2025-01-15
125+
126+
New Backends, Extension, Perf. & Memory
127+
128+
This is the 0.16.0 release but with internal version bumps where they were missing.
129+
130+
Changes to "0.16.0"
10131
^^^^^^^^^^^^^^^^^^^
11132

133+
Bug Fixes
134+
"""""""""
135+
136+
- HDF5: Delete and re-create attribute when overwriting with diff. type #1697
137+
- TOUCH IOTask: Avoid setting files as dirty in non-write modes #1704
138+
- Fix CMake variables for controlling internal dependencies #1678
139+
- Bump toml11 dependency to ``v4.2.0`` by default #1679
140+
- Set ``PYBIND11_FINDPYTHON=ON`` #1684
141+
- Properly check for empty ``HDF5_VERSION`` in CMake #1702
142+
- Fix ICX build #1690
143+
- Explicitly specify ADIOS2 components in openPMDConfig.cmake #1693
144+
- Example 12: Use ``ULONG`` for particle patches #1710
145+
12146
Other
13147
"""""
14148

15-
- ADIOS2: require version 2.9.0 #1711
149+
- Replace deprecated Python unittest API call #1681
150+
- Remove ``mpirun_workaround.sh`` #1698
151+
- CI: Upgrade appleclang14 build to MacOS 13 #1703
152+
- Docs:
153+
154+
- Fix Shipped Internally #1682
155+
- Fix leftover ADIOS2 mentions #1683
16156

17157
0.16.0
18158
------

CITATION.cff

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ contact:
3737
orcid: https://orcid.org/0000-0003-1943-7141
3838
email: axelhuebl@lbl.gov
3939
title: "openPMD-api: C++ & Python API for Scientific I/O with openPMD"
40-
version: 0.17.0-dev
40+
version: 0.17.0
4141
repository-code: https://github.com/openPMD/openPMD-api
4242
doi: 10.14278/rodare.27
4343
license: LGPL-3.0-or-later

NEWS.rst

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,19 @@ Upgrade Guide
66
0.17.0
77
------
88

9-
ADIOS 2.9.0 is now the minimally supported version for ADIOS2 support.
9+
ADIOS 2.9.0 is now the minimally supported version for ADIOS2; support for ADIOS 2.11.0 has been added.
10+
HDF5 1.8.13 is now the minimally supported version for HDF5, support for HDF5 2.0 has been added.
11+
12+
A new unified API for accessing Iterations/Snapshots has been introduced in ``series.snapshots()``.
13+
This replaces access via ``series.iterations``, ``series.writeIterations()`` and ``series.readIterations()`` which are now deprecated.
14+
``series.writeIterations()`` and ``series.readIterations()`` are now implemented internally in terms of ``series.snapshots()``, but remain backward-compatible to old useage.
15+
16+
The behavior of ``series.snapshots()`` is determined by the selected ``Access`` type:
17+
18+
* ``Access::CREATE_RANDOM_ACCESS`` and ``Access::READ_RANDOM_ACCESS`` behave the same way as ``series.iterations`` did so far.
19+
``Access::CREATE`` and ``Access::READ_ONLY`` are now aliases for these two access types.
20+
* ``Access::CREATE_LINEAR`` and ``Access::READ_LINEAR`` are used for creating/accessing Iterations one after another, e.g. in a Stream. These modes are more restricted in their API contract, but will work for streaming and file data alike, and ensure more resource-friendly IO patterns.
21+
If the ADIOS2 backend uses steps, then old steps cannot be reopened after closing them.
1022

1123
Python 3.8 and 3.9 support is EOL and removed.
1224
Python 3.14 is now supported.

docs/source/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@
9393
# The short X.Y version.
9494
version = u'0.17.0'
9595
# The full version, including alpha/beta/rc tags.
96-
release = u'0.17.0-dev'
96+
release = u'0.17.0'
9797

9898
# The language for content autogenerated by Sphinx. Refer to documentation
9999
# for a list of supported languages.

include/openPMD/version.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
#define OPENPMDAPI_VERSION_MAJOR 0
3131
#define OPENPMDAPI_VERSION_MINOR 17
3232
#define OPENPMDAPI_VERSION_PATCH 0
33-
#define OPENPMDAPI_VERSION_LABEL "dev"
33+
#define OPENPMDAPI_VERSION_LABEL ""
3434
/** @} */
3535

3636
/** maximum supported version of the openPMD standard (read & write,

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ def build_extension(self, ext):
181181
setup(
182182
name='openPMD-api',
183183
# note PEP-440 syntax: x.y.zaN but x.y.z.devN
184-
version='0.17.0.dev',
184+
version='0.17.0',
185185
author='Axel Huebl, Franz Poeschel, Fabian Koller, Junmin Gu',
186186
author_email='axelhuebl@lbl.gov, f.poeschel@hzdr.de',
187187
maintainer='Axel Huebl',

test/SerialIOTest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6617,7 +6617,7 @@ void adios2_bp5_no_steps(bool usesteps)
66176617
IO.DefineAttribute("/openPMD", std::string("1.1.0"));
66186618
IO.DefineAttribute("/openPMDextension", uint32_t(0));
66196619
IO.DefineAttribute("/software", std::string("openPMD-api"));
6620-
IO.DefineAttribute("/softwareVersion", std::string("0.17.0-dev"));
6620+
IO.DefineAttribute("/softwareVersion", std::string("0.17.0"));
66216621

66226622
IO.DefineAttribute("/data/0/dt", double(1));
66236623
IO.DefineAttribute(

0 commit comments

Comments
 (0)