openPMD / openPMD/openPMD-api

Query backend versions

Open
#1,563 1 comment 0 reactions 0 assignees View on GitHub
backend discussion feature request frontend: C++17 frontend: Python3 help wanted
Dominant language
C++
Stars
161
Forks
59
Avg merge
2d 22h
Merged PRs (30d)
7

Description

**Is your feature request related to a problem? If so, please describe.**

Downstream applications might need to guard against bugs in e.g. ADIOS2 or HDF5. This is currently difficult, since it requires including backend-specific headers.

**Describe the solution you'd like**
Since backend versions can be changed in openPMD-api's design without an ABI change, this should ideally be runtime call.

We already have the following in `version.hpp`:

```cpp
/** Return the feature variants of the openPMD-api library (run-time)
*
* @return std::map< std::string, bool > with variants such as backends
*/
std::map getVariants();
```

This cannot be extended to include version information without breaking API, but an additional call could help:

```cpp
struct backend_information
{
std::string version;
};

std::map getVariantsDetailed();
```

**Describe alternatives you've considered**

1. Using `#define` macros: Would require including backend headers into public headers, which goes against our project structure and would make the ABI of user code depend on the available backends. Currently, installing a new version of e.g. ADIOS2 only requires relinking downstream applications.
2. Fetching this information manually in downstream applications: Requires interacting with the backend libraries instead of going via openPMD-api.

**Additional context**
Required for implementing the open TODO in https://github.com/ComputationalRadiationPhysics/picongpu/pull/4759

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.