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