d_hdf5 0.3.0

HDF5 bindings and wrappers for the D Programming Language.

To use this package, put the following dependency into your project's dependencies section:



D bindings and wrappers for the HDF5 scientific data format. These differ from another project in being more C oriented and not exposing the Byzantine HDF5 class structure. I think aldacron's version may be more object-oriented, although I have not looked at it. Link (here)[https://github.com/aldanor/h5d]

Relatively raw stage - there may be some bugs still, although it does work for my own projects.

Ported to D by Laeeth Isharc 2014, 2015. Linux only I am afraid, although it should not be much work to port to Windows.

  • Borrowed heavily from C API declarations in https://github.com/SFrijters/hdf5-d
  • Three parts:
    1. Low-level C bindings: hdf5/bindings/api.d and hdf5/bindings/enum.d
    2. High-level D wrappers: hdf5/wrap.d
      - currently these provide simple sugar such as accepting and returning D strings rather than char*.
      - over time I will work on developing these, but you can see code for dumping and retrieving an array of structs to/from an hdf5
          dataset in the file examples/traits.d.  Compile-time reflection is used to infer the format of the data set.  The mapping from D types
          to HDF5 dataset types is pretty basic, but usable.
    3. Ports of the example code from C to D. Only some these have been finished, but they are enough to demonstrate the basic functionality. See examples/*.d for the examples that work. (To build run make or dub in the root directory). Example C code that has not yet been ported is in the examples/notyetported/ directory

To Do

1.  Better exception handling that calls HDF5 to get error message and returns appropriate subclass of Exception
2.  Unit tests (use example to build them)
3.  Refinement of use of CTFE - better checking of types, allow tables of higher dimensions, allow reading tables where the record type is not known beforehand.
4.  Integration with D dataframe library
5.  I have started wrapping the high-level library.  The bindings are more or less done.  The wrappings I have only made a start on and for now the code is commented out.

Getting Started

  1. Make sure you have the hdf5-1.8.15-patch1 version of the HDF5 C library - you should have libhdf5 and libhdf5_hl and check that /etd.dmd.conf knows where to find them. The interface changes for HDF5 even with minor releases, and I do not have the manpower to maintain different versions of the bindings for different releases
  2. Build the examples
    cd examples
    dub build --force
    cd ..
  3. Type rdmd runexamples.d in the base directory to run the examples one by one. Not all examples are finished or working

Pull requests welcomed, and I need to find a co-maintainer as I don't have time to do this consistently.

Authors:Laeeth Isharc

Dependencies: none

System dependencies:requires HDF5 1.8.15.patch-1 versions of libhdf5 and libhdf5_hl

0.3.0 2015-Aug-19
0.2.0 2014-Dec-26
0.0.0 2014-Dec-22
~master 2015-Dec-08
~hlwork 2015-Apr-06
Show all 5 versions

statistics are temporarily disabled.