mirror of
https://github.com/cuberite/libdeflate.git
synced 2025-08-03 17:56:17 -04:00
231 lines
7.2 KiB
Markdown
231 lines
7.2 KiB
Markdown
# libdeflate release notes
|
|
|
|
## Version 1.8
|
|
|
|
* Added `-t` (test) option to `libdeflate-gunzip`.
|
|
|
|
* Unaligned access optimizations are now enabled on WebAssembly builds.
|
|
|
|
* Fixed a build error when building with the Intel C Compiler (ICC).
|
|
|
|
* Fixed a build error when building with uClibc.
|
|
|
|
* libdeflate's CI system has switched from Travis CI to GitHub Actions.
|
|
|
|
* Made some improvements to test scripts.
|
|
|
|
## 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.
|