- Fixed a bug that caused written variable-length data to become corrupted. (#131)
- Added support for the Bitshuffle filter (hardware accelerated, AVX2).
- The base type of an enumeration is now being exposed in the type information (i.e.
dataset.Type.Enumeration
) (#119)
- Version 2 of PureHDF drops support for old frameworks and supports active frameworks only which are .NET 6 and .NET 8 at the time of this release. Bug fixes will be backported to version 1 as well as features (upon request and if feasible).
- The documentation has been improved.
- Read performance of chunked datasets encoded with the extensible array index as well as the btree2 index has been improved.
- To solve a problem with ambiguity, the signature of the
NativeDataset.Read(...)
overloads has been changed to make the provision of thedatasetAccess
parameter mandatory.
- Added soft link support
- The lookup performance of chunks in the chunk cache has been improved.
- Read performance of chunked datasets encoded with the fixed array index has been improved.
- Read performance of chunked datasets in the old version 1 B-tree format has been dramatically improved by adding a cache to avoid repeated deserialisation of in-file structures.
- Created a workaround to not throw error "Byte order conversion is not (yet) support by PureHDF." (#101).
- Fixed a bug where objects were encoded more than once (by using object references) and added a circular reference detection.
- Added write support for object references. Example:
var dataset = new H5Dataset(data: 1);
var group = new H5Group();
var file = new H5File
{
["data"] = dataset,
["group"] = group,
["references"] = new H5ObjectReference[] { dataset, group }
};
- Added support to read data as raw byte array use the buffer overload
Read(buffer, ...)
. Thebuffer
variable must be of typebyte[]
orMemory<byte>
, respectively. CastIH5Dataset
toNativeDataset
to be able to useSpan<byte>
as buffer type as well.
- Added read support for nullable values types. Data must be variable-length sequence of length = 1 to be compatible with nullable value types like
int?
.
- Added write support for nullable values types (read support comes with the next version)
- #89 - Nullable Property in compound type leads to exception
- #88 - Unable to open file written with PureHDF
- #86 - Stackoverflow exception when writing data set (only .NET Framework)
- #84 - Over size in DataLayoutMessage4.Create
- #83 - fix: Fixes exception on write with multiple opaque datasets of different sizes, thanks @Blackclaws
- #81 - Do not allocate file space for null dataspace
- #78 - Large opaque datasets produce overflow
- #79 - Opaque datasets do not properly save when combined with attributes
- #76 - Write Opaque Datatype
- #68 - Does Blosc2 filter really work? It does not reduce file size in a manual test
- #74 - Blosc decompression error at compression level 0
- #73 - Shuffle filter breaks roundtripping (seen in 3d array of variable-length lists)
- #52 - Chunk cache problem
- #70, #71 - Setting the SHUFFLE parameter on the Blosc filter causes an error, thanks @marklam
- #67 - Exception with variable-length-list element over a certain size
- #66
IVariableLengthType
now exposes theBaseType
.
NativeAttribute
is now really made public.
NativeDataset
got an overload to passSpan<T>
as buffer.NativeAttribute
got an overload to passSpan<T>
as buffer.NativeAttribute
was also made public.
- Compounds with members not sorted by their offset can now be decoded correctly.
- Files with many strings could not be written due to the new global heap collections no being created properly.
- Attributes on a dataset are now also properly written to file.
- The
H5NativeWriter
now also exposes the associatedH5File
as property.
- The reading API has been simplified to
T dataset.Read<T>(...)
andT attribute.Read<T>(...)
. This means that method calls likedataset.Read<T>
should be changed todataset.Read<T[]>
, otherwise you will get back a scalar value. - The async implementation for the native VOL connector has been dropped and using it results in an exception. For the HSDS VOL connector, both APIs, sync and async, still work. The reason is that to avoid massive code duplication, we need to combine async and sync methods into a single asynchronous code path that can complete synchronous or asynchronous. This makes the code more general (good) but less optimized (bad), and much more complex because a lot of methods have to carry around the boolean parameter that decides whether the call is synchronous or asynchronous. Another reason for removing asynchronous support is that I don't see many use cases. Benchmarks have shown that multithreading is much more efficient on an M.2 SSD, and in my experience asynchronous code is most often useful for web servers to avoid creating many threads. Originally, async support was implemented to support running PureHDF in the browser as a web assembly module, since only async calls to a file stream are allowed in that environment. Hopefully this can be worked around by using web workers or other browser features.
- Write support to create new HDF5 files (no editing of existing files) has been added.
See https://apollo3zehn.github.io/PureHDF for more information about PureHDF features.
- The property
group.Children
does not exist anymore. Usegroup.Children()
instead. The reason is that properties do not work well in combination with the async programming model.
- Added support for the LZF filter.
- Virtual Object Layer (VOL)
- There is now a VOL connector for native H5 files and a VOL connector for HSDS (see below).
- Added experimental support for the Highly Scalable Data Service (HSDS)
- Virtual File Driver (VFD)
- Added support for Amazon S3 hosted files
- More async methods.
Note: Asynchronous methods of the
native VOL connector
(likegroup.AttributesAsync()
) are not yet implemented asynchronously but synchronously. Exception: read methods likedataset.ReadAsync(...)
are implemented asynchronously. In future all async methods will be truly async.
- Fixed a problen with the global heap (#28).
- Support for virtual datasets.
- PointSelection
Important: The project has been renamed from HDF5.NET to PureHDF.
- Fix the problem that the new async methods were not fully thread-safe.
- Added multithreaded read support for
H5File.Open(string)
,H5File.Open(Stream)
(ifStream
isFileStream
) andH5File.Open(MemoryMappedViewAccessor)
. See https://github.com/Apollo3zehn/PureHDF#8-concurrency for more details.
- Fixed a bug which caused chunked .mat files to not be readable.
- Async read methods added.
- Doc strings added on all public members for better intellisense support.
- More type information is being exposed, especially compound members (name, offset, type) and the array base type.
- Non generic version of ReadCompound supports reading unknown structs.
- ReadCompound now supports nested arrays.