github llnl/zfp 1.0.0

latest release: 1.0.1
3 years ago

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.
  • const versions 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_field and zfp_stream structs.
  • zfp_config: struct that encapsulates compression mode and parameters.
  • Rounding modes for reducing bias in compression errors.
  • New examples: array, iteratorC, and ppm.

Changed

  • Headers from array/, cfp/include/, and include/ have been renamed
    and reorganized into a common include/ directory.
    • The libzfp API is now confined to 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.
    • C++ headers now use a .hpp suffix; C headers use a .h suffix.
    • C++ headers like array/zfparray.h have been renamed zfp/array.hpp.
    • C headers like 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.
  • All array and view iterators are now random-access iterators.
  • Array inspectors now return 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*.
  • The array (de)serialization API has been revised, resulting in new
    zfp::array::header and zfp::exception classes with new exception
    messages.
  • The array codec class 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 memoryview over
    bytes objects for decompression.
  • The zFORp Fortran module name is now zfp instead of zforp_module.
  • Some command-line options for the diffusion example have changed.
  • CMake 3.9 or later is now required for CMake builds.

Removed

  • 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).

Fixed

  • #66: make install overwrites googletest.
  • #84: Incorrect order of parameters in CUDA memset().
  • #86: C++ compiler warns when __STDC_VERSION__ is undefined.
  • #87: CXXFLAGS is misspelled in cfp/src/Makefile.
  • #98: zfp_stream_maximum_size() underestimates size in reversible mode.
  • #99: Incorrect private_view reads 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 install does not install zfp command-line utility.
  • #125: OpenMP bit offsets are limited to 32 bits.
  • #126: make install does 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_view and private_const_view.
  • ZFP_MAX_BITS is off by one.
  • diffusionC, iteratorC are not being built with gmake.

Don't miss a new zfp release

NewReleases is sending notifications on new releases.