Skip to content

Releases: Blosc/python-blosc2

Release 3.3.2

01 May 05:39
Compare
Choose a tag to compare

Changes from 3.3.1 to 3.3.2

  • Fixed a bug in the determination of chunk shape for the NDArray constructor.
    This was causing problems when creating NDArray instances with a CPU that
    was reporting a L3 cache size close (or exceeding) 2 GB. See PR #392.

  • Fixed a bug preventing the correct chaining of string lazy expressions for
    logical operators (&, |, ^...). See PR #391.

  • More performance optimization for blosc2.permute_dims. Thanks to
    Ricardo Sales Piquer (@ricardosp4) for the implementation.

  • Now, storage defaults (blosc2.storage_dflts) are honored, even if no
    storage= param is used in constructors.

  • We are distributing Python 3.10 wheels now.

Release 3.3.1

20 Apr 12:56
Compare
Choose a tag to compare

Changes from 3.3.0 to 3.3.1

  • In our effort to better adapt to better adapt to the array API
    (https://data-apis.org/array-api/latest/), we have introduced
    permute_dims() and matrix_transpose() functions, and the .T property.
    This replaces to previous transpose() function, which is now deprecated.
    See PR #384. Thanks to Ricardo Sales Piquer (@ricardosp4).

  • Constructors like arange(), linspace() and fromiter() now
    use far less memory when creating large arrays. As an example, a 5 TB
    array of 8-byte floats now uses less than 200 MB of memory instead of
    170 GB previously. See PR #387.

  • Now, when opening a lazy expression with blosc2.open(), and there is
    a missing operand, the open still works, but the dtype and shape
    attributes are None. This is useful for lazy expressions that have
    lost some operands, but you still want to open them for inspection.
    See PR #385.

  • Added an example of getting a slice out of a C2Array.

Release 3.3.0

08 Apr 12:03
Compare
Choose a tag to compare

Changes from 3.2.1 to 3.3.0

Release 3.2.1

26 Mar 17:35
Compare
Choose a tag to compare

Changes from 3.2.0 to 3.2.1

Release 3.2.0

27 Feb 12:03
Compare
Choose a tag to compare

Changes from 3.1.1 to 3.2.0

  • Structured arrays can be larger than 255 bytes now. This was a limitation in the previous versions, but now it is gone (the new limit is ~512 MB, which I hope will be enough for some time).

  • New blosc2.matmul() function for computing matrix multiplication on NDArray instances. This allows for efficient computations on compressed data that can be in-memory, on-disk and in the network. See here for more information.

  • Support for building WASM32 wheels. This is a new feature that allows to build wheels for WebAssembly 32-bit platforms. This is useful for running Python code in the browser.

  • Tested support for NumPy<2 (at least 1.26 series). Now, the library should work with NumPy 1.26 and up.

  • C-Blosc2 updated to 2.17.0.

  • httpx has been replaced by the requests library for the remote proxy. This was necessary to avoid the need of the httpx library, which is not supported by Pyodide.

Release 3.1.1 (hot fix)

14 Feb 11:31
Compare
Choose a tag to compare

Changes from 3.1.0 to 3.1.1

  • Quick release to fix an issue with version number in the package (was reporting 3.0.0
    instead of 3.1.0).

Release 3.1.0

13 Feb 17:36
Compare
Choose a tag to compare

Changes from 3.0.0 to 3.1.0

Improvements

  • Optimizations for the compute engine. Now, it is faster and uses less memory.
    In particular, careful attention has been paid to the memory handling, as
    this is the main bottleneck for the compute engine in many instances.

  • Improved detection of CPU cache sizes for Linux and macOS. In particular,
    support for multi-CCX (AMD EPYC) and multi-socket systems has been implemented.
    Now, the library should be able to detect the cache sizes for most of the
    CPUs out there (specially on Linux).

  • Optimization on NDArray slicing when the slice is a single chunk. This is a
    common operation when working with NDArray instances, and now it is faster.

New API functions and decorators

  • New blosc2.evaluate() function for evaluating expressions on NDArray/NumPy
    instances. This a drop-in replacement of numexpr.evaluate(), but with the
    next improvements:

    • More functionality than numexpr (e.g. reductions).
    • Follow casting rules of NumPy more closely.
    • Use both NumPy arrays and Blosc2 NDArrays in the same expression.

    See here for more information.

  • New blosc2.jit decorator for allowing NumPy expressions to be computed
    using the Blosc2 compute engine. This is a powerful feature that allows for
    efficient computations on compressed data, and supports advanced features like
    reductions, filters and broadcasting. See here for more information.

  • Support out= in blosc2.mean(), blosc2.std() and blosc2.var() reductions
    (besides blosc2.sum() and blosc2.prod()).

Others

  • Bumped to use latest C-Blosc2 sources (2.16.0).

  • The cache for cpuinfo is now stored in ${HOME}/.cache/python-blosc2/cpuinfo.json
    instead of ${HOME}/.blosc2-cpuinfo.json; you can get rid of the latter, as
    the former is more standard (see PR #360). Thanks to Jonas Lundholm Bertelsen
    (@jonaslb).

Python-Blosc2 3.0.0 (final)

12 Dec 16:45
Compare
Choose a tag to compare

Changes from 3.0.0-rc.3 to 3.0.0

  • A persistent cache for cpuinfo (stored in $HOME/.blosc2-cpuinfo.json) is
    now used to avoid repeated calls to the cpuinfo library. This accelerates
    the startup time of the library considerably (up to 5x on my box).

  • We should be creating conda packages now. Thanks to @hmaarrfk for his
    assistance in this area.

Release 3.0.0 rc3

10 Dec 14:00
Compare
Choose a tag to compare

Changes from 3.0.0-rc.2 to 3.0.0-rc.3

  • Now you can get and set the whole values of VLMeta instances with the vlmeta[:] syntax.
    The get part is syntactic sugar for vlmeta.getall() actually.

  • blosc2.copy() now honors cparams= parameter.

  • Now, compiling the package with USE_SYSTEM_BLOSC2 envar set to 1 will use the
    system-wide Blosc2 library. This is useful for creating packages that do not want
    to bundle the Blosc2 library (e.g. conda).

  • Several changes in the build process to enable conda-forge packaging.

  • Now, blosc2.pack_tensor() can pack empty tensors/arrays. Fixes #290.

Release 3.0.0 rc2

02 Dec 12:29
Compare
Choose a tag to compare

Changes from 3.0.0-rc.1 to 3.0.0-rc.2

  • Improved docs, tutorials and examples. Have a look at our new docs at: https://www.blosc.org/python-blosc2.

  • blosc2.save() is using contiguous=True by default now.

  • vlmeta[:] is syntatic sugar for vlmeta.getall() now.

  • Add NDArray.meta property as a proxy to NDArray.shunk.vlmeta.

  • Reductions over single fields in structured NDArrays are now supported. For example, given an array sarr with fields 'a', 'b' and 'c', sarr["a"]["b >= c"].std() returns the standard deviation of the values in field 'a' for the rows that fulfills that values in fields in 'b' are larger than values in 'c' (b >= c above).

  • As per discussion #337, the default of cparams.splitmode is now AUTO_SPLIT. See #338 though.