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

Updating the HDF5 C library to supported HDF5 1.14.x series, JHDF5 compatibility #33

Open
mkitti opened this issue Feb 5, 2024 · 0 comments

Comments

@mkitti
Copy link
Contributor

mkitti commented Feb 5, 2024

Currently, n5-hdf5 is built on JHDF5 19.04.01. This contains HDF5 1.10.5 binaries built in March 2019. One exception are the ARM macOS binaries from HDF5 1.10.9 built in May 2022 by @mzouink and I. JHDF5 has seen no updates since 2022.

According to The HDF Group release schedule HDF5 1.10.11 is the last release in the 1.10.x series. This makes it unlikely that JHDF5 will seen updates from the current maintainers. The current release is 1.14.3 with 1.14.4 due in a few months.

image

I propose that we migrate to an actively maintained HDF5 dependency: JavaCPP Presets for HDF5.

Via the JavaDocs for org.bytedeco.hdf5 we can see that the package exposes both the org.bytedeco.hdf5 automatically generated Java bindings for the C API and the hdf5.hdflib bindings from The HDF Group:
http://bytedeco.org/javacpp-presets/hdf5/apidocs/

To provide a bridge from existing usage of JHDF5 I rebased the JHDF5 API to depend on the APIs exposed by JavaCPP Presets for HDF5.
https://github.com/JaneliaSciComp/janelia-jhdf5

A current blocker is to resolve compilation issues on Windows:
bytedeco/javacpp-presets#1405
Fixing the issue involves either convincing Visual Studio C++ to create a large DLL that exports all symbols or create multiple DLLs which depend on each other and which each expose parts of the API.

In summary, the above plan will

  1. Upgrade the underlying HDF5 C library to version 1.14.3 or newer.
  2. Expose three APIs for accessing the HDF5 library:
    i) hdf.hdflib API from The HDF Group
    ii) org.bytedeco.hdf5 API from JavaCPP that is auto-generated from the C API
    iii) ch/systemsx/cisd/hdf5 API from JHDF5, rebased on the above APIs.
@mkitti mkitti changed the title Updating the HDF5 C library to supported 1.14.x, JHDF5 compatibility Updating the HDF5 C library to supported HDF5 1.14.x series, JHDF5 compatibility Feb 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant