Ignore:
Timestamp:
08/26/16 19:35:26 (8 years ago)
Author:
Hal Finkel <hfinkel@…>
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)
Message:

Upgrade to latest blosc library

blosc git: e394f327ccc78319d90a06af0b88bce07034b8dd

File:
1 edited

Legend:

Unmodified
Added
Removed
  • thirdparty/blosc/RELEASE_NOTES.rst

    r00587dc r981e22c  
    1 =============================== 
    2  Release notes for Blosc 1.2.3 
    3 =============================== 
     1=========================== 
     2 Release notes for C-Blosc 
     3=========================== 
    44 
    55:Author: Francesc Alted 
    6 :Contact: f[email protected] 
     6:Contact: f[email protected] 
    77:URL: http://www.blosc.org 
     8 
     9 
     10Changes from 1.10.0 to 1.10.1 
     11============================= 
     12 
     13 #XXX version-specific blurb XXX# 
     14 
     15 
     16Changes 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 
     31Changes 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 
     41Changes 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 
     50Changes 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 
     68Changes 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 
     109Changes 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 
     117Changes 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 
     132Changes 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 
     156Changes 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 
     225Changes 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 
     249Changes 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 
     267Changes 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 
     279Changes 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 
     299Changes 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 
     310Changes 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 
     329Changes 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 
     358Changes 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 
     365Changes 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 
     380Changes 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 
     389Changes 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 
     396Changes 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 
     405Changes 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 
     414Changes 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 
     425Changes 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 
     437Changes from 1.2.4 to 1.3.0 
     438=========================== 
     439 
     440A 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 
     461With this, you can select the compression library with the new 
     462function:: 
     463 
     464  int blosc_set_complib(char* complib); 
     465 
     466where you pass the library that you want to use (currently "blosclz", 
     467"lz4", "lz4hc", "snappy" and "zlib", but the list can grow in the 
     468future). 
     469 
     470You can get more info about compressors support in you Blosc build by 
     471using these functions:: 
     472 
     473  char* blosc_list_compressors(void); 
     474  int blosc_get_complib_info(char *compressor, char **complib, char **version); 
    8475 
    9476 
     
    245712  necessary on Mac because 16 bytes alignment is ensured by default. 
    246713  Thanks to Ivan Vilata.  Fixes #3. 
    247  
    248  
    249  
    250  
    251 .. Local Variables: 
    252 .. mode: rst 
    253 .. coding: utf-8 
    254 .. fill-column: 72 
    255 .. End: 
Note: See TracChangeset for help on using the changeset viewer.