From 9983d79e62a749c33037be4abbf1603f5a7cfe01 Mon Sep 17 00:00:00 2001 From: Moinak Ghosh Date: Tue, 29 Jan 2013 21:42:54 +0530 Subject: [PATCH] Bump version and update changelog for 1.3.0 release. Fix issue #3. --- Changelog | 45 +++++++++++++++++++++++++++++++++++++++++++++ main.c | 15 ++++++++++++++- pcompress.h | 2 +- 3 files changed, 60 insertions(+), 2 deletions(-) diff --git a/Changelog b/Changelog index f7d95f7..a86ba07 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,48 @@ +== 1.3.0 Major Performance Release == +Fix return from parallel versions of Keccak_Hash() function. +Add parallel versions of various checksums for single-segment, single-thread compression. +Use BLAKE2 parallel version for single-chunk archives (whole file in one chunk). +Set decompression threads correctly for single-chunk archives. +Update default checksum to BLAKE256. +Add optimized BLAKE2 implementations with runtime detection of CPU capability (SSE/AVX). +Major changes to use Intel's optimized SHA512 code for SHA512 and SHA512/256. +Remove earlier SHA256 code which is slower than SHA512/256 (on 64-bit CPU). +Use HMAC from Alan Saddi's implementation for cleaner, faster code. +Changes for generalized runtime SSE/AVX/XOP detection. +Multi instruction set XXhash build with runtime selection. +Extend CPUID code to detect more instruction sets. +Add options for BLAKE2 hash. +Move GCC builtins into utils header. +Bump file format version number due to extended digest flags. +Add descriptions to digest list. +Rationalize XXHash implementation to deal with 32-byte blocks instead of 16-byte. +Fix XXHash performance degradation for small keys. +Modify a data analysis loop in adaptive compress to make it auto-vectorizable. +Improve Deduplication throughtput by 90%. +Use SSE4 register as sliding window for default 16-byte window size. +Use local variable for sliding window position to avoid spurios memory access in non-SIMD case. +Avoid computing breakpoint check value if processed length < minimum block length. +Improve SSE version detection. +Add SSE4 detection. +Fix setting of some opt flags in Makefile.in. +Many optimization tweaks +Optimize Rabin Deduplication and Bsdiff +Vectorize XXHash using SSE4 +Add SSE2 improvements to CTR mode AES. +Add debug print of encryption and HMAC throughput. +Fix error message for invalid option. +Implement algo-specific minimum distance match for Delta Compression. +Fixes and performance improvements for Dedupe Delta Compression +Avoid using fingerprints in minhash computation and fix write amplification +Modify min-heap to use 64bit values +Improve bsdiff performance +Fix pointer comparison in bsdiff +Use 32bit offsets in bsdiff to reduce memory usage +Improve Zero RLE Encoder performance +Add more buffer overflow checks in Zero RLE Decoder +Use SSE3 lddqu in the matchfinder if SSE3 is enabled. +Remove outdated LZP note. + == 1.2.0 Major Stable Release == Fix issue #1 and issue #2. Enable building with older openssl (at least 0.9.8e). diff --git a/main.c b/main.c index 374d44f..168ffd7 100644 --- a/main.c +++ b/main.c @@ -35,6 +35,7 @@ #include #include #include +#include #if defined(sun) || defined(__sun) #include #else @@ -99,7 +100,7 @@ static int cksum_bytes, mac_bytes; static int cksum = 0, t_errored = 0; static int rab_blk_size = 0; static crypto_ctx_t crypto_ctx; -static char *pwd_file = NULL; +static char *pwd_file = NULL, *f_name = NULL; static void usage(void) @@ -185,6 +186,15 @@ show_compression_stats(uint64_t chunksize) bytes_to_size(avg_chunk), (double)avg_chunk/(double)chunksize*100); } +void +Int_Handler(int signo) +{ + if (f_name != NULL) { + unlink(f_name); + } + exit(1); +} + /* * Wrapper functions to pre-process the buffer and then call the main compression routine. * At present only LZP pre-compression is used below. Some extra metadata is added: @@ -1658,6 +1668,9 @@ start_compress(const char *filename, uint64_t chunksize, int level) perror("mkstemp "); COMP_BAIL; } + f_name = tmpfile1; + signal(SIGINT, Int_Handler); + signal(SIGTERM, Int_Handler); } else { /* * Use stdin/stdout for pipe mode. diff --git a/pcompress.h b/pcompress.h index 112b1d0..9dd2d3e 100644 --- a/pcompress.h +++ b/pcompress.h @@ -42,7 +42,7 @@ extern "C" { #define FLAG_DEDUP 1 #define FLAG_DEDUP_FIXED 2 #define FLAG_SINGLE_CHUNK 4 -#define UTILITY_VERSION "1.2.0" +#define UTILITY_VERSION "1.3.0" #define MASK_CRYPTO_ALG 0x30 #define MAX_LEVEL 14