Skip to content

Commit 4efa366

Browse files
committed
Getting ready for release 3.0.0.rc1
1 parent 2239225 commit 4efa366

File tree

4 files changed

+56
-12
lines changed

4 files changed

+56
-12
lines changed

ANNOUNCE.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
# Announcing C-Blosc2 2.23.1
1+
# Announcing C-Blosc2 3.0.0 RC1
22
A fast, compressed and persistent binary data store library for C.
33

44
## What is new?
55

6-
This is a patch level release which fixes some memory leaks/undefined
7-
behaviour, as well as allowing resizing of empty arrays and the use of meta
8-
(interpreted as number of bytestreams) for the byteshuffle filter.
6+
We've bumped the major version to introduce variable-length chunks & blocks
7+
(VL-blocks), perfect for irregular data like strings & JSON! Plus, improved
8+
dictionary compression (now with LZ4/LZ4HC!) and key safety fixes.
99

1010
For more info, see the release notes in:
1111

RELEASE_NOTES.md

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,52 @@ Release notes for C-Blosc2
44
Changes from 2.23.1 to 3.0.0-rc.1
55
=================================
66

7-
* Fixed several safety issues in the core library, as well as in ndcell/ndlz plugins.
8-
Thanks to Trail of Bits (in collaboration with Anthropic).
7+
* This release introduces support for variable-length chunks and variable-length
8+
blocks, which is the main reason for the major version bump.
9+
10+
Until now, a schunk/frame generally assumed that all chunks shared the same
11+
logical chunk size, and regular Blosc2 chunks assumed fixed-size internal blocks
12+
(except for the last remainder block). In 3.0.0-rc.1, schunks can switch to
13+
variable chunk sizes when needed, and there is also a new chunk layout for
14+
variable-length blocks (VL-blocks), where each block can carry a different
15+
uncompressed size inside the same chunk.
16+
17+
This is especially useful for workloads made of naturally variable-size pieces
18+
of data, like strings, records, JSON fragments, or other irregular payloads
19+
that previously had to be padded, split awkwardly, or stored as independent
20+
chunks. The new layout keeps these pieces grouped together while still making
21+
them individually recoverable.
22+
23+
Together with this, there are new public APIs for VL-block chunks:
24+
`blosc2_vlcompress_ctx()`, `blosc2_vldecompress_ctx()`,
25+
`blosc2_vlchunk_get_nblocks()`, `blosc2_vldecompress_block_ctx()`, and
26+
`blosc2_schunk_get_vlblock()`. Lazy loading also works with VL-block chunks,
27+
so individual blocks can be fetched on demand without materializing the whole
28+
chunk first.
29+
30+
* The chunk and cframe formats have been extended to represent variable chunk
31+
sizes, VL-block chunks, and dictionary usage more explicitly. Forward
32+
compatibility checks were tightened as part of this work, and regular chunks
33+
keep their previous stable format version while VL-block chunks use a new one.
34+
35+
* Dictionary compression has been expanded and improved:
36+
`use_dict` now works with LZ4 and LZ4HC in addition to ZSTD, the dictionary
37+
state is preserved correctly across chunk compression/decompression, and the
38+
frame metadata now round-trips the dictionary setting. There is also a new
39+
minimum useful dictionary threshold to avoid training or using dictionaries
40+
that are too small to help.
41+
42+
* The necessary changes for accommodating all these improvements have been fully
43+
documented in README_CHUNK_FORMAT.md and README_CFRAME_FORMAT.md. Again,
44+
care has been taken to ensure that the chunk and frame formats are backward
45+
compatible with previous versions of C-Blosc2.
46+
47+
* Fixed several safety issues in the core library, as well as in ndcell/ndlz
48+
plugins. Thanks to Trail of Bits (in collaboration with Anthropic).
49+
50+
* Additional compatibility and portability fixes include better protection
51+
against unsupported future chunk/frame versions and proper VSX shuffle support
52+
detection on big-endian ppc64. Thanks to @AutoJanitor for these.
953

1054

1155
Changes from 2.23.0 to 2.23.1

blosc/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ if(BUILD_SHARED)
2929
endif()
3030
set_target_properties(blosc2_shared PROPERTIES
3131
VERSION ${version_string}
32-
SOVERSION 7 # Change this when an ABI change happens
32+
SOVERSION 8 # Change this when an ABI change happens
3333
)
3434
target_compile_definitions(blosc2_shared PRIVATE BLOSC_SHARED_LIBRARY)
3535
target_include_directories(blosc2_shared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})

include/blosc2.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,12 @@ extern "C" {
8181

8282

8383
/* Version numbers */
84-
#define BLOSC2_VERSION_MAJOR 2 /* for major interface/format changes */
85-
#define BLOSC2_VERSION_MINOR 23 /* for minor interface/format changes */
86-
#define BLOSC2_VERSION_RELEASE 2.dev /* for tweaks, bug-fixes, or development */
84+
#define BLOSC2_VERSION_MAJOR 3 /* for major interface/format changes */
85+
#define BLOSC2_VERSION_MINOR 0 /* for minor interface/format changes */
86+
#define BLOSC2_VERSION_RELEASE 0.rc1 /* for tweaks, bug-fixes, or development */
8787

88-
#define BLOSC2_VERSION_STRING "2.23.2.dev" /* string version. Sync with above! */
89-
#define BLOSC2_VERSION_DATE "$Date:: 2026-03-03 #$" /* date version year-month-day */
88+
#define BLOSC2_VERSION_STRING "3.0.0.rc1" /* string version. Sync with above! */
89+
#define BLOSC2_VERSION_DATE "$Date:: 2026-03-27 #$" /* date version year-month-day */
9090

9191

9292
/* The maximum number of dimensions for Blosc2 NDim arrays */

0 commit comments

Comments
 (0)