You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Added Rust equivalents of HDF5 primitives: arrays, Unicode strings and ASCII
strings – all of them available in both fixed-size/variable-length flavours
(see hdf5-types crate for details).
Added H5Type trait that unifies the types that can be handled by the HDF5
library. This trait is implemented by default for all scalar types, tuples,
fixed-size arrays and all types in hdf5-types and can be used to create Datatype objects for known types.
Implemented #[derive(H5Type)] proc macro that allows for seamless mapping
of user-defined structs and enums to their HDF5 counterparts.
Added high-level wrappers for file-creation H5P API (plist::FileCreate) and
file-access H5P API (plist::FileAccess), covering almost the entirety of
FCPL and FAPL property list functionality.
Various improvements and additions to PropertyList type.
Added support for file drivers: sec2/stdio/core/family/multi/split/log.
Added support for MPIO driver (requires H5_HAVE_PARALLEL HDF5 flag and the
crate has to be built with "mpio" feature enabled).
Added support for direct VFD driver (requires H5_HAVE_DIRECT HDF5 flag).
Added some missing bindings to hdf5-sys: driver-related FAPL bindings in h5p and h5fd (including MPIO and direct VFD drivers), MPIO bindings in h5p, h5f and h5fd.
Added core reading/writing API in Container, with support for reading and
writing scalars, 1-D/2-D/dynamic-dimensional arrays and raw slices. As a
side effect, the main crate now depends on ndarray. Dataset now
dereferences to Container.
Added basic support for reading and writing dataset slices.
When creating datasets, in-memory type layouts are normalized (converted to
C representation).
Added packed option to DatasetBuilder for creating packed HDF5 layouts.
All object types now implement Clone (shallow copy, increases refcount).
Changed
Renamed hdf5-rs crate to hdf5.
Renamed libhdf5-sys crate to hdf5-sys (importable as hdf5_sys).
Renamed GitHub repository to aldanor/hdf5-rust.
Updated the bindings and tests to the latest HDF5 versions (1.10.4 / 1.8.21).
The build system has been reworked from the ground up:
hdf5-lib crate has been removed; all the build-time logic now resides in
the build script of hdf5-sys.
The build script now looks for HDF5_DIR and HDF5_VERSION env vars.
pkg-config is now only launched on Linux.
macOS: the build script detects Homebrew installations (both 1.8 and 1.10).
Windows: we now scan the registry to detect official system-wide installs.
HDF5_DIR can be now pointed to a conda env for dynamic linking.
A few definitions from H5pubconf.h are now exposed as cfg definitions,
like h5_have_parallel, h5_have_threadsafe and h5_have_direct (this
requires locating the include folder and parsing the header at build time).
Various cleanups in hdf5-sys: implemented Default and Clone where
applicable, moved a few types and methods to matching parent modules.
Major refactor: trait-based type hierarchy has been replaced with a Deref-based hierarchy instead (53eff4f). ID and FromID traits have been
removed. Traits like Location, Object and a few others have been replaced
with real types (wrappers around HDF5 handles, same as the concrete types
like File). Subtypes then dereference into parent types, so the user can
call methods of the parent type without having to import any traits into
scope (for instance, File dereferences into Group, which dereferences
into Location, which dereferences into Object).
Dataspaces and property lists can now be properly copied via .copy() method
(instead of .clone() which now yields a shallow copy increasing refcount).
Fixed
hbool_t is now mapped to unsigned integer of proper size (either 1 byte or
4 bytes), depending on how the HDF5 library was built and on which platform.
Added missing bindings for previous versions (mostly in h5p and h5fd).
Querying the HDF5 error stack is now thread-safe.
Error silencing (silence_errors()) is now thread-safe.
Fixed wrong bindings for H5AC_cache_config_t.
Removed
Removed hdf5-lib crate (merged it into hdf5-sys, see above).
Removed remutex crate, using locking primitives from parking_lot crate.
Container trait has been removed in favor of Group type.
Notes
The version number jump is due to renaming crates hdf5-rs and libhdf5-sys
to hdf5 and hdf5-sys, respectively. Since there were already published
crates with those names and the crates registry is meant to be immutable even
if the crates are yanked, we had to bump the version so that it shadows all
the older versions.