From 8efdabddaea177a9b9766da82754b2eb1be87455 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Thu, 15 Jul 2021 09:18:52 -0500 Subject: [PATCH] Convert NEWS file to markdown --- NEWS | 200 ---------------------------- NEWS.md | 216 +++++++++++++++++++++++++++++++ README.md | 2 + scripts/make-windows-releases.sh | 3 +- 4 files changed, 219 insertions(+), 202 deletions(-) delete mode 100644 NEWS create mode 100644 NEWS.md diff --git a/NEWS b/NEWS deleted file mode 100644 index b1704dd..0000000 --- a/NEWS +++ /dev/null @@ -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. diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 0000000..6030f64 --- /dev/null +++ b/NEWS.md @@ -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. diff --git a/README.md b/README.md index 9342e9e..6c2f2f2 100644 --- a/README.md +++ b/README.md @@ -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) diff --git a/scripts/make-windows-releases.sh b/scripts/make-windows-releases.sh index 1c143e1..a213431 100755 --- a/scripts/make-windows-releases.sh +++ b/scripts/make-windows-releases.sh @@ -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