Blosc Development Team

@blosc.org

Announcements about Blosc2 developments https://blosc.org

๐Ÿ“ฃ Python-Blosc2 4.11.0 continues aligning with Arrow conventions. New CTable nullability on a validity mask instead of a sentinel value โœจ๏ธ Also, wheels are now abi3 compliant w/ CPython 3.11+, including 3.15 (tested) ๐Ÿš… More info: github.com/Blosc/python... Compress Better, Compute Bigger ๐Ÿš€

Releases ยท Blosc/python-blosc2

A high-performance library for compressed ND arrays and columnar tables, with compute and indexing engines - Blosc/python-blosc2

github.com

Most compression libraries ask you to move in. We think that's backwards. Blosc2 4.9.1: DuckDB, Polars and pandas 3 read a CTable directly via Arrow's PyCapsule protocol โ€” no conversion step. Cooperation, not completeness. blosc.org/posts/not-an... Compress Better, Compute Bigger ๐Ÿš€ #DataScience

Not an island: bringing compression to the tabular ecosystem

A compression library can go one of two ways: try to be everything (its own dataframe, its own query engine, its own format that nothing else reads), or be a fast, compact layer that slots underneath

blosc.org

๐Ÿ’ก Python-Blosc2 tip #4: let SUMMARY indexes answer min()/max() directly CTable auto-builds per-block min/max indexes for its scalar columns, so Column.min()/max() never decompress the column: ~4ร— faster, essentially no extra memory. blosc.org/python-blosc... Compress Better, Compute Bigger ๐Ÿš€

Bild

๐Ÿ’ก Python-Blosc2 tip #3: align your reads with the double partition A chunk-aligned read decompresses 1 chunk instead of 2 (~2.2ร— faster), and chunk-aligned slice() copies chunks as-is with no decompression at all (~4.9ร— faster). Same principle at block level. blosc.org/python-blosc... Enjoy data!

Bild

๐Ÿ’ก Python-Blosc2 tip #1: skip the NumPy detour. blosc2.linspace(0, 1, N) fills a compressed array chunk by chunk โ€” at 200M float64, ~25x less peak memory than asarray(np.linspace(...)), comparable speed. Same for arange() and fromiter(). blosc.org/python-blosc... Compress Better, Compute Bigger ๐Ÿš€

Bild

Did you know that in recent Python-Blosc2 4.2.0 we released extremely efficient indexing engines that can store data in (guess what) ...compressed state? As a result, much larger tables can be indexed. Look at how this fares against other good indexing engines in plots below. Enjoy! #TabularData

BildBildBildBild

Look at the bump in performance that we will see with the next Python-Blosc2 release. Matrix multiplication has been speeded up by using blocks and Blosc2 prefilters and its own efficient and multithreaded engine. Expect between 5x and 6x better speed for matrices with no padding.

Bild

New DSL kernels in Python-Blosc2, being parallelizable and JIT-compiling capable, can accelerate code quite a bit ๐Ÿš€ For example, linspace() has been rewritten to use DSL kernels, and performance boost is well beyond expectations.

Bild