summaryrefslogtreecommitdiff
path: root/util/compress/libdeflate/NEWS
blob: b1704dd1806226fa0b1cd1357f6b42bafd50f94b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
Version 1.7:
	Added support for compression level 0, "no compression".

	Added an ARM CRC32 instruction accelerated implementation of CRC32.

	Added support for linking the programs to the shared library version of
	libdeflate rather than to the static library version.

	Made the compression level affect the minimum input size at which
	compression is attempted.

	Fixed undefined behavior in x86 Adler32 implementation.
	(No miscompilations were observed in practice.)

	Fixed undefined behavior in x86 CPU feature code.
	(No miscompilations were observed in practice.)

	Fixed installing shared lib symlink on macOS.

	Documented third-party bindings.

	Made a lot of improvements to the testing scripts and the CI
	configuration file.

	Lots of other small improvements and cleanups.

Version 1.6:
	Prevented gcc 10 from miscompiling libdeflate (workaround for
	https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94994).

	Removed workaround for gcc 5 and earlier producing slow code on
	ARM32.  If this affects you, please upgrade your compiler.

	New API function: libdeflate_zlib_decompress_ex().  It provides
	the actual size of the stream that was decompressed, like the
	gzip and DEFLATE equivalents.

	libdeflate_zlib_decompress() now accepts trailing bytes after
	the end of the stream, like the gzip and DEFLATE equivalents.

	Added support for custom memory allocators.
	(New API function: libdeflate_set_memory_allocator())

	Added support for building the library in freestanding mode.

	Building libdeflate no longer requires CPPFLAGS=-Icommon.

Version 1.5:
	Fixed up stdcall support on 32-bit Windows: the functions are
	now exported using both suffixed and non-suffixed names, and
	fixed libdeflate.h to be MSVC-compatible again.

Version 1.4:
	The 32-bit Windows build of libdeflate now uses the "stdcall"
	calling convention instead of "cdecl".  If you're calling
	libdeflate.dll directly from C or C++, you'll need to recompile
	your code.  If you're calling it from another language, or
	calling it indirectly using LoadLibrary(), you'll need to update
	your code to use the stdcall calling convention.

	The Makefile now supports building libdeflate as a shared
	library (.dylib) on macOS.

	Fixed a bug where support for certain optimizations and optional
	features (file access hints and more precise timestamps) was
	incorrectly omitted when libdeflate was compiled with -Werror.

	Added 'make check' target to the Makefile.

	Added CI configuration files.

Version 1.3:
	`make install` now supports customizing the directories into
	which binaries, headers, and libraries are installed.

	`make install` now installs into /usr/local by default.
	To change it, use e.g. `make install PREFIX=/usr`.

	`make install` now works on more platforms.

	The Makefile now supports overriding the optimization flags.

	The compression functions now correctly handle an output data
	buffer >= 4 GiB in size, and `gzip` and `gunzip` now correctly
	handle multi-gigabyte files (if enough memory is available).

Version 1.2:
	Slight improvements to decompression speed.

	Added an AVX-512BW implementation of Adler-32.

	The Makefile now supports a user-specified installation PREFIX.

	Fixed build error with some Visual Studio versions.

Version 1.1:
	Fixed crash in CRC-32 code when the prebuilt libdeflate for
	32-bit Windows was called by a program built with Visual Studio.

	Improved the worst-case decompression speed of malicious data.

	Fixed build error when compiling for an ARM processor without
	hardware floating point support.

	Improved performance on the PowerPC64 architecture.

	Added soname to libdeflate.so, to make packaging easier.

	Added 'make install' target to the Makefile.

	The Makefile now supports user-specified CPPFLAGS.

	The Windows binary releases now include the import library for
	libdeflate.dll.  libdeflate.lib is now the import library, and
	libdeflatestatic.lib is the static library.

Version 1.0:
	Added support for multi-member gzip files.

	Moved architecture-specific code into subdirectories.  If you
	aren't using the provided Makefile to build libdeflate, you now
	need to compile lib/*.c and lib/*/*.c instead of just lib/*.c.

	Added an ARM PMULL implementation of CRC-32, which speeds up
	gzip compression and decompression on 32-bit and 64-bit ARM
	processors that have the Cryptography Extensions.

	Improved detection of CPU features, resulting in accelerated
	functions being used in more cases.  This includes:

	   - Detect CPU features on 32-bit x86, not just 64-bit as was
	     done previously.

	   - Detect CPU features on ARM, both 32 and 64-bit.
	     (Limited to Linux only currently.)

Version 0.8:
	Build fixes for certain platforms and compilers.

	libdeflate now produces the same output on all CPU architectures.

	Improved documentation for building libdeflate on Windows.

Version 0.7:
	Fixed a very rare bug that caused data to be compressed incorrectly.
	The bug affected compression levels 7 and below since libdeflate v0.2.
	Although there have been no user reports of the bug, and I believe it
	would have been highly unlikely to encounter on realistic data, it could
	occur on data specially crafted to reproduce it.

	Fixed a compilation error when building with clang 3.7.

Version 0.6:
	Various improvements to the gzip program's behavior.

	Faster CRC-32 on AVX-capable processors.

	Other minor changes.

Version 0.5:
	The CRC-32 checksum algorithm has been optimized with carryless
	multiplication instructions for x86_64 (PCLMUL).  This speeds up gzip
	compression and decompression.

	Build fixes for certain platforms and compilers.

	Added more test programs and scripts.

	libdeflate is now entirely MIT-licensed.

Version 0.4:
	The Adler-32 checksum algorithm has been optimized with vector
	instructions for x86_64 (SSE2 and AVX2) and ARM (NEON).  This speeds up
	zlib compression and decompression.

	To avoid naming collisions, functions and definitions in libdeflate's
	API have been renamed to be prefixed with "libdeflate_" or
	"LIBDEFLATE_".  Programs using the old API will need to be updated.

	Various bug fixes and other improvements.

Version 0.3:
	Some bug fixes and other minor changes.

Version 0.2:
	Implemented a new block splitting algorithm which typically improves the
	compression ratio slightly at all compression levels.

	The compressor now outputs each block using the cheapest type (dynamic
	Huffman, static Huffman, or uncompressed).

	The gzip program has received an overhaul and now behaves more like the
	standard version.

	Build system updates, including: some build options were changed and
	some build options were removed, and the default 'make' target now
	includes the gzip program as well as the library.

Version 0.1:
	Initial official release.