Skip to content

Releases: CODARcode/libpressio

libpressio version 0.55.0

20 Jan 14:20
Compare
Choose a tag to compare

libpressio version 0.55.0

Major Changes

  • launch modules are now user extendable with the
    libpressio_ext/launch/external_launch.h header this will allow
    users to provide their own process launching mechanisms where
    traditional methods are blocked/disallowed.
  • Support for remote metrics servers which use a JSON protocol was
    added. This enables servers that use MPI to be nested beneath MPI and
    allows for metrics servers that have long startup times to remain
    running and respond to multiple metrics requests. The protocol format
    is still unstable and may change.
  • New meta-IO module called copy_template which copies a template from
    another file before dispatching to another IO module for writing.
    This enables users to copy most of an HDF5 file and overwrite only a
    portion of it when using it with external metrics.
  • POSSIBLE BREAKING CHANGE, external:command is now a write only
    setting. If the module supports it, the corresponding option is now
    external:commands which is a std::vectorstd::string. The old name
    sets this new parameter by splitting on spaces.
  • the external metrics module gained the ability to choose to intercept
    pressio_compressor_compress_many or pressio_compressor_compress via
    external:use_many
  • New higher level python interface libpressio.py It's interface is
    also unstable and may change frequently.

Minor Changes

  • Support for newer versions of mgard which use mgard::mgard_library as
    the cmake target

Bug Fixes

  • fixed some static analysis warnings in the test cases.

libpressio version 0.54.0

20 Jan 14:20
Compare
Choose a tag to compare

libpressio version 0.54.0

Major Changes

  • Many fixes/improvements to the python bindings
    • libpressio python bindings now support mpi4py so MPI_Comm's can be
      passed to compressors and other things that use them.
    • pointer functions for primitive types were added for completeness
    • pressio_options_{new,set,get}_strings now work from the python
      bindings
    • there is now a way to convert pressio_data objects holding bytes to
      a python byte array.
  • Many fixes/improvements to the HDF5 plugin:
    • hdf5 plugin learned to do collective IO when HDF5 is PHDF5
    • hdf5 plugin no-longer crashes when you attempt to create a dataset
      in a group that does not yet exist, by setting
      H5P_set_create_intermediate_group in the link creation properties
    • hdf5 plugin learned to enable and disable parallel io based on the
      new use_parallel option
  • external metrics now properly supports creating datasets that use
    multiple buffers, earlier attempts to use this functionality resulted
    in either a crash or unintended behaivor
  • ABI break - pressio_compressor_{compress,decompress}_many arguments
    changed to struct pressio_data const*const[] to allow implicit
    conversions from pressio_data *[]. This change didn't affect any
    internal use case, but makes the API more ergonomic for users.

Minor Changes:

  • external_metrics plugin now uses the copy constructor to clone itself.
    This reduced code complexity and eliminated bugs.
  • the internal libpressio_launch_plugin is now cloneable, this was to
    enable making external metrics default copy constructible.
  • pressio_data options are now convertible to them self.
  • extensive refactoring and strengthening of external metrics test cases
    to ensure correctness.

libpressio version 0.53.2

20 Jan 14:20
Compare
Choose a tag to compare

libpressio version 0.53.2

Bug Fix

  • previously hdf5 paths that begin with a slash caused a stack overflow
    and a segfault from infinite recursion. This issue has been
    resolved by looking for a slash at the beginning of the path name.

libpressio version 0.53.1

20 Jan 14:20
Compare
Choose a tag to compare

libpressio version 0.53.1

bug fix

  • remove unneeded reference to zfp/types.h

libpressio version 0.53.0

20 Jan 14:20
Compare
Choose a tag to compare

libpressio version 0.53.0

Major Changes

  • POSSIBLE BREAKING CHANGE pressio_option can now hold
    {u,}int{8,16,32,64}_t values and the return type of the pressio
    option functions which returned an int now accept/return an int32_t.
    This enables LibPressio to support more complex configurations types
    without resorting to a user_data type or using a pressio_data object
    where it isn't needed. Additionally, pressio_option_int32_type no
    longer convert implicitly to double. This is because the previous
    behavior was ambiguous depending on which compiler you used, and it
    was contrary to the intended spirit of the functionality. implict
    conversions were intended to never reduce precision the old
    functionality could do that. The new definitions for the conversions
    are based on the C++ standards definition of what a narrowing
    conversion is. This means that one conversion which is safe on most
    architectures and compilers (int32_t -> double) is not allowed at time
    of writing since the standard considers all integral to floating_point
    conversions to be narrowing. Some test cases were updated to match
    the new behavior. Serializaton and printer routines were updated to
    match. Corresponding stable C APIs were added.

Bug Fixes

  • sz plugin now returns thread safety as a int32_t like every other
    compressor.
  • explicitly made all returns of thread_safety int32_t rather than just
    int.
  • removed unused arguments from the test code.
  • LibPressio no longer adds -Werror by default to debug builds. This
    caused trigger undesired build failures on old/buggy compilers. To
    restore the old functionality, pass
    -DLIBPRESSIO_TREAT_WARNINGS_AS_ERRORS=ON to CMake

libpressio version 0.52.2

20 Jan 14:20
Compare
Choose a tag to compare

libpressio version 0.52.2

Bug Fixes

  • SWIG does not handle templates using uint64_t other similar types
    well. It automatically converts them to some standard type with
    matching size prior to template instantiation.
    For example, uint64_t -> unsigned long long. In order for type maps
    to apply correctly, we also need to use these types. Added a test
    case because I don't trust this to not break something on another
    platform.
  • Use doxygen doc string generation for pressio python module

libpressio version 0.52.1

20 Jan 14:20
Compare
Choose a tag to compare

libpressio version 0.52.1

Bug Fixes

  • zfp_plugin now uses std_compat for std::exchange

libpressio version 0.52.0

20 Jan 14:20
Compare
Choose a tag to compare

libpressio version 0.52.0

Major Changes

  • Removed libpressio_ext/compat/* as a separate library called
    std_compat to enable other packages such as libdistributed to use
    it separately from libpressio.

libpressio version 0.51.0

06 Nov 16:56
Compare
Choose a tag to compare

libpressio version 0.51.0

Major Changes

  • Massive performance improvements for NumPy interop through avoiding
    several unrequired copies
  • LIBPRESSIO_INTERPROCEDERAL_OPTMIMIAZATION added to support link time
    optimization
  • Several improvements to the HDF5 io plugin to allow for partial
    reads/writes, better error handling, and additional test cases

libpressio version 0.50.5

06 Nov 16:56
Compare
Choose a tag to compare

libpressio version 0.50.5

Bug Fixes:

  • span now does not use reserved name _Offset
  • pressio_data now checks if the buffer is empty before calling malloc
    to prevent undefined behavior on platforms where malloc(0) is
    undefined behavior
  • pressio_metrics now handles self assignment
  • bit grooming now uses the correct BG_DOUBLE type for doubles
  • prevent catastrophic truncation in kl_divergance plugin