Skip to content

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

Description

@mkitti

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions