Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prepare H5Easy for v3. #958

Closed
1uc opened this issue Feb 14, 2024 · 4 comments
Closed

Prepare H5Easy for v3. #958

1uc opened this issue Feb 14, 2024 · 4 comments
Labels
v3 Anything that needs to be resolved before `v3`.

Comments

@1uc
Copy link
Collaborator

1uc commented Feb 14, 2024

There's some outstanding modernization in H5Easy, see #897 for some discussion. My preferred solution would be to completely move all logic out of H5Easy and have it act as a layer of simplifying API, without adding any functionality. The alternative would be to find some minimal set of modernization that can later be transformed without breakage.

@1uc 1uc added the v3 Anything that needs to be resolved before `v3`. label Feb 14, 2024
@tdegeus
Copy link
Collaborator

tdegeus commented Feb 14, 2024

I would be all for moving all third-party overloads to the core! It would increase functionality, and provide a much clearer platform to add future plug-ins if we like. I lost track a bit, what would it involve?

Note that one could even consider dropping the H5Easy namespace at some point. In the end, there are just a few functions/classes.

@1uc
Copy link
Collaborator Author

1uc commented Feb 14, 2024

The immediate problem is that XTensor supports arrays that don't have a compile time constant rank. This simply isn't something HighFive anticipated and slightly annoying to fix.

I've been tempted to drop H5Easy, after all functionality has been merged into the core. Mostly because it looks like HighFive improved to the point where easy isn't much more ergonomic anymore. OTOH, it feels too violent of a change for v3; and there's something to be said for API that's suitable for "scripting in C++" tasks. For reading it would be nice to have:

auto x = H5Easy::load<...>("foo.h5", "dset");

without the need to open a file, just pass a path, done. Similar for writing, but there it's important to be able to express truncating vs appending to the file.

@1uc
Copy link
Collaborator Author

1uc commented May 18, 2024

Core has support for Eigen, XTensor (#976) and rudimentary OpenCV (#1006). This should allow us to massively simplify Easy making it little more than an API layer.

@1uc
Copy link
Collaborator Author

1uc commented Jun 21, 2024

I'm happy to let Eigen work slightly differently for Easy, i.e. Vectors are 1D in easy and 2D in core.

The system for automatically adding functionality whenever the optional dependency is available can coexist with the new system that requires including a suitable HighFive header.

Not sure there's much more I'd like to do for v3. Therefore, I'll close it for now.

@1uc 1uc closed this as completed Jun 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
v3 Anything that needs to be resolved before `v3`.
Projects
None yet
Development

No branches or pull requests

2 participants