Skip to content

libpressio version 0.60.0

Latest
Compare
Choose a tag to compare
@robertu94 robertu94 released this 19 Mar 14:14
· 1 commit to master since this release

libpressio version 0.60.0

Major Changes

  • ABI break: the pressio_io_read and related experimental functions no
    longer delete or steal the input, but more correctly move the input as
    documented. Previously these functions deleted the input value, but
    this made it very difficult to safely wrap these functions on platforms
    that are garbage collected.
  • BREAKING: the libpressio higher-level python binding had several changes to
    how it handled configurations:
    1. bytes objects are now created as pressio_data objects this is to be
      more conistent across the interface and fix some faulty conversions
      in SZ-ExaFEL that should have worked
    2. mpi4py MPI Communicator objects can now be passed if built with
      mpi4py support
    3. Several changes to how type-inference works in the python bindings.
      For most users, these will just be improvements, and enable a
      correct implementation of numcodecs.Codec interface
    • if a template object is NOT passed, we no longer set entires with
      a None value. This prevents segfaults
    • if a template object is passed, we now only pass the new options
      rather than all of the objects from the template.
    • if a template object is passed, we call pressio_options.set_type
      if a None value is passed with the type from the template.
    1. Several default arguments were added to make things default
      construable.
    2. name parameters are now only passed if they are truthy
    3. get_configurations was renamed get_compile_config() to be more
      consistently and understandably named
    4. get_config() now returns a dict which can be directly passed to
      from_configuration and things should just work
    5. Similar changes were made to PressioIO
  • A pretty substantial rewrite to how external_forkexec reads from its
    child process to use select to be more efficient and avoid deadlocks in
    poorly behaved (segfaulting) child processes.

Minor Changes

  • pressio_data::dimensions now returns a const reference
  • better debugging output in the external metric test cases

Bug Fixes

  • fixed a case where the constructor to pressio_data would segfault if
    passed a nullptr
  • fixed a number of segfaults when using distributed_manager (i.e.
    many_indepenent/many_dependent/etc...) when building with C++11 caused
    by constructing with an empty initializer list instead of compat::nullopt
  • fixed a number of compilation failures in the JSON bindings that
    incorrectly were implemented in C++17.
  • pinned the version of gtest to avoid build failures in anticipation of
    them adding an abseil dependency.