RELEASE_NOTES.rst 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693
  1. ===========================
  2. Release notes for C-Blosc
  3. ===========================
  4. :Author: Francesc Alted
  5. :Contact: francesc@blosc.org
  6. :URL: http://www.blosc.org
  7. Changes from 1.9.2 to 1.9.3
  8. ===========================
  9. - Reverted a mistake introduced in 1.7.1. At that time, bit-shuffling
  10. was enabled for typesize == 1 (i.e. strings), but the change also
  11. included byte-shuffling accidentally. This only affected performance,
  12. but in a quite bad way (a copy was needed). This has been fixed and
  13. byte-shuffling is not active when typesize == 1 anymore.
  14. Changes from 1.9.1 to 1.9.2
  15. ===========================
  16. - Check whether Blosc is actually initialized before blosc_init(),
  17. blosc_destroy() and blosc_free_resources(). This makes the library
  18. more resistant to different initialization cycles
  19. (e.g. https://github.com/stevengj/Blosc.jl/issues/19).
  20. Changes from 1.9.0 to 1.9.1
  21. ===========================
  22. - The internal copies when clevel=0 are made now via memcpy(). At the
  23. beginning of C-Blosc development, benchmarks where saying that the
  24. internal, multi-threaded copies inside C-Blosc were faster than
  25. memcpy(), but 6 years later, memcpy() made greats strides in terms
  26. of efficiency. With this, you should expect an slight speed
  27. advantage (10% ~ 20%) when C-Blosc is used as a replacement of
  28. memcpy() (which should not be the most common scenario out there).
  29. - Added a new DEACTIVATE_AVX2 cmake option to explicitly disable AVX2
  30. at build-time. Thanks to James Bird.
  31. - The ``make -jN`` for parallel compilation should work now. Thanks
  32. to James Bird.
  33. Changes from 1.8.1 to 1.9.0
  34. ===========================
  35. * New blosc_get_nthreads() function to get the number of threads that
  36. will be used internally during compression/decompression (set by
  37. already existing blosc_set_nthreads()).
  38. * New blosc_get_compressor() function to get the compressor that will
  39. be used internally during compression (set by already existing
  40. blosc_set_compressor()).
  41. * New blosc_get_blocksize() function to get the internal blocksize to
  42. be used during compression (set by already existing
  43. blosc_set_blocksize()).
  44. * Now, when the BLOSC_NOLOCK environment variable is set (to any
  45. value), the calls to blosc_compress() and blosc_decompress() will
  46. call blosc_compress_ctx() and blosc_decompress_ctx() under the hood
  47. so as to avoid the internal locks. See blosc.h for details. This
  48. allows multi-threaded apps calling the non _ctx() functions to avoid
  49. the internal locks in C-Blosc. For the not multi-threaded app
  50. though, it is in general slower to call the _ctx() functions so the
  51. use of BLOSC_NOLOCK is discouraged.
  52. * In the same vein, from now on, when the BLOSC_NTHREADS environment
  53. variable is set to an integer, every call to blosc_compress() and
  54. blosc_decompress() will call blosc_set_nthreads(BLOSC_NTHREADS)
  55. before the actuall compression/decompression process. See blosc.h
  56. for details.
  57. * Finally, if BLOSC_CLEVEL, BLOSC_SHUFFLE, BLOSC_TYPESIZE and/or
  58. BLOSC_COMPRESSOR variables are set in the environment, these will be
  59. also honored before calling blosc_compress().
  60. * Calling blosc_init() before any other Blosc call, although
  61. recommended, is not necessary anymore. The idea is that you can use
  62. just the basic blosc_compress() and blosc_decompress() and control
  63. other parameters (nthreads, compressor, blocksize) by using
  64. environment variables (see above).
  65. Changes from 1.8.0 to 1.8.1
  66. ===========================
  67. * Disable the use of __builtin_cpu_supports() for GCC 5.3.1
  68. compatibility. Details in:
  69. https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/ZM2L65WIZEEQHHLFERZYD5FAG7QY2OGB/
  70. Changes from 1.7.1 to 1.8.0
  71. ===========================
  72. * The code is (again) compatible with VS2008 and VS2010. This is
  73. important for compatibility with Python 2.6/2.7/3.3/3.4.
  74. * Introduced a new global lock during blosc_decompress() operation.
  75. As the blosc_compress() was already guarded by a global lock, this
  76. means that the compression/decompression is again thread safe.
  77. However, when using C-Blosc from multi-threaded environments, it is
  78. important to keep using the *_ctx() functions for performance
  79. reasons. NOTE: _ctx() functions will be replaced by more powerful
  80. ones in C-Blosc 2.0.
  81. Changes from 1.7.0 to 1.7.1
  82. ===========================
  83. * Fixed a bug preventing bitshuffle to work correctly on getitem().
  84. Now, everything with bitshuffle seems to work correctly.
  85. * Fixed the thread initialization for blosc_decompress_ctx(). Issue
  86. #158. Thanks to Chris Webers.
  87. * Fixed a bug in the blocksize computation introduced in 1.7.0. This
  88. could have been creating segfaults.
  89. * Allow bitshuffle to run on 1-byte typesizes.
  90. * New parametrization of the blocksize to be independent of the
  91. typesize. This allows a smoother speed throughout all typesizes.
  92. * lz4 and lz4hc codecs upgraded to 1.7.2 (from 1.7.0).
  93. * When calling set_nthreads() but not actually changing the number of
  94. threads in the internal pool does not teardown and setup it anymore.
  95. PR #153. Thanks to Santi Villalba.
  96. Changes from 1.6.1 to 1.7.0
  97. ===========================
  98. * Added a new 'bitshuffle' filter so that the shuffle takes place at a
  99. bit level and not just at a byte one, which is what it does the
  100. previous 'shuffle' filter.
  101. For activating this new bit-level filter you only have to pass the
  102. symbol BLOSC_BITSHUFFLE to `blosc_compress()`. For the previous
  103. byte-level one, pass BLOSC_SHUFFLE. For disabling the shuffle, pass
  104. BLOSC_NOSHUFFLE.
  105. This is a port of the existing filter in
  106. https://github.com/kiyo-masui/bitshuffle. Thanks to Kiyo Masui for
  107. changing the license and allowing its inclusion here.
  108. * New acceleration mode for LZ4 and BloscLZ codecs that enters in
  109. operation with complevel < 9. This allows for an important boost in
  110. speed with minimal compression ratio loss. Francesc Alted.
  111. * LZ4 codec updated to 1.7.0 (r130).
  112. * PREFER_EXTERNAL_COMPLIBS cmake option has been removed and replaced
  113. by the more fine grained PREFER_EXTERNAL_LZ4, PREFER_EXTERNAL_SNAPPY
  114. and PREFER_EXTERNAL_ZLIB. In order to allow the use of the new API
  115. introduced in LZ4 1.7.0, PREFER_EXTERNAL_LZ4 has been set to OFF by
  116. default, whereas PREFER_EXTERNAL_SNAPPY and PREFER_EXTERNAL_ZLIB
  117. continues to be ON.
  118. * Implemented SSE2 shuffle support for buffers containing a number of
  119. elements which is not a multiple of (typesize * vectorsize). Jack
  120. Pappas.
  121. * Added SSE2 shuffle/unshuffle routines for types larger than 16
  122. bytes. Jack Pappas.
  123. * 'test_basic' suite has been split in components for a much better
  124. granularity on what's a possibly failing test. Also, lots of new
  125. tests have been added. Jack Pappas.
  126. * Fixed compilation on non-Intel archs (tested on ARM). Zbyszek
  127. Szmek.
  128. * Modifyied cmake files in order to inform that AVX2 on Visual Studio
  129. is supported only in 2013 update 2 and higher.
  130. * Added a replacement for stdbool.h for Visual Studio < 2013.
  131. * blosclz codec adds Win64/Intel as a platform supporting unaligned
  132. addressing. That leads to a speed-up of 2.2x in decompression.
  133. * New blosc_get_version_string() function for retrieving the version
  134. of the c-blosc library. Useful when linking with dynamic libraries
  135. and one want to know its version.
  136. * New example (win-dynamic-linking.c) that shows how to link a Blosc
  137. DLL dynamically in run-time (Windows only).
  138. * The `context.threads_started` is initialized now when decompressing.
  139. This could cause crashes in case you decompressed before compressing
  140. (e.g. directly deserializing blosc buffers). @atchouprakov.
  141. * The HDF5 filter has been removed from c-blosc and moved into its own
  142. repo at: https://github.com/Blosc/hdf5
  143. * The MS Visual Studio 2008 has been tested with c-blosc for ensuring
  144. compatibility with extensions for Python 2.6 and up.
  145. Changes from 1.6.0 to 1.6.1
  146. ===========================
  147. * Support for *runtime* detection of AVX2 and SSE2 SIMD instructions.
  148. These changes make it possible to compile one single binary that
  149. runs on a system that supports SSE2 or AVX2 (or neither), so the
  150. redistribution problem is fixed (see #101). Thanks to Julian Taylor
  151. and Jack Pappas.
  152. * Added support for MinGW and TDM-GCC compilers for Windows. Thanks
  153. to yasushima-gd.
  154. * Fixed a bug in blosclz that could potentially overwrite an area
  155. beyond the output buffer. See #113.
  156. * New computation for blocksize so that larger typesizes (> 8 bytes)
  157. would benefit of much better compression ratios. Speed is not
  158. penalized too much.
  159. * New parametrization of the hash table for blosclz codec. This
  160. allows better compression in many scenarios, while slightly
  161. increasing the speed.
  162. Changes from 1.5.4 to 1.6.0
  163. ===========================
  164. * Support for AVX2 is here! The benchmarks with a 4-core Intel
  165. Haswell machine tell that both compression and decompression are
  166. accelerated around a 10%, reaching peaks of 9.6 GB/s during
  167. compression and 26 GB/s during decompression (memcpy() speed for
  168. this machine is 7.5 GB/s for writes and 11.7 GB/s for reads). Many
  169. thanks to @littlezhou for this nice work.
  170. * Support for HPET (high precision timers) for the `bench` program.
  171. This is particularly important for microbenchmarks like bench is
  172. doing; since they take so little time to run, the granularity of a
  173. less-accurate timer may account for a significant portion of the
  174. runtime of the benchmark itself, skewing the results. Thanks to
  175. Jack Pappas.
  176. Changes from 1.5.3 to 1.5.4
  177. ===========================
  178. * Updated to LZ4 1.6.0 (r128).
  179. * Fix resource leak in t_blosc. Jack Pappas.
  180. * Better checks during testing. Jack Pappas.
  181. * Dynamically loadable HDF5 filter plugin. Kiyo Masui.
  182. Changes from 1.5.2 to 1.5.3
  183. ===========================
  184. * Use llabs function (where available) instead of abs to avoid
  185. truncating the result. Jack Pappas.
  186. * Use C11 aligned_alloc when it's available. Jack Pappas.
  187. * Use the built-in stdint.h with MSVC when available. Jack Pappas.
  188. * Only define the __SSE2__ symbol when compiling with MS Visual C++
  189. and targeting x64 or x86 with the correct /arch flag set. This
  190. avoids re-defining the symbol which makes other compilers issue
  191. warnings. Jack Pappas.
  192. * Reinitializing Blosc during a call to set_nthreads() so as to fix
  193. problems with contexts. Francesc Alted.
  194. Changes from 1.5.1 to 1.5.2
  195. ===========================
  196. * Using blosc_compress_ctx() / blosc_decompress_ctx() inside the HDF5
  197. compressor for allowing operation in multiprocess scenarios. See:
  198. https://github.com/PyTables/PyTables/issues/412
  199. The drawback of this quick fix is that the Blosc filter will be only
  200. able to use a single thread until another solution can be devised.
  201. Changes from 1.5.0 to 1.5.1
  202. ===========================
  203. * Updated to LZ4 1.5.0. Closes #74.
  204. * Added the 'const' qualifier to non SSE2 shuffle functions. Closes #75.
  205. * Explicitly call blosc_init() in HDF5 blosc_filter.c, fixing a
  206. segfault.
  207. * Quite a few improvements in cmake files for HDF5 support. Thanks to
  208. Dana Robinson (The HDF Group).
  209. * Variable 'class' caused problems compiling the HDF5 filter with g++.
  210. Thanks to Laurent Chapon.
  211. * Small improvements on docstrings of c-blosc main functions.
  212. Changes from 1.4.1 to 1.5.0
  213. ===========================
  214. * Added new calls for allowing Blosc to be used *simultaneously*
  215. (i.e. lock free) from multi-threaded environments. The new
  216. functions are:
  217. - blosc_compress_ctx(...)
  218. - blosc_decompress_ctx(...)
  219. See the new docstrings in blosc.h for how to use them. The previous
  220. API should be completely unaffected. Thanks to Christopher Speller.
  221. * Optimized copies during BloscLZ decompression. This can make BloscLZ
  222. to decompress up to 1.5x faster in some situations.
  223. * LZ4 and LZ4HC compressors updated to version 1.3.1.
  224. * Added an examples directory on how to link apps with Blosc.
  225. * stdlib.h moved from blosc.c to blosc.h as suggested by Rob Lathm.
  226. * Fix a warning for {snappy,lz4}-free compilation. Thanks to Andrew Schaaf.
  227. * Several improvements for CMakeLists.txt (cmake).
  228. * Fixing C99 compatibility warnings. Thanks to Christopher Speller.
  229. Changes from 1.4.0 to 1.4.1
  230. ===========================
  231. * Fixed a bug in blosc_getitem() introduced in 1.4.0. Added a test for
  232. blosc_getitem() as well.
  233. Changes from 1.3.6 to 1.4.0
  234. ===========================
  235. * Support for non-Intel and non-SSE2 architectures has been added. In
  236. particular, the Raspberry Pi platform (ARM) has been tested and all
  237. tests pass here.
  238. * Architectures requiring strict access alignment are supported as well.
  239. Due to this, arquitectures with a high penalty in accessing unaligned
  240. data (e.g. Raspberry Pi, ARMv6) can compress up to 2.5x faster.
  241. * LZ4 has been updated to r119 (1.2.0) so as to fix a possible security
  242. breach.
  243. Changes from 1.3.5 to 1.3.6
  244. ===========================
  245. * Updated to LZ4 r118 due to a (highly unlikely) security hole. For
  246. details see:
  247. http://fastcompression.blogspot.fr/2014/06/debunking-lz4-20-years-old-bug-myth.html
  248. Changes from 1.3.4 to 1.3.5
  249. ===========================
  250. * Removed a pointer from 'pointer from integer without a cast' compiler
  251. warning due to a bad macro definition.
  252. Changes from 1.3.3 to 1.3.4
  253. ===========================
  254. * Fixed a false buffer overrun condition. This bug made c-blosc to
  255. fail, even if the failure was not real.
  256. * Fixed the type of a buffer string.
  257. Changes from 1.3.2 to 1.3.3
  258. ===========================
  259. * Updated to LZ4 1.1.3 (improved speed for 32-bit platforms).
  260. * Added a new `blosc_cbuffer_complib()` for getting the compression
  261. library for a compressed buffer.
  262. Changes from 1.3.1 to 1.3.2
  263. ===========================
  264. * Fix for compiling Snappy sources against MSVC 2008. Thanks to Mark
  265. Wiebe!
  266. * Version for internal LZ4 and Snappy are now supported. When compiled
  267. against the external libraries, this info is not available because
  268. they do not support the symbols (yet).
  269. Changes from 1.3.0 to 1.3.1
  270. ===========================
  271. * Fixes for a series of issues with the filter for HDF5 and, in
  272. particular, a problem in the decompression buffer size that made it
  273. impossible to use the blosc_filter in combination with other ones
  274. (e.g. fletcher32). See
  275. https://github.com/PyTables/PyTables/issues/21.
  276. Thanks to Antonio Valentino for the fix!
  277. Changes from 1.2.4 to 1.3.0
  278. ===========================
  279. A nice handful of compressors have been added to Blosc:
  280. * LZ4 (http://code.google.com/p/lz4/): A very fast
  281. compressor/decompressor. Could be thought as a replacement of the
  282. original BloscLZ, but it can behave better is some scenarios.
  283. * LZ4HC (http://code.google.com/p/lz4/): This is a variation of LZ4
  284. that achieves much better compression ratio at the cost of being
  285. much slower for compressing. Decompression speed is unaffected (and
  286. sometimes better than when using LZ4 itself!), so this is very good
  287. for read-only datasets.
  288. * Snappy (http://code.google.com/p/snappy/): A very fast
  289. compressor/decompressor. Could be thought as a replacement of the
  290. original BloscLZ, but it can behave better is some scenarios.
  291. * Zlib (http://www.zlib.net/): This is a classic. It achieves very
  292. good compression ratios, at the cost of speed. However,
  293. decompression speed is still pretty good, so it is a good candidate
  294. for read-only datasets.
  295. With this, you can select the compression library with the new
  296. function::
  297. int blosc_set_complib(char* complib);
  298. where you pass the library that you want to use (currently "blosclz",
  299. "lz4", "lz4hc", "snappy" and "zlib", but the list can grow in the
  300. future).
  301. You can get more info about compressors support in you Blosc build by
  302. using these functions::
  303. char* blosc_list_compressors(void);
  304. int blosc_get_complib_info(char *compressor, char **complib, char **version);
  305. Changes from 1.2.2 to 1.2.3
  306. ===========================
  307. - Added a `blosc_init()` and `blosc_destroy()` so that the global lock
  308. can be initialized safely. These new functions will also allow other
  309. kind of initializations/destructions in the future.
  310. Existing applications using Blosc do not need to start using the new
  311. functions right away, as long as they calling `blosc_set_nthreads()`
  312. previous to anything else. However, using them is highly recommended.
  313. Thanks to Oscar Villellas for the init/destroy suggestion, it is a
  314. nice idea!
  315. Changes from 1.2.1 to 1.2.2
  316. ===========================
  317. - All important warnings removed for all tested platforms. This will
  318. allow less intrusiveness compilation experiences with applications
  319. including Blosc source code.
  320. - The `bench/bench.c` has been updated so that it can be compiled on
  321. Windows again.
  322. - The new web site has been set to: http://www.blosc.org
  323. Changes from 1.2 to 1.2.1
  324. =========================
  325. - Fixed a problem with global lock not being initialized. This
  326. affected mostly to Windows platforms. Thanks to Christoph
  327. Gohlke for finding the cure!
  328. Changes from 1.1.5 to 1.2
  329. =========================
  330. - Now it is possible to call Blosc simultaneously from a parent threaded
  331. application without problems. This has been solved by setting a
  332. global lock so that the different calling threads do not execute Blosc
  333. routines at the same time. Of course, real threading work is still
  334. available *inside* Blosc itself. Thanks to Thibault North.
  335. - Support for cmake is now included. Linux, Mac OSX and Windows
  336. platforms are supported. Thanks to Thibault North, Antonio Valentino
  337. and Mark Wiebe.
  338. - Fixed many compilers warnings (specially about unused variables).
  339. - As a consequence of the above, as minimal change in the API has been
  340. introduced. That is, the previous API::
  341. void blosc_free_resources(void)
  342. has changed to::
  343. int blosc_free_resources(void)
  344. Now, a return value of 0 means that the resources have been released
  345. successfully. If the return value is negative, then it is not
  346. guaranteed that all the resources have been freed.
  347. - Many typos were fixed and docs have been improved. The script for
  348. generating nice plots for the included benchmarks has been improved
  349. too. Thanks to Valetin Haenel.
  350. Changes from 1.1.4 to 1.1.5
  351. ===========================
  352. - Fix compile error with msvc compilers (Christoph Gohlke)
  353. Changes from 1.1.3 to 1.1.4
  354. ===========================
  355. - Redefinition of the BLOSC_MAX_BUFFERSIZE constant as (INT_MAX -
  356. BLOSC_MAX_OVERHEAD) instead of just INT_MAX. This prevents to produce
  357. outputs larger than INT_MAX, which is not supported.
  358. - `exit()` call has been replaced by a ``return -1`` in blosc_compress()
  359. when checking for buffer sizes. Now programs will not just exit when
  360. the buffer is too large, but return a negative code.
  361. - Improvements in explicit casts. Blosc compiles without warnings
  362. (with GCC) now.
  363. - Lots of improvements in docs, in particular a nice ascii-art diagram
  364. of the Blosc format (Valentin Haenel).
  365. - Improvements to the plot-speeds.py (Valentin Haenel).
  366. - [HDF5 filter] Adapted HDF5 filter to use HDF5 1.8 by default
  367. (Antonio Valentino).
  368. - [HDF5 filter] New version of H5Z_class_t definition (Antonio Valentino).
  369. Changes from 1.1.2 to 1.1.3
  370. ===========================
  371. - Much improved compression ratio when using large blocks (> 64 KB) and
  372. high compression levels (> 6) under some circumstances (special data
  373. distribution). Closes #7.
  374. Changes from 1.1.1 to 1.1.2
  375. ===========================
  376. - Fixes for small typesizes (#6 and #1 of python-blosc).
  377. Changes from 1.1 to 1.1.1
  378. =========================
  379. - Added code to avoid calling blosc_set_nthreads more than necessary.
  380. That will improve performance up to 3x or more, specially for small
  381. chunksizes (< 1 MB).
  382. Changes from 1.0 to 1.1
  383. =======================
  384. - Added code for emulating pthreads API on Windows. No need to link
  385. explicitly with pthreads lib on Windows anymore. However, performance
  386. is a somewhat worse because the new emulation layer does not support
  387. the `pthread_barrier_wait()` call natively. But the big improvement
  388. in installation easiness is worth this penalty (most specially on
  389. 64-bit Windows, where pthreads-win32 support is flaky).
  390. - New BLOSC_MAX_BUFFERSIZE, BLOSC_MAX_TYPESIZE and BLOSC_MAX_THREADS
  391. symbols are available in blosc.h. These can be useful for validating
  392. parameters in clients. Thanks to Robert Smallshire for suggesting
  393. that.
  394. - A new BLOSC_MIN_HEADER_LENGTH symbol in blosc.h tells how many bytes
  395. long is the minimum length of a Blosc header. `blosc_cbuffer_sizes()`
  396. only needs these bytes to be passed to work correctly.
  397. - Removed many warnings (related with potentially dangerous type-casting
  398. code) issued by MSVC 2008 in 64-bit mode.
  399. - Fixed a problem with the computation of the blocksize in the Blosc
  400. filter for HDF5.
  401. - Fixed a problem with large datatypes. See
  402. http://www.pytables.org/trac/ticket/288 for more info.
  403. - Now Blosc is able to work well even if you fork an existing process
  404. with a pool of threads. Bug discovered when PyTables runs in
  405. multiprocess environments. See http://pytables.org/trac/ticket/295
  406. for details.
  407. - Added a new `blosc_getitem()` call to allow the retrieval of items in
  408. sizes smaller than the complete buffer. That is useful for the carray
  409. project, but certainly for others too.
  410. Changes from 0.9.5 to 1.0
  411. =========================
  412. - Added a filter for HDF5 so that people can use Blosc outside PyTables,
  413. if they want to.
  414. - Many small improvements, specially in README files.
  415. - Do not assume that size_t is uint_32 for every platform.
  416. - Added more protection for large buffers or in allocation memory
  417. routines.
  418. - The src/ directory has been renamed to blosc/.
  419. - The `maxbytes` parameter in `blosc_compress()` has been renamed to
  420. `destsize`. This is for consistency with the `blosc_decompress()`
  421. parameters.
  422. Changes from 0.9.4 to 0.9.5
  423. ===========================
  424. - Now, compression level 0 is allowed, meaning not compression at all.
  425. The overhead of this mode will be always BLOSC_MAX_OVERHEAD (16)
  426. bytes. This mode actually represents using Blosc as a basic memory
  427. container.
  428. - Supported a new parameter `maxbytes` for ``blosc_compress()``. It
  429. represents a maximum of bytes for output. Tests unit added too.
  430. - Added 3 new functions for querying different metadata on compressed
  431. buffers. A test suite for testing the new API has been added too.
  432. Changes from 0.9.3 to 0.9.4
  433. ===========================
  434. - Support for cross-platform big/little endian compatibility in Blosc
  435. headers has been added.
  436. - Fixed several failures exposed by the extremesuite. The problem was a
  437. bad check for limits in the buffer size while compressing.
  438. - Added a new suite in bench.c called ``debugsuite`` that is
  439. appropriate for debugging purposes. Now, the ``extremesuite`` can be
  440. used for running the complete (and extremely long) suite.
  441. Changes from 0.9.0 to 0.9.3
  442. ===========================
  443. - Fixed several nasty bugs uncovered by the new suites in bench.c.
  444. Thanks to Tony Theodore and Gabriel Beckers for their (very)
  445. responsive beta testing and feedback.
  446. - Added several modes (suites), namely ``suite``, ``hardsuite`` and
  447. ``extremehardsuite`` in bench.c so as to allow different levels of
  448. testing.
  449. Changes from 0.8.0 to 0.9
  450. =========================
  451. - Internal format version bumped to 2 in order to allow an easy way to
  452. indicate that a buffer is being saved uncompressed. This is not
  453. supported yet, but it might be in the future.
  454. - Blosc can use threads now for leveraging the increasing number of
  455. multi-core processors out there. See README-threaded.txt for more
  456. info.
  457. - Added a protection for MacOSX so that it has to not link against
  458. posix_memalign() funtion, which seems not available in old versions of
  459. MacOSX (for example, Tiger). At nay rate, posix_memalign() is not
  460. necessary on Mac because 16 bytes alignment is ensured by default.
  461. Thanks to Ivan Vilata. Fixes #3.