This is the first stable release. This major release contains API breaking changes and the dependency on R has bumped to version 4.4.
Code has been refactored to make it more agile and less error-prone. Two major changes have been implemented:
zarr_store class is no longer used in the
public-facing API. Most store-oriented tasks are now handled through the
zarr class, including creating a new store.zarr_array will create it in the store
if it does not yet exist, and attach itself to its parent, usually a
zarr_group but it could also be a zarr
instance in the case of a single-array store.These changes impact the signature of several methods:
zarr$new() has several new arguments following the
first store argument. All additional arguments are optional
so existing code will remain functional. The store argument
has additional functionality.zarr_group$new() and zarr_array$new() no
longer have the store argument.Other new features:
zarr_array by indices can use
[<-.zarr_array.zarr$save_to() method can save a zarr
object to a new store. This is handy to save a memory store to disk, to
convert a v.2 store to a v.3 store, or to get a local copy of a remote
store, among other uses. Parallel reads from HTTP and S3 stores speeds
up the copying.zarr_array$details() method will produce a named
character vector with a summary of the array.zarr in class zarr_node to
retrieve the zarr instance that manages the node.cli package when
installed. The theme used can be modified by the user.save_options() function. They will be automatically loaded
in all future sessions. Function reset_options() will reset
the options to their default values.array_builder class has a field
data_type_from_storage.mode that can make a Zarr data type
from an R storage mode.chunking and
chunk_grid_regular is more robust. A new grid
field will retrieve the chunk grid. The chunk grid will be printed to
the console for arrays and the chunking scheme.glyph private field has moved from
zarr_array to zarr_node such that
zarr_group can have the same flexibility when
printing.Minor changes:
zarr.json writes arrays for shape and
chunk_shape for 1D axes.ref convention uses released version v2.0.0.chunk_cache_bytes.zarr_array$raw_read field can be set to control
conversion of the Zarr array fill_value to R’s
NA upon reading (FALSE, default) or to skip
the conversion (TRUE) for faster loading when data is known
not to have fill values or when these are managed at the application
level.s3_list_dir() can be
used to walk the directory listing of an S3 bucket to locate Zarr
stores.zarr_array::resize() method with which arrays can
be resized, growing or shrinking across all dimensions simultaneously,
including on the lower end of the dimensions. When changing the “low”
side of the dimensions, which is always by full chunks, the indexing of
all data changes to use the new origin.zarr_array::promote() method which adds a dimension
to the array.zarr_object base class for name and attribute
management.dirty field can be explicitly set on any node to force
writing of the metadata to the store.chunk_key_encoding is automatically set in array
metadata.optimal_chunking() function to determine optimal
chunking for an array, optionally applying different weights to
dimensions or groups of dimensions.array_builder class and written to like
regular arrays.zarr_node$post_open() method allows for processing that
requires the Zarr hierarchy to be in place.zarr_node$relative_path() method retrieves the relative
path from the node to another node or a path string.
zarr_node$absolute_path() turns a relative path starting
from the current node into an absolute path. walk_path()
traverses the Zarr hierarchy from the current node to a target node
using relative node names, returning the requested node.zarr_options() function.as_zarr(), small arrays are not compressed. This is
controlled by the Zarr.options$min_compress setting.attribute() method for zarr_group and
zarr_array instances.zarr_conventions() function returns
data.frame of supported conventions.future
for optional parallel processing of chunks and shards.compression codec has to be one of those supported by the
v.3 core specification or zstd. Filters are not yet
supported.blosc package is now imported as it is the default
compression codec.zstd compression codec added.integer64 data.