1+ # Changelog
2+
13## 0.3.0-alpha.1 (unreleased)
24
3- Updates:
5+ ### Added
46
7+ - Added support for HDF5 1.10.
58- Added Rust equivalents of HDF5 primitives: arrays, Unicode strings and ASCII strings – all of
69 them available in both fixed-size or variable-length flavours (` hdf5-types ` crate).
710- Added ` H5Type ` trait that unifies the types that can be handled by the HDF5 library. This trait
811 is implemented by default for all scalar types, tuples, fixed-size arrays and all types in
9- ` hdf5-types ` .
12+ ` hdf5-types ` and can be used to create ` Datatype ` objects .
1013- Implemented ` #[derive(H5Type)] ` proc macro that allows for seamless mapping of user-defined
1114 structs and enums to their HDF5 counterparts.
12- - ` Datatype ` can now be constructed directly from an ` H5Type ` -compatible type (or from/to
13- a type descriptor).
14- - Added support for HDF5 1.10.
15- - Updated the bindings and test to the latest HDF5 versions (1.10.4 and 1.8.21).
16- - Added missing bindings for previous versions (mostly in ` h5p ` and ` h5fd ` modules).
17- - Removed ` remutex ` crate, using locking primitives from ` parking_lot ` crate instead.
15+ - Added high-level wrappers for file-creation H5P API (` plist::FileCreate ` ) and
16+ file-access H5P API (` plist::FileAccess ` ).
17+ - Various improvements and additions to ` PropertyList ` type.
18+ - Added support for various file drivers (sec2/stdio/core/family/multi/split/log).
19+ - Added core reading/writing API in ` Container ` , with support for reading/writing scalars,
20+ 1-d, 2-d, and dynamic-dimensional arrays, and raw slices. As a side effect, the main crate
21+ now depends on ` ndarray ` . ` Dataset ` now dereferences to ` Container ` .
22+ - Added basic support for reading and writing dataset slices.
23+ - When creating datasets, in-memory type layouts are normalized (converted to C repr).
24+ - Added ` packed ` option to ` DatasetBuilder ` (for creating packed HDF5 datasets).
25+
26+ ### Changed
27+
28+ - Updated the bindings and tests to the latest HDF5 versions (1.10.4 and 1.8.21).
29+ - The build system has been reworked from the ground up:
30+ - ` libhdf5-lib ` crate has been removed; all of the build-time logic now resides
31+ in the build script of ` libhdf5-sys ` .
32+ - The environment variables the build script reacts to are now ` HDF5_DIR ` and ` HDF5_VERSION ` .
33+ - ` pkg-config ` is now only launched on Linux.
34+ - On macOS, the build scripts detects Homebrew installations, for both 1.8 and 1.10 versions.
35+ - On Windows, we now scan the registry to detect official system-wide installations.
36+ - Dynamic linking now works with conda envs; ` HDF5_DIR ` can be now pointed to a conda env.
37+ - A few definitions from ` H5pubconf.h ` are now exposed as cfg definitions, like
38+ ` h5_have_parallel ` , ` h5_have_threadsafe ` and ` h5_have_direct ` (this requires us to
39+ locate the include folder and parse the header at build time).
40+ - Various clean ups in ` libhdf5-sys ` : implemented ` Default ` and ` Clone ` where
41+ applicable, moved a few types and methods to matching parent modules.
1842- Major refactor: trait-based type hierarchy has been replaced with a ` Deref ` -based
1943 hierarchy instead (53eff4f). ` ID ` and ` FromID ` traits have been removed. Traits like ` Location ` ,
2044 ` Object ` and a few other have been replaced with real types (wrappers around HDF5 handles, same
2145 as the concrete types like ` File ` ). Subtypes then dereference into parent types, so the
2246 user can user methods of the parent type without having to import any traits into scope
2347 (for instance, ` File ` dereferences into ` Group ` , which dereferences into ` Location ` ,
2448 which dereferences into ` Object ` ).
25- - ` Container ` trait has been removed, all of its functionality is moved into ` Group ` type.
26- - Added high-level wrappers for file-creation H5P API (` plist::FileCreate ` ) and
27- file-access H5P API (` plist::FileAccess ` ).
28- - Various improvements and additions to ` PropertyList ` type.
29- - Added support for various file drivers (sec2/stdio/core/family/multi/split/log).
49+
50+ ### Fixed
51+
52+ - ` hbool_t ` is now mapped to unsigned integer of proper size (either 1 byte or 4 bytes),
53+ depending on how the HDF5 library was built and on which platform.
54+ - Added missing bindings for previous versions (mostly in ` h5p ` and ` h5fd ` modules).
3055- Querying the HDF5 error stack is now thread-safe.
3156- Error silencing (` silence_errors() ` ) is now thread-safe.
32- - Various clean ups in ` libhdf5-sys ` : implemented ` Default ` and ` Clone ` where
33- applicable, moved a few types and methods to matching parent modules.
34- - ` Dataset ` now dereferences into ` Container ` (dataset/attribute shared functionality).
35- - The main crate now depends on ` ndarray ` (multi-dimensional arrays).
36- - Added core reading/writing API for ` Container ` , with support for reading/writing scalars,
37- 1-d, 2-d, and dynamic-dimensional arrays, and raw slices.
38- - Added basic support for reading and writing dataset slices.
39- - Added ` packed ` option to ` DatasetBuilder ` (for creating packed HDF5 datasets).
40- - When creating datasets, in-memory type layouts are normalized (converted to C repr).
57+
58+ ### Removed
59+
60+ - Removed ` libhdf5-lib ` crate (merged it into ` libhdf5-sys ` , see above).
61+ - Removed ` remutex ` crate, using locking primitives from ` parking_lot ` crate instead.
62+ - ` Container ` trait has been removed, all of its functionality merged into ` Group ` type.
4163
4264## 0.2.0 (Apr 17, 2016)
4365
44- Features:
66+ ### Added
4567
4668- Full support of ` msvc ` target on Windows. CI tests on AppVeyor now use official reeases of HDF5
4769 binaries (1.8.16, VS2015, x86_x64). The ` gnu ` target are still unofficially supported but
@@ -66,14 +88,14 @@ Features:
6688 now of reference type and need to be dereferenced upon use (for ` msvc ` , they have to be
6789 dereferenced twice).
6890
69- Changes:
91+ ### Changed
7092
7193- API simplification: many methods previously expecting ` Into<String> ` inputs now just take ` &str ` .
7294- ` util::to_cstring ` now takes ` Borrow<str> ` instead of ` Into<String> ` so as to avoid
7395 unnecessary allocations, and the return value is now wrapped in ` Result ` so that interior
7496 null bytes in input strings trigger an error.
7597
76- Bugfixes:
98+ ### Fixed
7799
78100- Fixed dangling pointer problems when strings were being passed as pointers to the C API.
79101- Fixed target path not being passed correctly in ` Container::link_soft ` .
0 commit comments