CHANGES IN VERSION 1.18.0
-------------------------

NEW FEATURES

    o Add 'as.sparse' argument to h5mread(), HDF5Array(), HDF5ArraySeed(),
      writeHDF5Array(), saveHDF5SummarizedExperiment(), and
      HDF5RealizationSink().
      Even though it won't change how the data is stored in the HDF5 file
      (data will still be stored the usual dense way), the 'as.sparse'
      argument allows the user to control whether the HDF5 dataset should
      be considered sparse (and treated as such) or not. More precisely,
      when HDF5Array() is called with 'as.sparse=TRUE', the returned object
      will be considered sparse i.e. blocks in the object will be loaded as
      sparse objects during block processing. This should lead to less
      memory usage and hopefully overall better performance.

    o Add is_sparse() setter for HDF5Array and HDF5ArraySeed objects.

SIGNIFICANT USER-VISIBLE CHANGES

    o Change default value of 'verbose' argument from FALSE to NA for
      writeHDF5Array(), saveHDF5SummarizedExperiment(), and writeTENxMatrix().

BUG FIXES

    o Fix handling of logical NAs in h5mread().

    o Fix bug in saveHDF5SummarizedExperiment() when 'chunkdim' is specified.


CHANGES IN VERSION 1.16.0
-------------------------

NEW FEATURES

    o New h5writeDimnames()/h5readDimnames() functions for writing/reading
      the dimnames of an HDF5 dataset to/from the HDF5 file.
      See ?h5writeDimnames for more information.

    o Add full support for HDF5Array objects of type "raw":
      - writeHDF5Array() now works on a DelayedArray object of type "raw" (it
        creates an H5 dataset of type H5T_STD_U8LE).
      - The HDF5Array() constructor now should return an HDF5Array object of
        type "raw" when pointed to an H5 dataset with an 8-bit width type (e.g.
        H5T_STD_U8LE, H5T_STD_U8BE, H5T_STD_I8LE, H5T_STD_I8BE, H5T_STD_B8LE,
        H5T_STD_B8BE, etc...)

    o Add 'H5type' argument to writeHDF5Array().

    o h5mread() now supports contiguous (i.e. unchunked) string data.

SIGNIFICANT USER-VISIBLE CHANGES

    o HDF5Array objects now find their dimnames in the HDF5 file.
      writeHDF5Array() and as(x, "HDF5Array") know how to write the dimnames
      to the HDF5 file, and the HDF5Array() constructor knows how to find
      them. See ?writeHDF5Array for more information.

BUG FIXES

    o Fix bug causing character data to be truncated when written to HDF5 file.

    o Fix h5mread() inefficiency when the user selection covers full chunks.

    o h5mread() now handles character NAs consistently with rhdf5::h5read().

    o Fix writeHDF5Array() error on character array filled with NAs.


CHANGES IN VERSION 1.14.0
-------------------------

NEW FEATURES

    o Add coercions from TENxMatrix (or TENxMatrixSeed) to dgCMatrix

SIGNIFICANT USER-VISIBLE CHANGES

    o h5mread() argument 'starts' now defaults to NULL

BUG FIXES

    o h5mread() now supports datasets with contiguous layout (i.e. not chunked)


CHANGES IN VERSION 1.12.0
-------------------------

NEW FEATURES

    o Add 'prefix' arg to save/loadHDF5SummarizedExperiment()

    o Add quickResaveHDF5SummarizedExperiment() for fast re-saving after
      initial saveHDF5SummarizedExperiment().
      See ?quickResaveHDF5SummarizedExperiment for more information.

    o Add h5mread() as a faster alternative to rhdf5::h5read(). It is now
      the workhorse behind the extract_array() method for HDF5ArraySeed
      objects. This change should significantly speed up block processing
      of HDF5ArraySeed-based DelayedArray objects (including HDF5Array
      objects).


CHANGES IN VERSION 1.10.0
-------------------------

NEW FEATURES

    o Implement the TENxMatrix container (DelayedArray backend for the
      HDF5-based sparse matrix representation used by 10x Genomics).
      Also add writeTENxMatrix() and coercion to TENxMatrix.

SIGNIFICANT USER-VISIBLE CHANGES

    o By default automatic HDF5 datasets (e.g. the dataset that gets written
      to disk when calling 'as(x, "HDF5Array")') now are created with chunks
      of 1 million array elements (revious default was 1/75 of
      'getAutoBlockLength(x)'). This can be controlled with new low-level
      utilities get/setHDF5DumpChunkLength().

    o By default automatic HDF5 datasets now are created with chunks of
      shape "scale" instead of "first-dim-grows-first". This can be
      controlled with new low-level utilities get/setHDF5DumpChunkShape().

    o getHDF5DumpChunkDim() looses the 'type' and 'ratio' arguments (only 'dim'
      is left).

