Changeset 981e22c for thirdparty/blosc/RELEASE_NOTES.rst
- Timestamp:
- 08/26/16 19:35:26 (8 years ago)
- Branches:
- master, pympi
- Children:
- 8ebc79b
- Parents:
- cda87e9
- git-author:
- Hal Finkel <hfinkel@…> (08/26/16 19:35:26)
- git-committer:
- Hal Finkel <hfinkel@…> (08/26/16 19:35:26)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
thirdparty/blosc/RELEASE_NOTES.rst
r00587dc r981e22c 1 =========================== ====2 Release notes for Blosc 1.2.33 =========================== ====1 =========================== 2 Release notes for C-Blosc 3 =========================== 4 4 5 5 :Author: Francesc Alted 6 :Contact: f [email protected]6 :Contact: f[email protected] 7 7 :URL: http://www.blosc.org 8 9 10 Changes from 1.10.0 to 1.10.1 11 ============================= 12 13 #XXX version-specific blurb XXX# 14 15 16 Changes from 1.9.3 to 1.10.0 17 ============================ 18 19 - Initial support for Zstandard (0.7.4). Zstandard (or Zstd for short) is a new 20 compression library that allows better compression than Zlib, but that works 21 typically faster (and some times much faster), making of it a good match for 22 Blosc. 23 24 Although the Zstd format is considered stable 25 (http://fastcompression.blogspot.com.es/2016_07_03_archive.html), its API is 26 maturing very fast, and despite passing the extreme test suite for C-Blosc, 27 this codec should be considered in beta for C-Blosc usage purposes. Please 28 test it and report back any possible issues you may get. 29 30 31 Changes from 1.9.2 to 1.9.3 32 =========================== 33 34 - Reverted a mistake introduced in 1.7.1. At that time, bit-shuffling 35 was enabled for typesize == 1 (i.e. strings), but the change also 36 included byte-shuffling accidentally. This only affected performance, 37 but in a quite bad way (a copy was needed). This has been fixed and 38 byte-shuffling is not active when typesize == 1 anymore. 39 40 41 Changes from 1.9.1 to 1.9.2 42 =========================== 43 44 - Check whether Blosc is actually initialized before blosc_init(), 45 blosc_destroy() and blosc_free_resources(). This makes the library 46 more resistant to different initialization cycles 47 (e.g. https://github.com/stevengj/Blosc.jl/issues/19). 48 49 50 Changes from 1.9.0 to 1.9.1 51 =========================== 52 53 - The internal copies when clevel=0 are made now via memcpy(). At the 54 beginning of C-Blosc development, benchmarks where saying that the 55 internal, multi-threaded copies inside C-Blosc were faster than 56 memcpy(), but 6 years later, memcpy() made greats strides in terms 57 of efficiency. With this, you should expect an slight speed 58 advantage (10% ~ 20%) when C-Blosc is used as a replacement of 59 memcpy() (which should not be the most common scenario out there). 60 61 - Added a new DEACTIVATE_AVX2 cmake option to explicitly disable AVX2 62 at build-time. Thanks to James Bird. 63 64 - The ``make -jN`` for parallel compilation should work now. Thanks 65 to James Bird. 66 67 68 Changes from 1.8.1 to 1.9.0 69 =========================== 70 71 * New blosc_get_nthreads() function to get the number of threads that 72 will be used internally during compression/decompression (set by 73 already existing blosc_set_nthreads()). 74 75 * New blosc_get_compressor() function to get the compressor that will 76 be used internally during compression (set by already existing 77 blosc_set_compressor()). 78 79 * New blosc_get_blocksize() function to get the internal blocksize to 80 be used during compression (set by already existing 81 blosc_set_blocksize()). 82 83 * Now, when the BLOSC_NOLOCK environment variable is set (to any 84 value), the calls to blosc_compress() and blosc_decompress() will 85 call blosc_compress_ctx() and blosc_decompress_ctx() under the hood 86 so as to avoid the internal locks. See blosc.h for details. This 87 allows multi-threaded apps calling the non _ctx() functions to avoid 88 the internal locks in C-Blosc. For the not multi-threaded app 89 though, it is in general slower to call the _ctx() functions so the 90 use of BLOSC_NOLOCK is discouraged. 91 92 * In the same vein, from now on, when the BLOSC_NTHREADS environment 93 variable is set to an integer, every call to blosc_compress() and 94 blosc_decompress() will call blosc_set_nthreads(BLOSC_NTHREADS) 95 before the actuall compression/decompression process. See blosc.h 96 for details. 97 98 * Finally, if BLOSC_CLEVEL, BLOSC_SHUFFLE, BLOSC_TYPESIZE and/or 99 BLOSC_COMPRESSOR variables are set in the environment, these will be 100 also honored before calling blosc_compress(). 101 102 * Calling blosc_init() before any other Blosc call, although 103 recommended, is not necessary anymore. The idea is that you can use 104 just the basic blosc_compress() and blosc_decompress() and control 105 other parameters (nthreads, compressor, blocksize) by using 106 environment variables (see above). 107 108 109 Changes from 1.8.0 to 1.8.1 110 =========================== 111 112 * Disable the use of __builtin_cpu_supports() for GCC 5.3.1 113 compatibility. Details in: 114 https://lists.fedoraproject.org/archives/list/[email protected]/thread/ZM2L65WIZEEQHHLFERZYD5FAG7QY2OGB/ 115 116 117 Changes from 1.7.1 to 1.8.0 118 =========================== 119 120 * The code is (again) compatible with VS2008 and VS2010. This is 121 important for compatibility with Python 2.6/2.7/3.3/3.4. 122 123 * Introduced a new global lock during blosc_decompress() operation. 124 As the blosc_compress() was already guarded by a global lock, this 125 means that the compression/decompression is again thread safe. 126 However, when using C-Blosc from multi-threaded environments, it is 127 important to keep using the *_ctx() functions for performance 128 reasons. NOTE: _ctx() functions will be replaced by more powerful 129 ones in C-Blosc 2.0. 130 131 132 Changes from 1.7.0 to 1.7.1 133 =========================== 134 135 * Fixed a bug preventing bitshuffle to work correctly on getitem(). 136 Now, everything with bitshuffle seems to work correctly. 137 138 * Fixed the thread initialization for blosc_decompress_ctx(). Issue 139 #158. Thanks to Chris Webers. 140 141 * Fixed a bug in the blocksize computation introduced in 1.7.0. This 142 could have been creating segfaults. 143 144 * Allow bitshuffle to run on 1-byte typesizes. 145 146 * New parametrization of the blocksize to be independent of the 147 typesize. This allows a smoother speed throughout all typesizes. 148 149 * lz4 and lz4hc codecs upgraded to 1.7.2 (from 1.7.0). 150 151 * When calling set_nthreads() but not actually changing the number of 152 threads in the internal pool does not teardown and setup it anymore. 153 PR #153. Thanks to Santi Villalba. 154 155 156 Changes from 1.6.1 to 1.7.0 157 =========================== 158 159 * Added a new 'bitshuffle' filter so that the shuffle takes place at a 160 bit level and not just at a byte one, which is what it does the 161 previous 'shuffle' filter. 162 163 For activating this new bit-level filter you only have to pass the 164 symbol BLOSC_BITSHUFFLE to `blosc_compress()`. For the previous 165 byte-level one, pass BLOSC_SHUFFLE. For disabling the shuffle, pass 166 BLOSC_NOSHUFFLE. 167 168 This is a port of the existing filter in 169 https://github.com/kiyo-masui/bitshuffle. Thanks to Kiyo Masui for 170 changing the license and allowing its inclusion here. 171 172 * New acceleration mode for LZ4 and BloscLZ codecs that enters in 173 operation with complevel < 9. This allows for an important boost in 174 speed with minimal compression ratio loss. Francesc Alted. 175 176 * LZ4 codec updated to 1.7.0 (r130). 177 178 * PREFER_EXTERNAL_COMPLIBS cmake option has been removed and replaced 179 by the more fine grained PREFER_EXTERNAL_LZ4, PREFER_EXTERNAL_SNAPPY 180 and PREFER_EXTERNAL_ZLIB. In order to allow the use of the new API 181 introduced in LZ4 1.7.0, PREFER_EXTERNAL_LZ4 has been set to OFF by 182 default, whereas PREFER_EXTERNAL_SNAPPY and PREFER_EXTERNAL_ZLIB 183 continues to be ON. 184 185 * Implemented SSE2 shuffle support for buffers containing a number of 186 elements which is not a multiple of (typesize * vectorsize). Jack 187 Pappas. 188 189 * Added SSE2 shuffle/unshuffle routines for types larger than 16 190 bytes. Jack Pappas. 191 192 * 'test_basic' suite has been split in components for a much better 193 granularity on what's a possibly failing test. Also, lots of new 194 tests have been added. Jack Pappas. 195 196 * Fixed compilation on non-Intel archs (tested on ARM). Zbyszek 197 Szmek. 198 199 * Modifyied cmake files in order to inform that AVX2 on Visual Studio 200 is supported only in 2013 update 2 and higher. 201 202 * Added a replacement for stdbool.h for Visual Studio < 2013. 203 204 * blosclz codec adds Win64/Intel as a platform supporting unaligned 205 addressing. That leads to a speed-up of 2.2x in decompression. 206 207 * New blosc_get_version_string() function for retrieving the version 208 of the c-blosc library. Useful when linking with dynamic libraries 209 and one want to know its version. 210 211 * New example (win-dynamic-linking.c) that shows how to link a Blosc 212 DLL dynamically in run-time (Windows only). 213 214 * The `context.threads_started` is initialized now when decompressing. 215 This could cause crashes in case you decompressed before compressing 216 (e.g. directly deserializing blosc buffers). @atchouprakov. 217 218 * The HDF5 filter has been removed from c-blosc and moved into its own 219 repo at: https://github.com/Blosc/hdf5 220 221 * The MS Visual Studio 2008 has been tested with c-blosc for ensuring 222 compatibility with extensions for Python 2.6 and up. 223 224 225 Changes from 1.6.0 to 1.6.1 226 =========================== 227 228 * Support for *runtime* detection of AVX2 and SSE2 SIMD instructions. 229 These changes make it possible to compile one single binary that 230 runs on a system that supports SSE2 or AVX2 (or neither), so the 231 redistribution problem is fixed (see #101). Thanks to Julian Taylor 232 and Jack Pappas. 233 234 * Added support for MinGW and TDM-GCC compilers for Windows. Thanks 235 to yasushima-gd. 236 237 * Fixed a bug in blosclz that could potentially overwrite an area 238 beyond the output buffer. See #113. 239 240 * New computation for blocksize so that larger typesizes (> 8 bytes) 241 would benefit of much better compression ratios. Speed is not 242 penalized too much. 243 244 * New parametrization of the hash table for blosclz codec. This 245 allows better compression in many scenarios, while slightly 246 increasing the speed. 247 248 249 Changes from 1.5.4 to 1.6.0 250 =========================== 251 252 * Support for AVX2 is here! The benchmarks with a 4-core Intel 253 Haswell machine tell that both compression and decompression are 254 accelerated around a 10%, reaching peaks of 9.6 GB/s during 255 compression and 26 GB/s during decompression (memcpy() speed for 256 this machine is 7.5 GB/s for writes and 11.7 GB/s for reads). Many 257 thanks to @littlezhou for this nice work. 258 259 * Support for HPET (high precision timers) for the `bench` program. 260 This is particularly important for microbenchmarks like bench is 261 doing; since they take so little time to run, the granularity of a 262 less-accurate timer may account for a significant portion of the 263 runtime of the benchmark itself, skewing the results. Thanks to 264 Jack Pappas. 265 266 267 Changes from 1.5.3 to 1.5.4 268 =========================== 269 270 * Updated to LZ4 1.6.0 (r128). 271 272 * Fix resource leak in t_blosc. Jack Pappas. 273 274 * Better checks during testing. Jack Pappas. 275 276 * Dynamically loadable HDF5 filter plugin. Kiyo Masui. 277 278 279 Changes from 1.5.2 to 1.5.3 280 =========================== 281 282 * Use llabs function (where available) instead of abs to avoid 283 truncating the result. Jack Pappas. 284 285 * Use C11 aligned_alloc when it's available. Jack Pappas. 286 287 * Use the built-in stdint.h with MSVC when available. Jack Pappas. 288 289 * Only define the __SSE2__ symbol when compiling with MS Visual C++ 290 and targeting x64 or x86 with the correct /arch flag set. This 291 avoids re-defining the symbol which makes other compilers issue 292 warnings. Jack Pappas. 293 294 * Reinitializing Blosc during a call to set_nthreads() so as to fix 295 problems with contexts. Francesc Alted. 296 297 298 299 Changes from 1.5.1 to 1.5.2 300 =========================== 301 302 * Using blosc_compress_ctx() / blosc_decompress_ctx() inside the HDF5 303 compressor for allowing operation in multiprocess scenarios. See: 304 https://github.com/PyTables/PyTables/issues/412 305 306 The drawback of this quick fix is that the Blosc filter will be only 307 able to use a single thread until another solution can be devised. 308 309 310 Changes from 1.5.0 to 1.5.1 311 =========================== 312 313 * Updated to LZ4 1.5.0. Closes #74. 314 315 * Added the 'const' qualifier to non SSE2 shuffle functions. Closes #75. 316 317 * Explicitly call blosc_init() in HDF5 blosc_filter.c, fixing a 318 segfault. 319 320 * Quite a few improvements in cmake files for HDF5 support. Thanks to 321 Dana Robinson (The HDF Group). 322 323 * Variable 'class' caused problems compiling the HDF5 filter with g++. 324 Thanks to Laurent Chapon. 325 326 * Small improvements on docstrings of c-blosc main functions. 327 328 329 Changes from 1.4.1 to 1.5.0 330 =========================== 331 332 * Added new calls for allowing Blosc to be used *simultaneously* 333 (i.e. lock free) from multi-threaded environments. The new 334 functions are: 335 336 - blosc_compress_ctx(...) 337 - blosc_decompress_ctx(...) 338 339 See the new docstrings in blosc.h for how to use them. The previous 340 API should be completely unaffected. Thanks to Christopher Speller. 341 342 * Optimized copies during BloscLZ decompression. This can make BloscLZ 343 to decompress up to 1.5x faster in some situations. 344 345 * LZ4 and LZ4HC compressors updated to version 1.3.1. 346 347 * Added an examples directory on how to link apps with Blosc. 348 349 * stdlib.h moved from blosc.c to blosc.h as suggested by Rob Lathm. 350 351 * Fix a warning for {snappy,lz4}-free compilation. Thanks to Andrew Schaaf. 352 353 * Several improvements for CMakeLists.txt (cmake). 354 355 * Fixing C99 compatibility warnings. Thanks to Christopher Speller. 356 357 358 Changes from 1.4.0 to 1.4.1 359 =========================== 360 361 * Fixed a bug in blosc_getitem() introduced in 1.4.0. Added a test for 362 blosc_getitem() as well. 363 364 365 Changes from 1.3.6 to 1.4.0 366 =========================== 367 368 * Support for non-Intel and non-SSE2 architectures has been added. In 369 particular, the Raspberry Pi platform (ARM) has been tested and all 370 tests pass here. 371 372 * Architectures requiring strict access alignment are supported as well. 373 Due to this, arquitectures with a high penalty in accessing unaligned 374 data (e.g. Raspberry Pi, ARMv6) can compress up to 2.5x faster. 375 376 * LZ4 has been updated to r119 (1.2.0) so as to fix a possible security 377 breach. 378 379 380 Changes from 1.3.5 to 1.3.6 381 =========================== 382 383 * Updated to LZ4 r118 due to a (highly unlikely) security hole. For 384 details see: 385 386 http://fastcompression.blogspot.fr/2014/06/debunking-lz4-20-years-old-bug-myth.html 387 388 389 Changes from 1.3.4 to 1.3.5 390 =========================== 391 392 * Removed a pointer from 'pointer from integer without a cast' compiler 393 warning due to a bad macro definition. 394 395 396 Changes from 1.3.3 to 1.3.4 397 =========================== 398 399 * Fixed a false buffer overrun condition. This bug made c-blosc to 400 fail, even if the failure was not real. 401 402 * Fixed the type of a buffer string. 403 404 405 Changes from 1.3.2 to 1.3.3 406 =========================== 407 408 * Updated to LZ4 1.1.3 (improved speed for 32-bit platforms). 409 410 * Added a new `blosc_cbuffer_complib()` for getting the compression 411 library for a compressed buffer. 412 413 414 Changes from 1.3.1 to 1.3.2 415 =========================== 416 417 * Fix for compiling Snappy sources against MSVC 2008. Thanks to Mark 418 Wiebe! 419 420 * Version for internal LZ4 and Snappy are now supported. When compiled 421 against the external libraries, this info is not available because 422 they do not support the symbols (yet). 423 424 425 Changes from 1.3.0 to 1.3.1 426 =========================== 427 428 * Fixes for a series of issues with the filter for HDF5 and, in 429 particular, a problem in the decompression buffer size that made it 430 impossible to use the blosc_filter in combination with other ones 431 (e.g. fletcher32). See 432 https://github.com/PyTables/PyTables/issues/21. 433 434 Thanks to Antonio Valentino for the fix! 435 436 437 Changes from 1.2.4 to 1.3.0 438 =========================== 439 440 A nice handful of compressors have been added to Blosc: 441 442 * LZ4 (http://code.google.com/p/lz4/): A very fast 443 compressor/decompressor. Could be thought as a replacement of the 444 original BloscLZ, but it can behave better is some scenarios. 445 446 * LZ4HC (http://code.google.com/p/lz4/): This is a variation of LZ4 447 that achieves much better compression ratio at the cost of being 448 much slower for compressing. Decompression speed is unaffected (and 449 sometimes better than when using LZ4 itself!), so this is very good 450 for read-only datasets. 451 452 * Snappy (http://code.google.com/p/snappy/): A very fast 453 compressor/decompressor. Could be thought as a replacement of the 454 original BloscLZ, but it can behave better is some scenarios. 455 456 * Zlib (http://www.zlib.net/): This is a classic. It achieves very 457 good compression ratios, at the cost of speed. However, 458 decompression speed is still pretty good, so it is a good candidate 459 for read-only datasets. 460 461 With this, you can select the compression library with the new 462 function:: 463 464 int blosc_set_complib(char* complib); 465 466 where you pass the library that you want to use (currently "blosclz", 467 "lz4", "lz4hc", "snappy" and "zlib", but the list can grow in the 468 future). 469 470 You can get more info about compressors support in you Blosc build by 471 using these functions:: 472 473 char* blosc_list_compressors(void); 474 int blosc_get_complib_info(char *compressor, char **complib, char **version); 8 475 9 476 … … 245 712 necessary on Mac because 16 bytes alignment is ensured by default. 246 713 Thanks to Ivan Vilata. Fixes #3. 247 248 249 250 251 .. Local Variables:252 .. mode: rst253 .. coding: utf-8254 .. fill-column: 72255 .. End:
Note: See TracChangeset
for help on using the changeset viewer.