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