Compressed numerical arrays that support high-speed random access
This patch release primarily addresses minor bug fixes and is needed to update the zfpy Python wheels.
BUILD_TESTING_FULL
, specifies that all unit tests be
built; BUILD_TESTING
produces a smaller subset of tests. Full tests and
documentation are now included in releases.libm
dependency is not always correctly detected.ptrdiff_t
is not always imported in Cython.rpath
is not set correctly in executables.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.
zfp::const_array
: read-only variable-rate array that supports
fixed-precision, fixed-accuracy, and reversible modes.const
versions of array references, pointers, and iterators.zfp::array::size_bytes()
allows querying the size of different components
of an array object (e.g., payload, cache, index, metadata, ...).zfp_field
and zfp_stream
structs.zfp_config
: struct that encapsulates compression mode and parameters.array
, iteratorC
, and ppm
.array/
, cfp/include/
, and include/
have been renamed
and reorganized into a common include/
directory.
zfp.h
, zfp.hpp
, and zfp.mod
for C, C++, and Fortran bindings, respectively. These all appear in
the top-level include/
directory upon installation..hpp
suffix; C headers use a .h
suffix.array/zfparray.h
have been renamed zfp/array.hpp
.cfp/include/cfparrays.h
have been renamed zfp/array.h
.size_t
and ptrdiff_t
replace uint
and int
for array sizes and
strides in the array classes and C/Fortran APIs.zfp_bool
replaces int
as Boolean type in the C API.bitstream_offset
and bitstream_size
replace size_t
to ensure support
for 64-bit offsets into and lengths of bit streams. Consequently, the
bitstream
API has changed accordingly.const_reference
rather than a scalar
type like float
to allow obtaining a const_pointer
to an element
of an immutable array.zfp::array::compressed_data()
now returns void*
instead of uchar*
.zfp::array::header
and zfp::exception
classes with new exception
messages.codec
class is now responsible for all details regarding
compression.memoryview
over
bytes
objects for decompression.zfp
instead of zforp_module
.diffusion
example have changed.zfp::array::get_header()
has been replaced with a zfp::array::header
constructor that accepts an array object.ZFP_VERSION_RELEASE
is no longer defined (use ZFP_VERSION_PATCH
).make install
overwrites googletest.memset()
.__STDC_VERSION__
is undefined.CXXFLAGS
is misspelled in cfp/src/Makefile
.zfp_stream_maximum_size()
underestimates size in reversible mode.private_view
reads due to missing writeback.make install
does not install zfp command-line utility.make install
does not install Fortran module.private_view
and private_const_view
.ZFP_MAX_BITS
is off by one.diffusionC
, iteratorC
are not being built with gmake
.Added support for reversible (lossless) compression of floating-point and integer data.
Added methods for serializing and deserializing zfp's compressed arrays.
Added Python bindings for compressing NumPy arrays.
Added Fortran bindings to zfp's high-level C API.
Change:
Bug fixes:
Added support for CUDA fixed-rate compression and decompression.
Added views into compressed arrays for thread safety, nested array indexing, slicing, and array subsetting.
Added C language bindings for compressed arrays.
Added support for compressing and decompressing 4D data.
Changes:
Bug fixes:
Added support for OpenMP multithreaded compression (but not decompression).
Added options for OpenMP execution to zfp command-line tool.
Changed return value of zfp_decompress to indicate the number of compressed bytes processed so far (now returns same value as zfp_compress on success).
Added compressed array support for copy construction and assignment via deep copies.
Added virtual destructors to enable inheritance from zfp arrays.
Added iterators and proxy objects for pointers and references.
Added example illustrating how to use iterators and pointers.
Modified diffusion example to optionally use iterators.
Moved internal headers under array to array/zfp.
Modified 64-bit integer typedefs to avoid the C89 non-compliant long long and allow for user-supplied types and literal suffixes.
Renamed compile-time macros that did not have a ZFP prefix.
Fixed issue with setting stream word type via CMake.
Rewrote documentation in reStructuredText and added complete documentation of all public functions, classes, types, and macros. Removed ASCII documentation.