Convert NEWS file to markdown

This commit is contained in:
Eric Biggers 2021-07-15 09:18:52 -05:00
parent 9b565afd99
commit 8efdabddae
4 changed files with 219 additions and 202 deletions

200
NEWS
View File

@ -1,200 +0,0 @@
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.

216
NEWS.md Normal file
View File

@ -0,0 +1,216 @@
# libdeflate release notes
## 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.

View File

@ -22,6 +22,8 @@ use this library are also provided:
yet support very large files
* benchmark, a program for benchmarking in-memory compression and decompression
For the release notes, see the [NEWS file](NEWS.md).
## Table of Contents
- [Building](#building)

View File

@ -12,9 +12,8 @@ for arch in 'i686' 'x86_64'; do
cp libdeflate.{dll,lib,def} libdeflatestatic.lib libdeflate.h ./*.exe \
"$dir"
${arch}-w64-mingw32-strip "$dir/libdeflate.dll" "$dir"/*.exe
for file in COPYING NEWS; do
for file in COPYING NEWS.md README.md; do
sed < $file > "$dir/${file}.txt" -e 's/$/\r/g'
done
sed < README.md > "$dir/README.md" -e 's/$/\r/g'
(cd "$dir" && zip -r "../${dir}.zip" .)
done