Commit Graph
4 Commits
Author SHA1 Message Date
Scot Breitenfeld 7810de1d76 Retarget blob storage to HDF5 3.0.0
RFC-HDFG-2026-001 now targets the 3.0.0 major release.  Rename the
libver bound H5F_LIBVER_V230 to H5F_LIBVER_V300 (enum, all *_ver_bounds[]
rows, H5trace, h5test, Fortran/Java constants) and move the blob API's
\since tags from 2.3.0 to 3.0.0.  The chunk_info FILENAME array's V300
slot collapses onto the placeholder that branch 6153 already carried.
2026-07-15 17:13:22 -05:00
Scot Breitenfeld a236bb2309 Retarget blob storage to the 2.3.0 release
Rename H5F_LIBVER_V220 to H5F_LIBVER_V230 throughout (enum, ver_bounds
comments, trace, h5test, Fortran/Java constants, chunk_info filenames)
and move the blob API's version tags from 2.2.0 to 2.3.0.
2026-07-10 16:18:53 -05:00
Scot Breitenfeld e6fee52855 Add in-file blob configuration storage for filters
Implements the blob storage mechanism from RFC-HDFG-2026-001: filters can
attach a binary blob (configuration too large for cd_values or a parameter
string, e.g. JIT-compiled filter source or a dataset reference) to a
pipeline entry via the new H5Pappend_filter_blob() API.

H5Z_class3_t gains three NULL-able callbacks: write_blob, read_blob, and
close_blob.  When NULL, the library stores the blob as a global-heap
object at H5Dcreate time, recovers it at H5Dopen, and frees the buffer at
dataset close; custom callbacks own their storage and receive an opaque
H5Z_blob_loc_t locator passed unchanged through the pipeline message.
H5Z_class_info_t reports implementation via has_blob_callbacks.

On-disk, a version-3 pipeline message appends a has_aux flag byte per
filter and, when set, the blob locator; the pipeline message's delete
handler reclaims the heap object.  H5Pencode serializes blob bytes inline
so encoded DCPLs stay self-contained, and H5Pcopy deep-copies them, which
carries blobs through h5repack with no tool-specific code.  In parallel
HDF5, rank 0 writes the blob and broadcasts the locator so all ranks
encode identical pipeline messages.

Writing the v3 pipeline message is gated behind a new library version
bound, H5F_LIBVER_V220 (now aliased by H5F_LIBVER_LATEST): the enum,
every *_ver_bounds[] array, H5trace, h5test's env parsing, and the
Fortran/Java constants gain the new bound.  All other message versions
are unchanged from H5F_LIBVER_V200.

Tests cover the default-storage round-trip (create/write/reopen/read,
H5Pcopy and H5Pencode/H5Pdecode propagation, dataset delete), custom
callbacks (invocation points, locator round-trip, allocator symmetry),
and argument validation.
2026-07-10 16:05:43 -05:00
Allen Byrne b754dcb8f2 Move Java wrappers to FFM using jextract and java 25 (#5957)
FFM build requires Java 25, Jextract 25.
Generates FFM bindings during configure.
JNI is default when the requirements are not met or can be forced.
Presets added for maven and FFM - JNI is default selection.
Enhanced Maven options will work with either JNI or FFM
New Workflows for testing and maven uploads.
Extensive documentation changes for java.
2025-11-04 14:03:06 -06:00