1.0.0
1.0.0 (August 1, 2022)
This release is not ABI compatible with prior releases due to numerous changes
to function signatures and data structures like zfp_field. However, few of
the API changes, other than to the cfp C API for compressed arrays, should
impact existing code. Note that numerous header files have been renamed or
moved relative to prior versions.
Added
zfp::const_array: read-only variable-rate array that supports
fixed-precision, fixed-accuracy, and reversible modes.- Compressed-array classes for 4D data.
constversions of array references, pointers, and iterators.- A more complete API for pointers and iterators.
- cfp support for proxy references and pointers, iterators, and
(de)serialization. - Support for pointers and iterators into array views.
zfp::array::size_bytes()allows querying the size of different components
of an array object (e.g., payload, cache, index, metadata, ...).- Templated C++ wrappers around the low-level C API.
- A generic codec for storing blocks of uncompressed scalars in zfp's
C++ arrays. - Additional functions for querying
zfp_fieldandzfp_streamstructs. zfp_config: struct that encapsulates compression mode and parameters.- Rounding modes for reducing bias in compression errors.
- New examples:
array,iteratorC, andppm.
Changed
- Headers from
array/,cfp/include/, andinclude/have been renamed
and reorganized into a commoninclude/directory.- The libzfp API is now confined to
zfp.h,zfp.hpp, andzfp.mod
for C, C++, and Fortran bindings, respectively. These all appear in
the top-levelinclude/directory upon installation. - C++ headers now use a
.hppsuffix; C headers use a.hsuffix. - C++ headers like
array/zfparray.hhave been renamedzfp/array.hpp. - C headers like
cfp/include/cfparrays.hhave been renamedzfp/array.h.
- The libzfp API is now confined to
size_tandptrdiff_treplaceuintandintfor array sizes and
strides in the array classes and C/Fortran APIs.zfp_boolreplacesintas Boolean type in the C API.bitstream_offsetandbitstream_sizereplacesize_tto ensure support
for 64-bit offsets into and lengths of bit streams. Consequently, the
bitstreamAPI has changed accordingly.- All array and view iterators are now random-access iterators.
- Array inspectors now return
const_referencerather than a scalar
type likefloatto allow obtaining aconst_pointerto an element
of an immutable array. zfp::array::compressed_data()now returnsvoid*instead ofuchar*.- The array (de)serialization API has been revised, resulting in new
zfp::array::headerandzfp::exceptionclasses with new exception
messages. - The array
codecclass is now responsible for all details regarding
compression. - The compressed-array C++ implementation has been completely refactored to
make it more modular, extensible, and reusable across array types. - Array block shapes are now computed on the fly rather than stored.
- The cfp C API now wraps array objects in structs.
- The zfpy Python API now supports the more general
memoryviewover
bytesobjects for decompression. - The zFORp Fortran module name is now
zfpinstead ofzforp_module. - Some command-line options for the
diffusionexample have changed. - CMake 3.9 or later is now required for CMake builds.
Removed
zfp::array::get_header()has been replaced with azfp::array::header
constructor that accepts an array object.ZFP_VERSION_RELEASEis no longer defined (useZFP_VERSION_PATCH).
Fixed
- #66:
make installoverwrites googletest. - #84: Incorrect order of parameters in CUDA
memset(). - #86: C++ compiler warns when
__STDC_VERSION__is undefined. - #87:
CXXFLAGSis misspelled incfp/src/Makefile. - #98:
zfp_stream_maximum_size()underestimates size in reversible mode. - #99: Incorrect
private_viewreads due to missing writeback. - #109: Unused CPython array is incompatible with PyPy.
- #112: PGI compiler bug causes issues with memory alignment.
- #119: All-subnormal blocks may cause floating-point overflow.
- #121: CUDA bit offsets are limited to 32 bits.
- #122:
make installdoes not install zfp command-line utility. - #125: OpenMP bit offsets are limited to 32 bits.
- #126:
make installdoes not install Fortran module. - #127: Reversible mode reports incorrect compressed block size.
- #150: cmocka tests do not build on macOS.
- #154: Thread safety is broken in
private_viewandprivate_const_view. ZFP_MAX_BITSis off by one.diffusionC,iteratorCare not being built withgmake.