mirror of
https://github.com/HDFGroup/hdf5.git
synced 2026-09-25 04:09:44 +03:00
RFC-HDFG-2026-001 v5 reverses the earlier "no on-disk format change" decision: the verbatim key=value string passed to H5Pappend_filter is now retained on the pipeline entry and written to the file, so it can be recovered losslessly without loading the filter plugin. H5O_PLINE_VERSION_3 appends [config_length:2][config] after each filter's name. H5O_pline_set_version selects v3 only when a filter carries a stored string and the file's high bound admits it; otherwise it stays at v2 and the string is omitted, keeping string-free files byte-identical. The new bound H5F_LIBVER_V300 (now H5F_LIBVER_LATEST) gates emission and is mirrored in every *_ver_bounds[] table, H5trace, h5test, and the Fortran/Java constants. The string is threaded through the property machinery: H5Pappend_filter retains it, H5Z_append/decode initialize it, H5O__pline copy/size/reset and the H5Pencode/H5Pdecode pipeline enc/dec carry it, H5Z_modify (H5Pmodify_filter) clears it, and H5Z_delete frees it. H5Pget_filter_params_by_idx now returns the stored string first, falling back to get_config then a cd_values listing; h5dump -p shows it for every filter. H5Z_get_config_func_t's doc no longer frames cd_values packing as normative (it is filter-private). Tests (test/tfilter2.c) cover the verbatim round-trip recovered without the plugin, the silent v2 downgrade when the libver bound is too low, H5Pmodify_filter clearing, and survival through H5Pencode/H5Pdecode and H5Ocopy. Updated the h5repack plugin_test_cfg reference to the verbatim PARAMS_STRING.