ADIOS v2.4.0, June 30th 2019. This release should be considered stable and suitable for deployment. We highly recommend migration to this version for long term support and future API compatibility.


  • Automatic conversion to fixed width types (int -> int32_t), in all bindings to facilitate portable types and bpls output
  • MPI library "serial" functionality. ADIOS2 library compiled with MPI can run with code not invoking MPI_Init and MPI_Finalize running in serial. Requires linking with MPI for symbols.
  • Stable high-level APIs in Python and C++ supporting local variables
  • Zero-copy access to the engine buffer memory in Write mode. Uses Variable<T>::Span per Engine Put block, based on upcoming C++20 std::span. Available in BP3 Engine C++ APIs only.
  • New functionality in Fortran and C APIs for safer handling of subroutines/functions outputting strings
  • Addition of no-op backends to disable selected functionality and / or evaluate the performance impact of various layers
    • null Engine : Bypass all library actions as soon as possible, often in the high-level language bindings before the core library is even reached
    • nullcore Engine: Implemented in the core of the library allowing the front-end data management and variable operations to occur but to transparently ignore all write and buffering requests.
    • null Transport : For use with the BP engines, this will bypass all disk I/O operations. All of the data management and buffering will still occur but there will be no actual data written to a file.
  • Optimization of data exchanges in the SST engine when a fixed data exchange pattern is specified via LockWriterDefinitions/LockReaderSelections
  • PreciousFirstTimestep engine mode allows saving mesh and other one-time-output in a stream, so that late-comer readers can properly initialize from the first input step. Available in SST engine only.
  • Added support for MemorySelection for reading into non-contiguous memory (e.g. ghost cells). Available in BP3 Engine only.
  • Fixed several bugs: substreams aggregation, endian interoperability, local variables and bpls
  • Complete redesign of the user guide documentation in readthedocs
  • Added several new lossless compression plugins in BP buffer: bzip2, libpng, blosc. Available in BP and SST engines only.
  • Availability of tools interface with connection to TAU 2.28 or greater.


  • LatestAvailable reading mode has been removed from BeginStep() and is now specified at Open() with AlwaysProvideLatestTimestep engine parameter. This allows for more optimized queueing behavior in staging engines. This breaks API compatibility with v2.3.x

  • IO.LockDefinitions() function has been removed and replaced with Engine.LockWriterDefinitions() and Engine.LockReaderSelections() to improve clarity and separate functionality. As before, calling these functions informs ADIOS2 that the write/read pattern between two applications in staging is unchanging from timestep to timestep (after the calls). This allows certain optimizations, such as eliminating some metadata exchanges and pre-loading data to the readers. This breaks API compatibility with v2.3.x

  • Data queueing in the SST engine has been redesigned, adding more explicit support for retaining timesteps for late-arriving readers (see the ReserveQueueLimit engine parameter), but also changing the way timesteps are handled when there are no readers present. In the no-readers case, specifying QueueFullPolicy:Blocking will no longer cause SST to pause until a reader arrives. This behavior is a change from v2.3.x