
CHANGES IN VERSION 2.9.1 [2024-11-4]
------------------------------------

BUG FIXES

    o Change C-level 'Free()' calls to 'R_Free()'

CHANGES IN VERSION 2.7.10 [2024-10-16]
------------------------------------

NEW FEATURES

    o Add 'fetch' and 'flash()' for base R types

SIGNIFICANT USER-VISIBLE CHANGES

    o Update 'fetch()' and 'flash()' to pass more
        arguments to underlying 'matter' constructors

CHANGES IN VERSION 2.7.9 [2024-10-7]
------------------------------------

NEW FEATURES

    o Add 'pivots' argument to 'fastmap()' to support
        more than 2 pivot candidates per iteration

SIGNIFICANT USER-VISIBLE CHANGES

    o Update 'fetch()' and 'flash()' to preserve atoms types
    o Update 'fetch()' and 'flash()' to fall back to serial
        execution if BPPARAM is a distributed cluster

BUG FIXES

    o Add 'chunkopts' to 'nscentroids()' and 'sgmix()'
        signatures to fix downstream '...' bugs
    o Fix graphical parameters not applying to vizi plots

CHANGES IN VERSION 2.7.8 [2024-9-4]
------------------------------------

BUG FIXES

    o Fix shared memory segmentation faults on Linux
    o Fix voxel plotting when length(unique(z)) == 1L

CHANGES IN VERSION 2.7.7 [2024-8-26]
------------------------------------

NEW FEATURES

    o New 'fetch()' and 'flash()' generics for moving
        data between file storage and shared memory

SIGNIFICANT USER-VISIBLE CHANGES

    o Support both number of items OR size in bytes when
        setting getOption("matter.default.chunksize")
    o Now using '@' prefix as shared memory identifier
        for file system compatibility (e.g., Windows)
    o Deprecated 'sgmixn()'; updated 'sgmix()' to support
        multichannel images directly
    o Improved RNG behavior for non-L'Ecuyer seeds

BUG FIXES

    o Fix potential infinite loop in 'mi_learn()'
    o Add warning in chunk-apply functions if 'RNG=TRUE'
        but 'RNGkind()' is _not_ "L'Ecuyer-CMRG"

CHANGES IN VERSION 2.7.6 [2024-8-14]
------------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Add 'cpals()' and 'dpals()' to list available palettes
    o Moving 'simple_logger' now appends 'sessionInfo()'
    o Statistical methods 'fastmap()' and 'nscentroids()'
        now use 'rowDists()' and 'colDists()' directly
    o Optional argument 'distfun' has new requirements
        in methods 'fastmap()' and 'nscentroids()'
    o Class 'matter_str' now inherits from 'matter_list'
        for consistency between R and C++ interfaces
    o Export '.rowDists()' and '.colDists()' functions

BUG FIXES

    o Fix 'simple_logger' finalizer on R session exit

CHANGES IN VERSION 2.7.5 [2024-8-5]
------------------------------------

NEW FEATURES

    o Shared memory support comes to 'matter' via boost!
    o Add 'as.shared()' for coercion to shared memory 'matter' objects
    o Use 'path=":memory:"' to construct 'matter' object in shared memory
    o Use 'mem()' to monitor shared memory usage

SIGNIFICANT USER-VISIBLE CHANGES

    o Add shared memory support to 'mem()' output
    o Add cluster memory support to 'memtime()' output
    o Add cluster memory monitoring with 'memcl()' function
    o New documentation for several previously-undocumented
        utility functions that may be useful for others
    o New 'permute' argument in chunk-apply functions

BUG FIXES

    o Improved behavior for the general 'matter()' constructor
    o Use private RNG for 'uuid()' to avoid collisions
        from 'set.seed()' and to avoid changing '.Random.seed'
    o Fix 'is_gridded()' and 'to_raster()' behavior
        for non-integer coordinates and character rasters

CHANGES IN VERSION 2.7.4 [2024-8-2]
------------------------------------

NEW FEATURES

    o Add 'SnowfastParam' class to support PSOCK clusters
        for faster startups and faster serialization
    o Add getOption("matter.default.chunksize") for setting
        the approximate size of chunks in bytes
    o Add getOption("matter.default.serialize") for managing
        serialization behavior in chunk-apply functions
    o New 'simple_logger' class for writing log files
    o New 'options(matter.temp.dir=tempdir())' replaces
        the previous 'options(matter.dump.dir=tempdir())'
    o New 'options(matter.temp.gc=TRUE)' controls whether
        temporary matter files are automatically removed when
        all R objects referencing them are garbage collected
    o Temporary matter files are now garbage collected!

SIGNIFICANT USER-VISIBLE CHANGES

    o New 'chunkopts' argument replaces 'nchunks' and includes
        the new chunk options ("chunksize" and "serialize")

BUG FIXES

    o Fix leaky closures in internal chunk loop functions
        causing slow parallel performance on large datasets
    o Fix internal bug in 'eval_exprs()' where 'recursive'
        attribute was always set to 'TRUE'

CHANGES IN VERSION 2.7.3 [2024-7-26]
------------------------------------

NEW FEATURES

    o Add new functions 'knnmax()' and 'knnmin()'
    o Add new functions 'filtn_ma()', 'filtn_conv()', etc.
    o Add support for N-dimensional signals to 'estnoise_*()' functions
    o Add 'findpeaks_knn()' for KNN-based peak detection

SIGNIFICANT USER-VISIBLE CHANGES

    o Add signal processing vignette
    o Faster 'knnsearch()' when the data and query are the same
    o Ties in 'knnsearch()' are now broken based on data order
    o Updated 'estnoise_sd()', 'estnoise_mad()', and 'estnoise_quant()'

BUG FIXES

    o Improvements to 'filt1_adapt()' and 'filt2_adapt()'

CHANGES IN VERSION 2.7.2 [2024-5-23]
------------------------------------

NEW FEATURES

    o Support 2D signals in 'plot_signal()' (e.g., for ion mobility)
    o New argument 'alphapow' in 'plot_signal()' and 'plot_image()'

SIGNIFICANT USER-VISIBLE CHANGES

    o Plot method for 'vizi_bars' now sums duplicate bar counts

BUG FIXES

    o Fix chunk-apply functions for BPPARAM=NULL
    o Fix 'chunkMapply()' named list errors
    o Fix 'is_gridded()' so infinite 'estres()' result gives FALSE
    o Give more useful error messages for 'dpal()' and 'cpal()'
    o Fix alpha channel in 'plot_image()'

CHANGES IN VERSION 2.7.1 [2024-5-17]
------------------------------------

NEW FEATURES

    o Support subsetting of deferred operations
    o Add 'chunked' classes for chunked objects
    o Add 's_stat()' for grouped streaming statistics
    o For 'plot_image()', set 'useRaster' to plot 3d surface/volume vs voxels
    o Add 'enhance_adj()' function for adjusting extreme values

SIGNIFICANT USER-VISIBLE CHANGES

    o Performance improvements for chunk-apply functions
    o Support chunk-apply functions on remote cluster workers
    o Reduced memory usage for chunk-apply functions on SNOW clusters
    o Image smoothing 'filt2_*()' functions support multiple channels
    o Contrast enhancement 'enhance_*()' functions support multiple channels
    o Remove 'biglm' from imports

BUG FIXES

    o Fix subplot axis scaling and aspect ratio for 'plotly' graphics
    o Fix passing colors to line charts for 'plotly' graphics

CHANGES IN VERSION 2.6.3 [2024-7-15]
------------------------------------

BUG FIXES

    o Fix 'filt2_gauss()' behavior with NAs

CHANGES IN VERSION 2.6.2 [2024-6-10]
------------------------------------

BUG FIXES

    o Fix 'sgmixn()' on 'matter_mat' and 'sparse_mat' input

CHANGES IN VERSION 2.6.1 [2024-5-7]
------------------------------------

BUG FIXES

    o Fix 'matter_list' error on zero-length elements

CHANGES IN VERSION 2.5.22 [2024-4-26]
------------------------------------

BUG FIXES

    o Fix y-flipped raster images on non-macOS platforms

CHANGES IN VERSION 2.5.21 [2024-4-26]
------------------------------------

NEW FEATURES

    o Add new vizi mark 'image' for plotting pre-rastered images
    o Add arguments 'rasterImages' and 'rasterParams' to 'plot_image()'

CHANGES IN VERSION 2.5.20 [2024-4-26]
------------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Update 'trans2d()' and 'warp2_trans()' to support arrays

CHANGES IN VERSION 2.5.19 [2024-4-25]
------------------------------------

NEW FEATURES

    o Add new vizi mark 'rules' for reference lines

CHANGES IN VERSION 2.5.18 [2024-4-24]
------------------------------------

NEW FEATURES

    o Add support for optional 'plotly' graphics output
    o Add 'vizi_engine()' for setting the plotting engine
    o Add support for 3D images to 'plot_image()'

SIGNIFICANT USER-VISIBLE CHANGES

    o Export 'parse_formula()' for developer use

BUG FIXES

    o Fix 'plotly' error from non-gridded voxels

CHANGES IN VERSION 2.5.17 [2024-4-19]
------------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Allow passing subplots to 'as_facets()' via '...'

BUG FIXES

    o Fix 'rowsweep()'/'colsweep()' behavior with NA groups
    o Fix 'cv_do()' and 'mi_learn()' behavior with NA labels

CHANGES IN VERSION 2.5.16 [2024-4-17]
------------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Add PLS 1-component regressions to 'opls' output
    o Add 'fitted()' method for 'opls'
    o Update 'predict()' method for 'opls'
    o Add multiple instance learning support to 'cv_do()'

BUG FIXES

    o Fix 'opls_nipals()' usage with 'mi_learn()'
    o Fix error setting bags to negative class in 'mi_learn()'

CHANGES IN VERSION 2.5.15 [2024-4-17]
------------------------------------

BUG FIXES

    o Use names "MacroRecall"/"MacroPrecision" in 'cv_do()'

CHANGES IN VERSION 2.5.14 [2024-4-13]
------------------------------------

NEW FEATURES

    o Add function 'rocscore()' for calculating ROC AUC

BUG FIXES

    o Fix bug in 'mergepeaks()' merging too aggressively
    o Fix NAs in probability in 'nscentroids()'
    o Fix formatting for 'size_bytes()' when vmem is 0
    o Fix bug in 'cv_do()' not processing test set

CHANGES IN VERSION 2.5.13 [2024-4-8]
------------------------------------

BUG FIXES

    o Fix error in 'estnoise_filt()' when all peaks are noise

CHANGES IN VERSION 2.5.12 [2024-4-5]
------------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Add 'free' argument to 'plot_signal()' and 'plot_image()'
    o Add 'style' argument to 'set_par()'
    o Return 'fitted.values' from each fold in 'cv_do()'
    o Add 'pos' argument to 'mi_learn()' to specify positive class
    o Export 'chunkify()' and 'chunk_writer()' utilities
    o Export 'size_bytes()' constructor

BUG FIXES

    o Improve error messages for invalid plotting options
    o Rescale 'alpha' channel for images when 'enhance=TRUE'
    o Return 'probability' component for 'sgmixn()'
    o Prevent mark 'boxplot' from plotting extra axes
    o Fix 'mi_learn()' failing for missing values in response
    o Fix 'plot_image()' failing for constant opacity if 'scale=TRUE'

CHANGES IN VERSION 2.5.11 [2024-4-2]
-----------------------------------

NEW FEATURES

    o Add RNG utility functions 'RNGStreams()',
        'getRNGStream()', and 'setRNGStream()'
    o Add 'seeds' argument for parallel-safe RNG
        for 'chunk_lapply()', etc.
    o Add 'type' argument to 'drle' constructor
        to allow pure-RLE or sequential encoding
    o Add function 'sgmixn()' for fitting multiple
        spatial Gaussian mixture models in parallel
    o Add vizi marks 'intervals' and 'boxplot'
    o Add 'predscore()' for scoring predictions
    o Add 'cv_do()' for performing cross-validation

SIGNIFICANT USER-VISIBLE CHANGES

    o Change 'fitted()' argument 'type' to use "response"
        (instead of "probability") for 'nscentroids'
    o Print methods for models (e.g., 'pls', etc.) now
        truncate output to 'getOption("matter.show.head.n")'
    o Add 'jitter' transformation for vizi mark 'points', etc.
    o Export 'avg()' utility function

BUG FIXES

    o Fix bug in 'nscentroids()' predictions
    o Fix error in 'nscentroids()' for one-class models
    o Fix error in 'sgmix()' caused by singleton classes
    o Pass 'weights' argument to 'distfun()'
        in 'fastmap()' and 'nscentroids()'
    o Fix error in 'plot_image()' for NA-only images

CHANGES IN VERSION 2.5.10 [2024-3-24]
------------------------------------

NEW FEATURES

    o Add function 'peakheights()'
    o Add nearest shrunken centroids ('nscentroids()')
    o Add spatial Gaussian mixture model ('sgmix()')
    o Add colocalization coefficients ('coscore()')
    o Add multiple instance learning ('mi_learn()')

SIGNIFICANT USER-VISIBLE CHANGES

    o Rename 'estres()' parameter 'tol.ref' to 'ref'
    o Export 'array_ind()' and 'linear_ind()'
    o Add 'nchunks' argument to 'prcomp()' and 'pls()'
    o Vectorize 'predict.pls()' over 'k' argument
    o Set corresponding attributes to NULL when center/scale
        are FALSE in 'rowscale()' and 'colscale()'

BUG FIXES

    o Fix 'tolerance()' returning invalid value for 'tolerance()<-'
    o Fix error in 'peakareas()' when peak boundaries are NULL
    o Remove duplicate peaks in 'findpeaks_cwt()'
    o Fix potential infinite loop in 'binpeaks()'
    o Fix potential incorrect vector lengths in 'simspec()'

CHANGES IN VERSION 2.5.9 [2024-3-13]
-----------------------------------

BUG FIXES

    o When writing to a file in chunk apply functions, preserve
        order in file even if chunks are processed out-of-order

CHANGES IN VERSION 2.5.8 [2024-3-12]
-----------------------------------

NEW FEATURES

    o Added scaling functions 'rescale_rms()', 'rescale_sum()',
        'rescale_ref()', 'rescale_range()', and 'rescale_iqr()'

CHANGES IN VERSION 2.5.7 [2024-3-11]
-----------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Moved 'keys' and 'keys<-' generics to Cardinal
    o Removed 'chunksize' and 'chunksize<-' generics

BUG FIXES

    o Fix error with NAs in 'add_alpha()'
    o Fix flipped x/y coordinates in 'inpoly()'

CHANGES IN VERSION 2.5.6 [2024-3-7]
-----------------------------------

BUG FIXES

    o Fix error in apply functions when 'BPPARAM=NULL'
    o Remove zero-height peaks in 'plot_signal()'

CHANGES IN VERSION 2.5.5 [2024-3-6]
-----------------------------------

NEW FEATURES

    o Added 'plot_signal()' and 'plot_image()'
    o Added new mark 'vizi_text'

SIGNIFICANT USER-VISIBLE CHANGES

    o Add 'vizi' style 'classic' for transparent background
    o Implement 'vm_used()' for 'sparse_arr' objects
    o Implement 'combine()' for 'vizi_plot' objects
    o Rename 'plot_facets()' to 'as_facets()'

BUG FIXES

    o Fixed RStudio plotting bugs due to 'par(bg="transparent")'
    o Fixed 'matter_list' subsetting not subsetting type
    o Fixed 'vizi_pixels' issues with y-axis
    o Fixed plotting functions not passing along parameters
    o Handle mixed int/double types in 'ltob()' and 'lttb()'
    o Implement 'vm_used()' for 'sparse_arr'

CHANGES IN VERSION 2.5.4 [2024-2-18]
-----------------------------------

BUG FIXES

    o Improved 'mergepeaks()' efficiency

CHANGES IN VERSION 2.5.3 [2024-2-18]
-----------------------------------

BUG FIXES

    o Fixed stack overflow in 'sparse_mat' subsetting
    o Fixed 'mergepeaks()' failing for missing peaks

CHANGES IN VERSION 2.5.2 [2024-2-14]
-----------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o For 'estres()', allow 'tol=NA' or 'tol=Inf'

CHANGES IN VERSION 2.5.1 [2024-1-26]
-----------------------------------

BUG FIXES

    o Fixed bug in 'simspec()' not respecting 'units'
    o Enabled calling 'vizi()' with no arguments

CHANGES IN VERSION 2.3.18 [2023-8-21]
-----------------------------------

BUG FIXES

    o Fixed bug in 'kdtree()' stack size allocation
    o Cleaned up a few C++ compiler warnings

CHANGES IN VERSION 2.3.17 [2023-8-11]
-----------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Parameter 'filename' in 'struct()' is now 'path'

CHANGES IN VERSION 2.3.16 [2023-8-8]
-----------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Added 'checksum' method for character vectors (i.e., files)

CHANGES IN VERSION 2.3.15 [2023-8-8]
-----------------------------------

BUG FIXES

    o Fixed erroneous warning in 'matter_list' or 'matter_arr'
        constructors with existing files but no 'data' argument

CHANGES IN VERSION 2.3.14 [2023-8-7]
-----------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Added 'append' argument to matter constructors
    o Simplified 'sparse_arr' implementation by removing
        shared index representation (which was not really used)
    o When writing to an output file, 'chunkApply()' and friends
        now write entire chunks instead of each element
    o Added coercions from 'matter_list' to 'matter_arr', etc.

BUG FIXES

    o No longer truncate existing files when creating a matter object
        if nonexistent files are also included in the path

CHANGES IN VERSION 2.3.13 [2023-8-5]
-----------------------------------

BUG FIXES

    o Fixed translation from aliased C types to R types

CHANGES IN VERSION 2.3.12 [2023-8-5]
-----------------------------------

NEW FEATURES

    o Added 'image' method for formulas

CHANGES IN VERSION 2.3.11 [2023-8-3]
-----------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Changed specification of 'atoms' data types
    o Use 'int16', int32', 'uint32', etc. for integer types
    o Use 'float32' and 'float64' for floating point typess
    o Added aliases so 'short', 'int', 'double', etc., still work

CHANGES IN VERSION 2.3.10 [2023-8-2]
-----------------------------------

NEW FEATURES

    o Added 'rowMaj' S4 generic and methods

SIGNIFICANT USER-VISIBLE CHANGES

    o Remove defunct S4 generics

BUG FIXES

    o Fixed bug in 'approx1' for "max" and "min" interpolation

CHANGES IN VERSION 2.3.9 [2023-8-2]
-----------------------------------

NEW FEATURES

    o Added 'vizi_pixels' for image plotting
    o Added 'vizi_voxels' for 3D image plotting

SIGNIFICANT USER-VISIBLE CHANGES

    o In estnoise_*() functions, renamed argument 'width' to 'n'

CHANGES IN VERSION 2.3.8 [2023-7-29]
------------------------------------

NEW FEATURES

    o Added PLS (partial least squares)
    o Added 'pls_nipals' (NIPALS)
    o Added 'pls_simpls' (SIMPLS)
    o Added 'pls_kernel' (kernel algorithms #1 and #2)
    o Added OPLS (orthogonal PLS)
    o Added 'opls_nipals' (NIPALS)
    o Added FastMap projection with 'fastmap()'
    o Added 'rowDists()' and 'colDists()'
    o Added 'convolve_at()'

SIGNIFICANT USER-VISIBLE CHANGES

    o Added regularization to NMF functions for stability

CHANGES IN VERSION 2.3.7 [2023-7-21]
------------------------------------

NEW FEATURES

    o Added NMF (nonnegative matrix factorization)
    o Added 'nnmf_mult()' (multiplicative updates)
    o Added 'nnmf_als()' (alternating least squares)
    o Exported 'prcomp_lanczos()'

SIGNIFICANT USER-VISIBLE CHANGES

    o Accessing matter objects now checks for user interrupts

CHANGES IN VERSION 2.3.6 [2023-7-20]
------------------------------------

NEW FEATURES

    o Added 'rowdist()' and 'coldist()'
    o Added 'rowdist_at()' and 'coldist_at()'
    o Added parallelization support for matrix multiplication

CHANGES IN VERSION 2.3.5 [2023-7-10]
------------------------------------

NEW FEATURES

    o Added 'enhance_hist()' for histogram equalization
    o Added 'enhance_adapt()' for CLAHE

BUG FIXES

    o Fixed handling of missing values in smoothing filters

CHANGES IN VERSION 2.3.4 [2023-7-7]
-----------------------------------

NEW FEATURES

    o Added CWT based peak detection with
        'findpeaks_cwt()', 'findridges()' and 'cwt()'
    o Added 'estnoise_quant()'
    o Added 'filt1_conv()'
    o Added 'filt2_conv()'

CHANGES IN VERSION 2.3.3 [2023-7-5]
-----------------------------------

NEW FEATURES

    o Added 'trans2d()' for affine transformations
    o Added 'warp2_trans()' for transformation-based
        image registration using 'optim()'

CHANGES IN VERSION 2.3.2 [2023-7-4]
-----------------------------------

NEW FEATURES

    o More new signal processing features!
    o Added 'approx2()' for 2D signal resampling
        and interpolation of scattered data
    o Added 2D filtering including: 'filt2_ma()', 'filt2_gauss()',
        'filt2_bi()', 'filt2_adapt()', 'filt2_guide'
    o Added nonlinear diffusion 'filt1_diff()' and 'filt2_diff()'
    o Added the traditional Savitzky-Golay filter 'filt1_sg()'
    o Added 'kdsearch()' and 'kdtree()' for K-dimensional searches

SIGNIFICANT USER-VISIBLE CHANGES

    o Updated package DESCRIPTION

CHANGES IN VERSION 2.3.1 [2023-6-27]
-----------------------------------

NEW FEATURES

    o Lots of new signal processing features!
    o Added 'approx1()' for signal resampling and interpolation
    o Added 1D filtering including: 'filt1_ma()', 'filt1_gauss()',
        'filt1_bi()', 'filt1_adapt()', 'filt1_guide()', 'filt1_pag()'
    o Added 1D warping and alignment including: 'warp1_loc()',
        'warp1_dtc()', 'warp1_cow()'
    o Added continuum estimation including: 'estbase_loc()',
        'estbase_hull()', 'estbase_snip()', 'estbase_med()'
    o Added local noise estimation including: 'estnoise_sd()',
        'estnoise_mad()', 'estnoise_diff()',
        'estnoise_filt()'
    o Added peak processing including: 'findpeaks()',
        'peakwidths()', 'peakareas()', 'binpeaks()', 'mergepeaks()'
    o Added 'downsample()' for signal and time series visualization
    o Added 'vizi_plot' visualization methods

BUG FIXES

    o Fix missing <cstdint> include for gcc 13.1.1 compatibility


CHANGES IN VERSION 2.1.1 [2023-4-13]
-----------------------------------

BUG FIXES

    o Fixed NAMESPACE issue by importing 'Matrix::rowSums()' etc.

CHANGES IN VERSION 2.0.1 [2022-11-16]
-----------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Updated "User guide" vignette

BUG FIXES

    o Fixed combining for matter vectors and lists
    o Fixed slow 'matter_mat()' constructor for large # of atoms
    o Fixed bug with BPPARAM not passed in 'rowStats()'/'colStats()'

CHANGES IN VERSION 1.99.2 [2022-10-31]
-----------------------------------

BUG FIXES

    o Fix 'chunkApply()' behavior for when nchunks == 1
    o Fix 'atoms' failure when 'source' is a compressed 'drle'
    o Properly ignore missing groups in 'rowsweep()' and 'colsweep()'

CHANGES IN VERSION 1.99.1 [2022-10-30]
-----------------------------------

BUG FIXES

    o Minor bug fixes to 'matter_list' and 'struct()' behavior
    o Minor bug fix to endomorphic subsetting of sparse matrices
    o Minor bug fix to 'binvec()' behavior at vector endpoints    

CHANGES IN VERSION 1.99.0 [2022-10-23]
-----------------------------------

NEW FEATURES

    o Complete re-implementation of sparse array code in C++
    o Complete re-implementation of matter object C++ backends
    o New 'sparse_arr' class with 'sparse_mat' and 'sparse_vec'
    o New 'matter_arr' class with 'matter_mat' and 'matter_vec'
    o New 'asearch()' function for approximate search with interpolation
    o New 'chunkApply()' function replacing 'chunk_apply()', etc.
    o New 'colsweep()' and 'rowsweep()' functions w/ group parameter
    o New 'colscale()' and 'rowscale()' functions w/ group parameter
    o New 'drle_fct' class for delta-run-length encoded factors
    o New interpolation options for 'sparse_arr' objects
    o Simplified deferred arithmetic operations interface

SIGNIFICANT USER-VISIBLE CHANGES

    o New simplified constructors for most matter objects
    o Updated S4 internals for most matter objects
    o Updated S4 internals for sparse array objects
    o Deprecated some rarely-used functions and classes
    o Deprecated some S4 generic conflicts with core BioC packages

BUG FIXES

    o Fix to 'stream_var' and 'stream_sd' behavior when n=0 or n=1

CHANGES IN VERSION 1.19.1 [2021-10-20]
-----------------------------------

BUG FIXES

    o Fix error in 'cbind()' on two 'matter_vec' objects

CHANGES IN VERSION 1.17.1 [2020-11-27]
-----------------------------------

BUG FIXES

    o Fix 'apply()' signatures for R 4.1

CHANGES IN VERSION 1.15.1 [2020-9-3]
-----------------------------------

BUG FIXES

    o Remove '...' from 'which()'

CHANGES IN VERSION 1.13.10 [2020-4-20]
-----------------------------------

NEW FEATURES

    o Added 's_nnzero()' stream-stat for non-zero entries
    o Added 'push()' and 'pull()' generics for future use

CHANGES IN VERSION 1.13.9 [2020-4-18]
-----------------------------------

BUG FIXES

    o Minor updates to 'chunk_apply()' internals

CHANGES IN VERSION 1.13.8 [2020-3-13]
-----------------------------------

BUG FIXES

    o Fixed bugs due to logical condition length > 1

CHANGES IN VERSION 1.13.7 [2020-3-11]
-----------------------------------

BUG FIXES

    o Fixed to internal function 'linearInd()'

CHANGES IN VERSION 1.13.6 [2020-3-3]
-----------------------------------

BUG FIXES

    o Fixed bug caused by change in R 4.0 so that
        class of matrix is now c("matrix", "array")

CHANGES IN VERSION 1.13.5 [2020-3-2]
-----------------------------------

NEW FEATURES

    o Support for 'view="chunk"' when specifying 'pattern'

CHANGES IN VERSION 1.13.4 [2020-2-26]
-----------------------------------

NEW FEATURES

    o Added 'pattern' argument to 'chunk_mapply()'

CHANGES IN VERSION 1.13.3 [2020-2-9]
-----------------------------------

NEW FEATURES

    o Implemented 'outfile' argument for writing results
        to a file for 'chunk_apply()' and 'chunk_mapply()'

CHANGES IN VERSION 1.13.2 [2020-2-9]
-----------------------------------

NEW FEATURES

    o Added 'pattern' argument to 'chunk_apply()'

CHANGES IN VERSION 1.13.1 [2019-10-30]
-----------------------------------

NEW FEATURES

    o Added 'chunk_mapply()'

CHANGES IN VERSION 1.11.7 [2019-10-25]
-----------------------------------

BUG FIXES

    o Fixed errors in 'rowStats()' and 'colStats()' when
        calculating group statistics over minor dimensions

CHANGES IN VERSION 1.11.6 [2019-10-23]
-----------------------------------

NEW FEATURES

    o Added 'locmax()' function for finding local maxima
    o Added 'binvec()' function for binning vectors

CHANGES IN VERSION 1.11.5 [2019-10-13]
-----------------------------------

NEW FEATURES

    o Exposed 'chunk_apply()' for applying functions
        over parallelized chunks of vectors and matrices

CHANGES IN VERSION 1.11.4 [2019-10-13]
-----------------------------------

NEW FEATURES

    o Added 'rowStats()' and 'colStats()' methods for
        chunk-applying grouped summary statistics over
        the rows and columns of matrices

SIGNIFICANT USER-VISIBLE CHANGES

    o Family of 'apply()' and 'lapply()' methods now
        attempt to respect the object's 'chunksize()'
    o Added getOption('matter.default.chunksize') for
        setting default chunksize for matter objects

CHANGES IN VERSION 1.11.3 [2019-10-9]
-----------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Faster subsetting of matter-backed ALTREP objects
    o Updated 'bsearch()' to return the closest match when tol > 0
    o Added getOption('matter.dump.dir') to control where
        temporary files are stored for matter objects

CHANGES IN VERSION 1.11.2 [2019-7-24]
-----------------------------------

NEW FEATURES

    o Coercing to native R types now returns an ALTREP
        representation for most 'matter' objects
    o Use 'as.altrep()' method to coerce an existing
        'matter' object to ALTREP or to coerce native R types
        to 'matter'-backed out-of-memory ALTREP objects
    o ALTREP coercion can be controlled by new options:
        getOption('matter.coerce.altrep')
        getOption('matter.coerce.altrep.list')
        getOption('matter.wrap.altrep')
    o See ?`matter-options` for details

SIGNIFICANT USER-VISIBLE CHANGES

    o The 'show()' method for 'matter' objects now
        prints a preview of the data head
    o Printing of data can be controlled with new options
        getOption('matter.show.head') and
        getOption('matter.show.head.n')

CHANGES IN VERSION 1.11.1 [2019-5-7]
-----------------------------------

NEW FEATURES

    o Added 'stream_stat' class for streaming statistics
        with functions s_mean(), s_var(), s_sd(), etc.

CHANGES IN VERSION 1.9.11 [2019-4-19]
-----------------------------------

BUG FIXES

    o Fixed documentation link to 'base::lapply'

CHANGES IN VERSION 1.9.10 [2018-12-22]
-----------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Vectors can be used as 'virtual_mat' rows/columns now

CHANGES IN VERSION 1.9.9 [2018-12-22]
-----------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Constructor for 'drle' now allows forcing delta = 0
    o Updated display descriptions in 'show' methods
    o Check for NULL dimensions when subsetting
        'virtual_mat' and 'sparse_mat' classes

CHANGES IN VERSION 1.9.8 [2018-12-18]
-----------------------------------

BUG FIXES

    o Check for NULL dimensions in 'matter_arr' subsetting

CHANGES IN VERSION 1.9.7 [2018-12-18]
-----------------------------------

BUG FIXES

    o Fixed bug in atoms() where 'index_offset' and 'index_extent'
        would overflow when creating long 'matter_vec' objects

CHANGES IN VERSION 1.9.6 [2018-12-14]
-----------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Subsetting matter matrices, arrays, and data frames
        now checks for the correct number of dimensions
    o Linear indexing support for 'matter_mat' and 'matter_arr'

BUG FIXES

    o Class checks now use R_check_slot_etc() in C so subclasses
        of 'matter' objects should inherit correct behavior
    o Fixed other indexing issues in subsetting + assignment

CHANGES IN VERSION 1.9.5 [2018-12-14]
-----------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Updated documentation with `matter-datatypes`,
        size of data types are now explicitly defined
    o Changed 'filemode' slot to be a factor with
        levels c('r', 'w', 'rw') instead of a string
    o Data access now uses C++ fstream instead of C

BUG FIXES

    o On Windows, accessing data elements in large files
        with byte offets larger than MAX_INT now works
    o On Windows, data modes of 'long' and 'ulong' are
        now correctly 64-bit integer types
    o Assignment of negative values now checked for 'ulong'

CHANGES IN VERSION 1.9.4 [2018-12-8]
-----------------------------------

NEW FEATURES

    o Added %% and %/% delayed operations from Arith group
    o Added & and | delayed operations from Logic group
    o All Ops group generics now supported as delayed operations
    o Added 'lapply' and 'sapply' functions for 'matter_list'
    o Support for BiocParallel in 'apply', 'lapply', and 'sapply'

BUG FIXES

    o Fix floating point exception error when dividing by
        integer 0L in delayed division operations

CHANGES IN VERSION 1.9.3 [2018-12-8]
-----------------------------------

NEW FEATURES

    o Added matrix multiplication for 'sparse_mat' matrices
    o Added matrix multiplication for 'virtual_mat' matrices

CHANGES IN VERSION 1.9.2 [2018-11-12]
-----------------------------------

BUG FIXES

    o Renamed internal class 'bytes' to 'num_bytes' due to Rcpp

CHANGES IN VERSION 1.9.1 [2018-11-12]
-----------------------------------

BUG FIXES

    o Removed BiocGenerics 'lengths' from NAMESPACE

CHANGES IN VERSION 1.8.2 [2018-12-13]
-----------------------------------

BUG FIXES

    o Fixed large file offset bug on Windows (again)

CHANGES IN VERSION 1.8.1 [2018-12-11]
-----------------------------------

BUG FIXES

    o Fixed bug causing large files to read incorrectly on Windows

CHANGES IN VERSION 1.7.6 [2018-7-24]
-----------------------------------

NEW FEATURES

    o Added 'apply' methods for 'sparse_mat' and 'virtual_mat'
    o Added 'vm_used' function to exported internal utilities
    o Can infer length of 'matter_vec' from paths when missing
    o Can coerce 'matter_list' to 'matter_matc' or 'matter_matr'
        if all elements of the list are the same length

SIGNIFICANT USER-VISIBLE CHANGES

    o Initializing a matter object with data to an existing file
        no longer results in a warning if 'filemode' is supplied

BUG FIXES

    o Fixed bug where subsetting 'sparse_mat' objects
        would pull 'matter_list' key-value pairs into memory
    o Subsetting 'sparse_mat' objects with out-of-bounds
        subscripts when 'drop=NULL' is now an error

CHANGES IN VERSION 1.7.5 [2018-7-23]
-----------------------------------

NEW FEATURES

    o Added 'as.matrix' methods for 'sparse_mat' and 'virtual_mat'

CHANGES IN VERSION 1.7.4 [2018-7-23]
-----------------------------------

NEW FEATURES

    o Added coercion from 'matter_mat' to 'matter_list'

CHANGES IN VERSION 1.7.3 [2018-7-23]
-----------------------------------

NEW FEATURES

    o Added 'rep_vt' class for virtual replicated vectors

CHANGES IN VERSION 1.7.2 [2018-7-22]
-----------------------------------

NEW FEATURES

    o Updated installation instructions for BiocManager
    o Setting 'sparse_mat' keys also updated nrows/ncols

BUG FIXES

    o Fixed mem() to reflect R >= 3.5 gc() function

CHANGES IN VERSION 1.7.1 [2018-5-18]
-----------------------------------

BUG FIXES

    o Fixed file.exists() bug when length(paths) > 1

CHANGES IN VERSION 1.5.4 [2017-12-2]
-----------------------------------

NEW FEATURES

    o Added 'struct' convenience function for on-disk
        C-style structs (wrapper for 'matter_list')

CHANGES IN VERSION 1.5.3 [2017-12-1]
-----------------------------------

NEW FEATURES

    o Added remainder of Summary group, including 'range',
        'min', 'max', 'prod', 'any', and 'all' methods
    o Added options(matter.cast.warning=FALSE) for
        turning off C type coercion warnings
    o Exported low-level utilities 'sizeof', 'make_datamode',
        'convert_datamode', and 'widest_datamode'
    o Added 'combiner' generic function and method for
        setting/getting the 'combiner' for 'sparse_mat'
    o Added 'min' and 'max' combiner functions for
        'sparse_mat' matrices with tolerance > 0
    o Added 'biglm' method for 'matter_df' data frames

BUG FIXES

    o Fixed bug when coercing 'matter_list' to 'matter_vec'

CHANGES IN VERSION 1.5.2 [2017-11-12]
-----------------------------------

NEW FEATURES

    o All 'matter' subclasses now support endomorphic
        subsetting via 'drop=NULL' wherever appropriate
    o Setting the 'dim' slot via 'dim<-' now switches
        the class between 'matter_vec' and 'matter_arr'
    o Added 'virtual_mat' class for virtual matrices

SIGNIFICANT USER-VISIBLE CHANGES

    o Use 'drop=NULL' from now on instead of 'drop=NA'
        to do endomorphic subsetting of matter matrices
    o Added 'matter_vt' virtual class for matter objects
        which may exist both on-disk and in-memory
    o Added 'matter_tbl' virtual class for data tables

BUG FIXES

    o Fixed read/write bug when subsetting across atoms

CHANGES IN VERSION 1.5.1 [2017-11-1]
-----------------------------------

NEW FEATURES

    o Added 'sparse_mat' class for sparse matrics (potentially
        on-disk) with subclasses 'sparse_matc' for CSC matrices
        and 'sparse_matr' for CSR matrices
    o Added 'bsearch' function for fast binary searches
    o Added 'uuid' function for generating UUIDs as both 'raw' and
        and 'character' vectors
    o Added a 'checksum' method for doing sha1 and md5 checksums
        of all files associated with a 'matter' object

CHANGES IN VERSION 1.3.8 [2017-10-26]
-----------------------------------

NEW FEATURES

    o Added 'matter_fc' class for on-disk factors

SIGNIFICANT USER-VISIBLE CHANGES

    o Added character encodings to 'matter_str' on-disk strings

BUG FIXES

    o Fixed bug in 'matter_df' when subsetting by columns
    o Fixed bug when coercing 'data.frame's to 'matter_df'

CHANGES IN VERSION 1.3.7 [2017-10-25]
-----------------------------------

BUG FIXES

    o Fixed bug where default 'matter_df' chunksize was tiny
    o Changed 'datamode' for 'matter_df' from 'list' to 'virtual'

CHANGES IN VERSION 1.3.6 [2017-10-20]
-----------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Lists (ragged arrays) may now be heterogenous (elements
        must still be vectors)
    o More memory-efficient initialization of data on disk
        when length(data) is 1
    o Files are now created by default in constructors if
        they do not already exist
    o When coercing with 'as.matter', names and/or dimnames
        are now retained


CHANGES IN VERSION 1.3.5 [2017-10-18]
-----------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Improved length/dim defaults when data is given to constructors

BUG FIXES

    o Trying to write to a read-only dataset now fails gracefully
    o Fixed integer overflow when subsetting via subsetMatterMatrix

CHANGES IN VERSION 1.3.4 [2017-8-8]
-----------------------------------

BUG FIXES

    o Fixed bug where NAs did not propogate correctly for integers
    o It is now an error when 'matter()' cannot infer data structure


CHANGES IN VERSION 1.3.3 [2017-5-20]
-----------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Added new vignettes with benchmarks and examples on real data

BUG FIXES

    o Fixed bug in delayed arithmetic operations with vectors


CHANGES IN VERSION 1.3.2 [2017-5-15]
-----------------------------------

NEW FEATURES

    o Added class 'matter_list' for homogenous lists (ragged arrays)
    o Added class 'matter_str' for on-disk strings
    o Added class 'matter_df' for on-disk data frames
    o Added 'as.matter' for function coercing to matter objects

CHANGES IN VERSION 1.3.1 [2017-4-27]
-----------------------------------

NEW FEATURES

    o Updated base matter classes (matter_vec, matter_mat, matter_arr)
        to support 'Arith' and 'Compare' group generics

CHANGES IN VERSION 1.1.3 [2017-3-15]
---------------------------------

NEW FEATURES

    o Added class 'drle' for delta-run-length encoding vectors
    o Added '+', '-', '*', '/', '^', 'exp', 'log', 'log2', and 'log10'
        as possible delayed operations to on-disk atoms

SIGNIFICANT USER-VISIBLE CHANGES

    o Slots of 'atoms' class now use delta-run-length encoding
    o Reduced metadata size by changing 'atoms' class to use
        groups rather then relying on a 'list' of 'atoms'
    o The 'scale' method for 'matter_mat' now matches 'scale.default'
        more correctly when 'center = FALSE' and 'scale = TRUE'

CHANGES IN VERSION 1.1.2 [2017-3-12]
---------------------------------

NEW FEATURES

    o Added support for char, uchar, ushort, uint, and ulong datamodes
    o Added support for raw (Rbyte) matter objects

SIGNIFICANT USER-VISIBLE CHANGES

    o S4 methods for matrix-specific summary statistics are
        now only defined on matter_mat and its subclasses

BUG FIXES

    o Dramatically improved speed of matrix multiplication 

CHANGES IN VERSION 1.1.1 [2016-11-29]
---------------------------------

NEW FEATURES

    o Added 'crossprod' (t(x) %*% y) and 'tcrossprod' (x %*% t(y)) methods
    o Added 'atomdata' accessor method, for which 'adata' is now an alias

BUG FIXES

    o Added S3 versions of some S4 methods to fix scoping issues
    o Removed Cardinal package from Suggests to avoid circular dependency
    o Reduced memory consumption in bigglm-matter method

CHANGES IN VERSION 0.99.11 [2016-10-11]
---------------------------------

BUG FIXES

    o Updated documentation details.

CHANGES IN VERSION 0.99.10 [2016-10-11]
---------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Updated vignettes with installation instructions, faster build time
    o Added 'adata' method for accessing 'matter' class @data slot

CHANGES IN VERSION 0.99.9 [2016-10-5]
---------------------------------

NEW FEATURES

    o Added delayed scaling and centering via 'scale' method
    o Added 'prcomp' method for principal components analysis

SIGNIFICANT USER-VISIBLE CHANGES

    o Renamed 'colSd' -> 'colSds', 'colVar' -> 'colVars', etc.
    o Renamed 'filepaths' -> 'paths' and 'file_id' -> 'source_id'
    o Moved 'irlba' from Suggests to Imports to support new 'prcomp' method
    o Updated vignette to use new 'prcomp' method in the PCA example

BUG FIXES

    o Fixed bug when combining 'matter' objects with multiple data sources

CHANGES IN VERSION 0.99.8 [2016-10-3]
---------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o In S4 class 'atoms', slot 'file_id' is now type 'integer' to save space
    o In S4 class 'atoms', slot 'datamode' is now type 'integer' to save space
    o More comprehensive error messages in constructors for S4 classes

CHANGES IN VERSION 0.99.7 [2016-10-1]
---------------------------------

BUG FIXES

    o Try to fix namespace std::isnan scoping issues on Windows

CHANGES IN VERSION 0.99.6 [2016-10-1]
---------------------------------

BUG FIXES

    o Fixed handling of NA, NaN, Inf, and -Inf during C type coercion
    o Improved handling of NA, NaN, Inf, and -Inf in summary stats
    o Fixed handling of NAs in matrix multiplication for integers

CHANGES IN VERSION 0.99.5 [2016-9-27]
---------------------------------

BUG FIXES

    o Fixed .Call native routine registration for C++ methods
    o Added "C_" prefix for C++ methods called through .Call

CHANGES IN VERSION 0.99.4 [2016-9-27]
---------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Added .Call native routine registration for C++ methods

CHANGES IN VERSION 0.99.3 [2016-9-27]
---------------------------------

BUG FIXES

    o Import generics from S4Vectors for 'colMeans', 'colSums',
        'rowMeans', and 'rowSums'
    o Cleaned up method signatures and class unions

CHANGES IN VERSION 0.99.2 [2016-9-26]
---------------------------------

BUG FIXES

    o Cleaned up double assignments in C++ code

CHANGES IN VERSION 0.99.1 [2016-9-26]
---------------------------------

BUG FIXES

    o Version bump for Bioconductor build system

CHANGES IN VERSION 0.99.0 [2016-9-26]
---------------------------------

BUG FIXES

    o Updated PCA example in vignette (irlba now requires 'mult'
        argument to be non-missing for non-C execution)
    o Added irlba unit test

CHANGES IN VERSION 0.6 [2016-9-25]
---------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Updated maintainer and author email address

BUG FIXES

    o Fixed bug in rowVar for matter_matc

CHANGES IN VERSION 0.5 [2016-9-25]
---------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Updated documentation with examples and added unit tests

BUG FIXES

    o Fixed matrix multiplication on mixed data types (int x double)

CHANGES IN VERSION 0.4 [2016-8-3]
---------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Added support for class-preserving subsetting of 'matter'
         matrices with 'drop=NA' argument for Cardinal compatibility.
    o Added new 'show' method for 'matter' vectors and matrices showing
        their size in in-memory and size on disk.

CHANGES IN VERSION 0.3 [2016-8-2]
---------------------------------

NEW FEATURES

    o Added C++ class 'MatterAccessor' for iterating through.
    	a buffered version of a 'matter' vector or matrix
    o Added summary statistics including 'sum', 'mean', 'var',
    	'sd', 'colSums', 'colMeans', 'colVar', 'colSd',
    	'rowSums', 'rowMeans', 'rowVar', and 'rowSd'.
    o Added support for 'apply' method for 'matter' matrices
    o Added support for 'bigglm' linear regression.
    o Added basic matrix multiplication for 'matter' matrices
    	with an in-memory R matrix or vector.

CHANGES IN VERSION 0.2 [2016-7-28]
---------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Overhauled backend to use C++ classes 'Matter' and 'Atoms',
        to maximizes use of sequential reads versus random reads.

CHANGES IN VERSION 0.1 [2016-2-17]
---------------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o First rough implementation of matter including the
        classes 'atoms' and 'matter', and subclasses 'matter_vec',
        'matter_matc', 'matter_matr', with a C backend.
