NEWS 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. ============================================================================
  2. User visible changes for LZO -- a real-time data compression library
  3. ============================================================================
  4. Changes in 2.09 (04 Feb 2015)
  5. * Work around gcc bug #64516 that could affect architectures like
  6. armv4, armv5 and sparc.
  7. Changes in 2.08 (29 Jun 2014)
  8. * Updated the Autoconf scripts to fix some reported build problems.
  9. * Added CMake build support.
  10. * Fixed lzo_init() on big-endian architectures like Sparc.
  11. Changes in 2.07 (25 Jun 2014)
  12. * Fixed a potential integer overflow condition in the "safe" decompressor
  13. variants which could result in a possible buffer overrun when
  14. processing maliciously crafted compressed input data.
  15. Fortunately this issue only affects 32-bit systems and also can only happen
  16. if you use uncommonly huge buffer sizes where you have to decompress more
  17. than 16 MiB (> 2^24 bytes) untrusted compressed bytes within a single
  18. function call, so the practical implications are limited.
  19. POTENTIAL SECURITY ISSUE. CVE-2014-4607.
  20. * Removed support for ancient configurations like 16-bit "huge" pointers -
  21. LZO now requires a flat 32-bit or 64-bit memory model.
  22. * Assorted cleanups.
  23. Changes in 2.06 (12 Aug 2011)
  24. * Some minor optimizations for big-endian architectures.
  25. * Fixed overly strict malloc() misalignment check in examples.
  26. Changes in 2.05 (23 Apr 2011)
  27. * Converted the configure system to non-recursive Automake.
  28. * Applied some overdue speed optimizations for modern x86/x64 architectures
  29. and current compilers like gcc 4.6 and MSVC 2010.
  30. Changes in 2.04 (31 Oct 2010)
  31. * Fixed a gcc-4.5 aliasing issue in lzo_init().
  32. * Updated the configure system.
  33. * Assorted cleanups.
  34. Changes in 2.03 (30 Apr 2008)
  35. * Updated the ELF assembler sources to mark the stack as non-executable.
  36. * Fixed a HP-UX 11 build issue with Itanium in ILP32 mode.
  37. * Updated the configure system.
  38. Changes in 2.02 (17 Oct 2005)
  39. * Updated the build and Autoconf scripts to fix some reported
  40. compilation problems.
  41. Changes in 2.01 (27 Jun 2005)
  42. * Changed the configure system to install the LZO library under the
  43. name "liblzo2" so that parallel installation with LZO v1 is possible.
  44. * Improved auto-configuration in miniLZO for some embedded targets like
  45. Blackfin and H8/300 processors.
  46. Changes in 2.00 (30 May 2005)
  47. [Library interface changes]
  48. * The 'lzo_uint' typedef has been changed to match 'size_t', which means
  49. it now is 64 bits on most 64-bit architectures. 32-bit machines
  50. are not affected by this change.
  51. * The formula for maximum expansion of incompressible data has changed.
  52. See doc/LZO.FAQ. This is needed for some upcoming speed improvements,
  53. and also for compatibility with our commercial LZO Professional product.
  54. * The progress indicator callback interface has been revamped.
  55. * All public header files now get installed into a "lzo" subdirectory, so
  56. your applications should use #include <lzo/lzoXXX.h>.
  57. * A number of (internal) macros have been renamed. See LZO_CFG_COMPAT
  58. in <lzo/lzoconf.h> if your code depends on these.
  59. [Speed]
  60. * Small overall speedup by exploiting features like branch prediction
  61. hints and explicit inline control present in modern C/C++ compilers.
  62. * Significant speedup for 64-bit architectures like AMD64.
  63. [Portability]
  64. * LZO now fully supports the LLP64 programming model.
  65. * LZO now fully supports the ILP64 and SILP64 programming models which
  66. are used on some supercomputing architectures.
  67. * Full Win64 support for AMD64 (aka x64) and IA64 (Itanium).
  68. * Full 16-bit support for ancient DOS 286 protected mode, OS/2 1.x
  69. and Windows 3.x.
  70. * The LZO library now compiles and works on completely freestanding or
  71. embedded systems as long as you have <limits.h> and <stddef.h> header
  72. files. See the B/generic/build_freestanding.sh build script.
  73. [Misc]
  74. * The i386 assembler versions of the decompressors are now automatically
  75. built and installed. See also asm/i386/00README.TXT.
  76. * Added include file <lzo/lzo_asm.h> that provides prototypes for all
  77. assembler functions.
  78. * Under MacOS X, the configure script now will use the '-no-cpp-precomp'
  79. compiler option in order to work around bugs in some versions of
  80. Apple's native "smart" preprocessor.
  81. * Worked around a preprocessor bug that is present in all compilers which
  82. are based on the lcc compiler kit.
  83. * Added simple B/generic/build.sh build script family.
  84. * Added lots of new build scripts for various DOS/Windows compilers.
  85. [Upgrade instructions from LZO v1 to LZO v2]
  86. * On 64-bit architectures, revisit all uses of lzo_uint.
  87. * Adapt for the maximum expansion change of incompressible data.
  88. * If you use the progress callback then adapt for the new interface.
  89. * Use #include <lzo/lzoXXX.h> or adjust your include path.
  90. * Check your code for use of deprecated macros. Add a
  91. #define LZO_CFG_COMPAT if necessary.
  92. * Other than that LZO v2 should be fully source-compatible with LZO v1.
  93. Of course, the compressed data is fully compatible as well.
  94. * Re-compile and re-link your application.
  95. * Enjoy the improvements!
  96. ----------------------------------------------------------------------------
  97. Changes in 1.08 (12 Jul 2002)
  98. * Much better support for cross compiling.
  99. * Straighten out ANSI-conforming compiler checks.
  100. * Avoid harmless compiler warnings reported by -Wcast-align.
  101. * Fixed some sign extension problems on rather exotic machines where
  102. sizeof(size_t) < sizeof(ptrdiff_t) and sizeof(lzo_uint) == sizeof(size_t)
  103. * Updated the configure system to use the latest Autoconf, Automake
  104. and Libtool versions.
  105. Changes in 1.07 (18 Oct 2000)
  106. * Default to '--disable-shared' (I'm getting tired of Libtool's
  107. shared library build problems, this time AIX was the culprit).
  108. * Avoid some harmless compiler warnings.
  109. Changes in 1.06 (29 Nov 1999)
  110. * Updated the configure system to use Autoconf 2.13, Automake 1.4 and
  111. Libtool 1.3.3. This should hopefully fix the shared-library build
  112. problems that were reported on some machines.
  113. * Enhanced example programs a little bit.
  114. Changes in 1.05 (14 Apr 1998)
  115. * Just a one-line change in the configure script to workaround
  116. a HPUX and IRIX build problem.
  117. Changes in 1.04 (15 Mar 1998)
  118. * Worked around a bug in the cpp preprocessor under HPUX 10.20.
  119. * Adapted for Automake 1.2f and Libtool 1.1.
  120. Changes in 1.03 (18 Jan 1998)
  121. * minor compression ratio improvement
  122. * extended example program to show how to do overlapping compression
  123. * assembler changes, added support for the nasm assembler
  124. * better support for cross compiling
  125. * some cleanups
  126. Changes in 1.02 (07 Dec 1997)
  127. * improved LZO1X-999 and LZO1Y-999 compression ratio a little bit again
  128. * introduced compression levels for LZO1X-999 and LZO1Y-999
  129. * added support for preset dictionaries
  130. * implemented LZO1X-1(12): needs 16 KiB for compression
  131. * new algorithm LZO1Z: this is another variant of LZO1X
  132. * added example program: how to use preset dictionaries
  133. * added example program: how to do in-place decompression
  134. * added a little file-packer example program
  135. * LZO now works cleanly under checkergcc
  136. * strict 16-bit memory model is working (but not officially supported)
  137. * shared libraries are supported on many platforms
  138. * adapted for Automake 1.2d and Libtool 1.0h
  139. Changes in 1.01 (10 Aug 1997)
  140. * improved LZO1X-999 and LZO1Y-999 compression ratio a little bit
  141. * i386+gcc: significant speedup of the C version of the LZO1, LZO1A,
  142. LZO1B and LZO1C decompressors
  143. * added example programs that show how to generate pre-compressed data
  144. * added Makefiles for DOS, Windows and OS/2 targets
  145. Changes in 1.00 (13 Jul 1997)
  146. * added miniLZO - can be easily included in your project
  147. * improved documentation, added LZO.FAQ
  148. * added build scripts for many systems where Autoconf is not available:
  149. Windows 3.1 (LIB+DLL), Windows 95/NT (LIB+DLL), DOS (16+32 bit), OS/2
  150. * adapted for Automake 1.2 and Libtool 1.0
  151. Changes in 0.90 (27 Jun 1997): never released
  152. * LZO now uses GNU Automake 1.0 - lots of configuration changes
  153. * added LZO1X-1(11): this version needs only 8 KiB for compression
  154. * implemented LZO1Y-1
  155. * added i386 assembler decompressors for MASM/TASM/WASM
  156. * the name of some assembler functions changed
  157. * the numeric value of some error codes changed
  158. * portability fixes
  159. Changes in 0.29 (04 May 1997)
  160. * Linux ELF shared library support
  161. * workaround for gcc 2.7.2 optimizer bug under AIX
  162. * added lzo_crc32() checksum
  163. Changes in 0.28 (22 Feb 1997)
  164. * new algorithm LZO1Y: LZO1Y-999 and LZO1Y decompressor
  165. * added lzo1x_optimize() and lzo1y_optimize()
  166. * minor speedup in assembler decompressors (i386+gcc)
  167. * ltest.c rewritten
  168. Changes in 0.27 (19 Jan 1997)
  169. * fixed a bug in LZO1B-999 and LZO1C-999 that could produce
  170. invalid compressed data in very rare cases
  171. Changes in 0.26 (18 Jan 1997): never released
  172. * implemented LZO1B-999
  173. * renamed LZO1D to LZO2A (also updated all docs)
  174. * some cleanups
  175. Changes in 0.25 (28 Dec 1996): never released
  176. * some portability fixes (LZO now works on my old Atari ST :-)
  177. * adapted for Autoconf 2.12
  178. Changes in 0.24 (30 Nov 1996): never released
  179. * improved performance of LZO1X assembler decompressor on a Pentium (i386+gcc)
  180. Changes in 0.23 (23 Nov 1996)
  181. * added LZO1C, LZO1F and LZO1X decompressors in assembler (i386+gcc)
  182. * added corresponding LZO_PUBLIC to all LZO_EXTERN functions
  183. * added support for Microsoft C 7.0 (16-bit DOS)
  184. * introduced lzo_uint32. This could prove useful for a strict 16-bit
  185. version that doesn't use 'huge' pointers.
  186. * all algorithms use incremental hashing now
  187. * some cleanups and portability fixes
  188. Changes in 0.22 (19 Sep 1996)
  189. * LZO1X: minor decompressor speedup, added some checks in safe decompressor
  190. * Autoconf: added detection of gcc strength-reduction bug
  191. * Makefile changes
  192. Changes in 0.21 (08 Sep 1996)
  193. * LZO now uses GNU Autoconf 2.10 - lots of configuration changes
  194. * a few cosmetical changes
  195. Changes in 0.20 (11 Aug 1996)
  196. * new algorithm LZO1X: LZO1X-1, LZO1X-999 and LZO1X decompressor
  197. * significantly speeded up LZO1B, LZO1C and LZO1F decompressors
  198. on CPUs which allow unaligned memory access (e.g. Intel i386)
  199. * greatly speeded up LZO2A-999 compressor at the cost of some memory
  200. * some cleanups, portability fixes and minor speedups
  201. Changes in 0.16 (22 Jul 1996)
  202. * speeded up LZO1F decompressor a little bit
  203. * improved LZO1F-999 compression ratio
  204. Changes in 0.15 (10 Jul 1996)
  205. * new algorithm LZO1F: LZO1F-1, LZO1F-999 and LZO1F decompressor
  206. * improved LZO2A-999 compression ratio
  207. * removed LZO1E as it is dominated by LZO1F
  208. Changes in 0.14 (06 Jul 1996): never released
  209. * experimental algorithms: LZO1E and LZO1F
  210. * added LZO_EXTERN to all prototypes. Useful when building a DLL.
  211. * improved LZO1C-999 and LZO2A-999 compression ratio a little bit
  212. * fixed progress indicator callback (it was called only once)
  213. Changes in 0.13 (20 Jun 1996)
  214. * some speed improvements in LZO1C-999 and LZO2A-999
  215. Changes in 0.12 (18 Jun 1996): never released
  216. * added LZO1C-999, a slow but nearly optimal compressor
  217. intended for generating pre-compressed data
  218. * added tests for lookbehind-overrun in all safe decompressors
  219. * source tree completely rearranged, some filenames changed
  220. * extensions changed: a .ch file is a C source code that is included
  221. for reasons of code sharing
  222. * new algorithm LZO2A: LZO2A-999 and LZO2A decompressor. There is
  223. no fast compressor yet.
  224. * some cleanups
  225. Changes in 0.11 (29 May 1996)
  226. * source tree rearranged
  227. * LZO now compiles fine as a C++ library (interface still has C linkage)
  228. * improved overall compression ratio a little bit
  229. * LZO1B-99/LZO1C-99 now search for longer matches
  230. * incremental hash is working, it's a little bit faster
  231. * Makefile changed
  232. * added lzo_uint and lzo_sizeof in some places
  233. * split LZO1B compressor into even more include-files
  234. Changes in 0.10 (20 May 1996): first public release of the LZO library
  235. * includes LZO1, LZO1A, LZO1B and LZO1C algorithms
  236. (compression levels 1-9 and 99)
  237. 14 Mar 1996:
  238. * public release of the LZO1A algorithm
  239. 04 Mar 1996:
  240. * public release of the LZO1 algorithm