Skip to content

Releases: Blosc/c-blosc2

Release 2.0.3

31 Aug 12:11
Compare
Choose a tag to compare

Changes from 2.0.2 to 2.0.3

  • Improved BloscLZ codec (bumped to 2.5.0) for achieving better compression ratios on data with high entropy. Although in general LZ4 still does a better job in this scenario, BloscLZ can sometimes achieve better compression ratios.

  • Added blosc2_vlmeta_delete() for removing vlmeta data. Thanks to Marta Iborra.

  • Update pkg-config file to support blosc2. Fixes #236. Thanks to Håvard Flaget Aasen.

  • Build system: Change hard coded library path with CMAKE_INSTALL_LIBDIR CMake variable. Thanks to Håvard Flaget Aasen.

Release 2.0.2

10 Jul 12:18
Compare
Choose a tag to compare

Changes from 2.0.1 to 2.0.2

  • Fixed data chunk memory leaks in frame (see #335).

  • Fixed blosc2_stdio_open never returns NULL if it cannot open file.

  • Standarized places for headers in blosc/ and include/ dirs.

  • nthreads is int16_t everywhere in the API. Fixes #331.

  • Add blosc2_remove_urlpath function (see #330).

  • Fixed a bug when a lazy_chunk was created from a small, memcpyed chunk.
    (see #329).

  • Fixed many issues in documentation (see #333).

Release 2.0.1

29 Jun 07:46
Compare
Choose a tag to compare

Changes from 2.0.0 to 2.0.1

  • The blosc2_schunk_fill_special function was not exported,
    so not in the shared library. This has been fixed; see #328.
    Thanks to Mark Kittisopikul.

Release 2.0.0

28 Jun 11:39
Compare
Choose a tag to compare

Changes from 2.0.0.rc2 to 2.0.0 (final)

  • Now Blosc is always compiled with LZ4. See #324.

  • Implemented a system to register plugins (PR #314).
    See our blog at: https://www.blosc.org/posts/registering-plugins.

  • Added Blosc Lite version. Just activate BUILD_LITE cmake option with:
    -DBUILD_LITE. See #316.

  • You can deactivate the plugins by setting cmake option BUILD_PLUGINS to OFF.

  • Created include folder. See #310.

  • Moved codecs-registry.h and filters-registry.h to include/blosc2. See #325.

  • Fix error in endian-handler function affecting frames metadata. See #320.

  • Improved tolerance to Win64 workflows failure. See #319.

  • zlib-ng updated to 2.0.5.

  • New COMPILING_WITH_WHEELS.rst doc added.

Relase 2.0.0 RC2

26 May 16:02
Compare
Choose a tag to compare
Relase 2.0.0 RC2 Pre-release
Pre-release

Changes from 2.0.0.rc1 to 2.0.0.rc2

  • New compatibility with MinGW32/64. See #302.

  • Improved support for AArch64 (aka ARM64), ARMv7l, ARMv6l and powerpc64le.
    See #306. Thanks to Alexandr Romanenko, Mark Kittisopikul and Mosè Giordano
    from the Julia packaging team for their help.

  • BloscLZ updated to 2.4.0. Aligned access in ARM has been enabled, as well
    as other performance improvements. Expect much better performance,
    specially on ARM platforms (like Apple Silicon).

  • Zstd sources updated to 1.5.0.

  • zlib-ng sources updated to 2.0.3.

Release 2.0.0 RC1

06 May 12:28
Compare
Choose a tag to compare
Release 2.0.0 RC1 Pre-release
Pre-release

Changes from 2.0.0-beta.5 to 2.0.0.rc.1

  • [API change] blosc2_decompress_ctx() gets a new srcsize
    parameter to ensure that it does not read past the end
    of the provided buffer. See #144. Thanks to Nathan Moinvaziri
    (@nmoinvaz).

  • [BREAKING CHANGE] The format for frames has changed and
    BLOSC2_VERSION_FRAME_FORMAT is now set to 2. There is no attempt to support
    previous formats, but there will probably be backward compatibility support
    starting from version 2 on.

  • New functionality for updating, inserting and deleting chunks in a super-chunk.

  • Support for special values. Large sequences of repeated values can be represented
    with an efficient, simple and fast run-length representation, without the need to use
    regular codecs.

  • Internal Zstd sources updated to 1.4.9.

  • Internal LZ4 sources updated to 1.9.3.

  • Internal zlib support is provided now by new zlib-ng 2.0.2 (replacing miniz).

  • The support for Snappy codec has been completely removed. Snappy is a C++
    library, which is not good for a library that aims to be fully pure C.
    Snappy was removed from sources in C-Blosc(1) some years ago, so there
    should not be a lot of data compressed with Blosc/Snappy out there (and
    for the existing ones, a transcoding is always possible using C-Blosc(1)).

  • The Lizard codec has been removed. Lizard is a pretty good one, but it
    looks like it is not timely maintained. Zstd/Zlib can cover its place pretty
    nicely.

  • The split of blocks only happens for BLOSCLZ and LZ4 codecs. All
    the rest are not split at all.

  • Public APIs for frames have been removed. Frames should be considered an
    storage detail, so having them accessible publicly should only bring
    unnecessary cognitive load. Care have been carried out so as to ensure
    the same functionality via the super-chunk (schunk) API.

  • [FORMAT] New sparse frame format for on-disk I/O. This allows for storing
    data chunks in super-chunks in separate files inside a directory. The way
    to generate sparse frames is via storage.contiguous=false and
    storage.urlpath=dirname. See README_SFRAME_FORMAT.rst for details.

Release 2.0.0 beta 5

22 Apr 08:25
Compare
Choose a tag to compare
Release 2.0.0 beta 5 Pre-release
Pre-release

Changes from 2.0.0-beta.4 to 2.0.0.beta5

  • The prefilter functionality has been introduced and declared stable.
    With that, you can callback arbitrary functions previous to any filter.
    This can be useful for performing (parallel) computations on chunks.
    For an example of use, see tests/test_prefilter.c.

  • New blosc2_set_maskout() function to avoid decompressing blocks. This
    can be handy when it is not needed to decompress all the blocks in a
    chunk. This should be always called before blosc2_decompress_ctx() and
    its effect is reset to the default (decompress all blocks) after that.

  • New ALTIVEC optimizations for Power architecture. These include support
    for both shuffle and bitshuffle filters. For details, see #98.
    Thanks to Jerome Kieffer and ESRF for making this happen.

  • New blosc2_frame_from_sframe() function for getting a blosc2_frame
    out of an in-memory serialized frame.

  • Zstd codec updated to 1.4.4.

Release 2.0.0 beta 4

13 Sep 11:44
Compare
Choose a tag to compare
Release 2.0.0 beta 4 Pre-release
Pre-release

Changes from 2.0.0-beta.3 to 2.0.0-beta.4

  • New pluggable threading backend. Instead of having Blosc use its own
    thread pool, you can instead call
    blosc_set_threads_callback(threads_callback, callback_data) to install
    your own threading backend. This gives Blosc the possibility to use the
    same threading mechanism as one you are using in the rest of your program
    (e.g. OpenMP or Intel TBB), sharing the same threads, rather than starting
    its own threads that compete with yours for the CPU cores. See PR #81.
    Thanks to Steven G. Johnson.

  • The endianness of the platform that is writing the data in chunks is stored
    now in the headers of the chunks. This info is not used yet, but this
    should allow a good hint for implementing format compatibility among
    platforms with different endianness in other layers. See PR #84.

  • Fixed a nasty bug that prevented frames to go more than 2 GB in size.

  • Added a cache for on-disk offsets. This accelerates the reading of slices
    from disk quite a lot (up to 50% with my benchmarks).

  • Zstd codec upgraded from 1.4.0 to 1.4.3.

Release 2.0.0 beta 3

02 Sep 10:21
Compare
Choose a tag to compare
Release 2.0.0 beta 3 Pre-release
Pre-release

Changes from 2.0.0-beta.2 to 2.0.0-beta.3

  • Quick release to fix that beta.2 was tagged on top of a branch, not master.

  • The msgpack trailer now properly starts with 0x90 + 4 value, not plain
    wrong 0x09 + 4.

  • Trailer version bumped to 1.

Release 2.0.0 beta 2

30 Aug 08:22
Compare
Choose a tag to compare
Release 2.0.0 beta 2 Pre-release
Pre-release

Changes from 2.0.0-beta.1 to 2.0.0-beta.2

  • A new usermeta chunk in schunk allows to store arbitrary meta-information
    that is up to the user. If the schunk has an attached frame, the later
    will be updated accordingly too. For more info, see PR #74 and docstrings of
    new blosc2_update_usermeta() and blosc2_get_usermeta() functions.

  • Metalayers must now be attached to super-chunks, not frames. The reason is
    that frames are increasingly treated as a storage specifier (in-memory or
    disk now, but can be other means in the future), whereas the actual API for
    I/O (including metainfo) goes into super-chunks. See PR #75.

  • New frame format documented in
    README_FRAME_FORMAT.rst. Remember that the frame
    format is not written in stone yet, so some changes may be introduced before
    getting out of beta.

  • BREAKING CHANGE: the format for frames has changed and
    BLOSC2_VERSION_FRAME_FORMAT is now set to 1. There is no attempt to support
    previous formats, but there will probably be backward compatibility support
    starting from version 1 on.

  • BREAKING CHANGE: the next APIs have been renamed:

    • blosc2_frame_has_metalayer -> blosc2_has_metalayer
    • blosc2_frame_add_metalayer -> blosc2_add_metalayer
    • blosc2_frame_update_metalayer -> blosc2_update_metalayer
    • blosc2_frame_metalayer -> blosc2_get_metalayer

    Although the API was declared stable in beta.1, the fact that metalayers are
    attached now to super-chunks directly, made this change completely necessary.

  • BREAKING CHANGE: the next symbols have been renamed:

    • BLOSC_CPARAMS_DEFAULTS -> BLOSC2_CPARAMS_DEFAULTS
    • BLOSC_DPARAMS_DEFAULTS -> BLOSC2_DPARAMS_DEFAULTS