Commit Graph

1450 Commits

Author SHA1 Message Date
Yann Collet
8e69328d61 programs/datagen : attempt to please static analyzer
with an assert()
to reduce false positive
2018-01-13 22:24:32 -08:00
Yann Collet
fe66e78b96 lz4io: fixed minor ressource leak 2018-01-13 22:18:04 -08:00
Yann Collet
52a76ff682 update man page 2018-01-13 19:06:33 -08:00
Yann Collet
e8ee6e5965 nicer console message for make clean 2018-01-13 18:51:33 -08:00
Yann Collet
ac38ffa9af updated manuals to v1.8.1 2018-01-13 18:46:13 -08:00
Yann Collet
d95606d649
Merge pull request #448 from sunpoet/dev
Fix lz4 version
2018-01-13 16:33:56 -08:00
Po-Chuan Hsieh
47bf1a9f01 Fix lz4 version 2018-01-14 06:38:03 +08:00
Yann Collet
c423dc21bd updated LZ4F_decompress() documentation 2018-01-13 13:16:31 -08:00
Yann Collet
fb5e98a334 updated NEWS for v1.8.1 2018-01-12 14:36:10 -08:00
Yann Collet
d89fd51ce8
Merge pull request #442 from terrelln/441
[lz4io] Fix decompression file stat with --rm
2018-01-10 19:09:13 +01:00
Yann Collet
58199f1311
Merge pull request #443 from terrelln/440
[lz4f] Skip memcpy() on empty dictionary
2018-01-10 19:06:21 +01:00
Yann Collet
a605d7ea54
Merge pull request #444 from felixhandte/publish-static-functions
Add Option to Make lz4frame_static.h Functions Visible in Shared Objects
2018-01-10 18:48:11 +01:00
W. Felix Handte
ebef34fe79 Add Option to Make lz4frame_static.h Functions Visible in Shared Objects
In some contexts, *cough*like at facebook*cough*, dynamic linking is used in
contexts which aren't truly dynamic. That is, the guarantee is maintained that
a program will only ever execute against the library version it was compiled
to interact with.

For those situations, introduce a compile-time flag that overrides hiding
these unstable APIs in shared objects.
2018-01-08 14:46:22 -05:00
Yann Collet
0b203b04f6
Merge pull request #434 from lz4/pattern
conditional pattern analysis
2018-01-06 06:58:41 +01:00
Yann Collet
54f3621907
Merge pull request #435 from lz4/destSize
lz4opt is now compatible with _destSize variant
2018-01-06 06:57:56 +01:00
Nick Terrell
c2dd686e96 [lz4f] Skip memcpy() on empty dictionary 2018-01-05 14:30:49 -08:00
Nick Terrell
00eac87dda [lz4io] Refuse to set file stat for non-regular files 2018-01-05 11:54:35 -08:00
Nick Terrell
9474b706a5 [lz4io] Fix decompression file stat with --rm 2018-01-05 11:27:24 -08:00
Yann Collet
506ae9c333
Merge pull request #439 from eli-b/doc-nohup-behavior
Docs: describe behavior under nohup
2018-01-02 00:19:59 +01:00
Yann Collet
c19d12d11e
Merge pull request #438 from eli-b/grammar-fix
Grammar: "to silent" -> "to silence"
2018-01-02 00:17:57 +01:00
Eli Boyarski
329dcd4765
Docs: describe behavior under nohup 2018-01-01 15:38:48 +02:00
Eli Boyarski
c8411ea880
Grammar: "to silent" -> "to silence" 2018-01-01 14:15:31 +02:00
Yann Collet
e2900241e8 object files in /tests
object files created from /tests are compiled with specific flags (`-g -DLZ4_DEBUG=1`)
which are not welcomed in release binary.
`lib/*.o` files created from /tests are now stored in /tests, to avoid unintentional mix.
2017-12-27 13:02:40 +01:00
Yann Collet
7d2f30c7d1 lz4opt supports _destSize
no longer limited to level 9
2017-12-22 12:47:59 +01:00
Yann Collet
fdde4311fb /tests programs compiled with LZ4_DEBUG=1
to enable assert() within /lib
2017-12-22 11:54:43 +01:00
Yann Collet
9753ac4c91 conditional pattern analysis
Pattern analysis (currently limited to long ranges of identical bytes)
is actually detrimental to performance
when `nbSearches` is low.

Reason is : `nbSearches` provides a built-in protection for these cases.
The problem with patterns is that they dramatically increase the number of candidates to visit.
But with a low nbSearches, the match finder just aborts early.

In such cases, pattern analysis adds some complexity without reducing total nb of candidates.
It actually increases compression ratio a little bit, by filtering only "good" candidates,
but at a measurable speed cost, so it's not a good trade-off.

This patch makes pattern analysis optional.
It's enabled for levels 8+ only.
2017-12-22 08:07:25 +01:00
Yann Collet
8a9c8e7324
Merge pull request #431 from lz4/newopt
new level 10
2017-12-21 09:46:25 +01:00
Yann Collet
55da545e7a new level 10
lz4opt is only competitive vs lz4hc level 10.
Below that level, it doesn't match the speed / compression effectiveness of regular hc parser.

This patch propose to extend lz4opt to levels 10-12.
The new level 10 tend to compress a bit better and a bit faster than previous one (mileage vary depending on file)

The only downside is that `limitedDestSize` mode is now limited to max level 9 (vs 10),
since it's only compatible with regular HC parser.
(Note : I suspect it's possible to convert lz4opt to support it too, but haven't spent time into it).
2017-12-20 14:14:01 +01:00
Yann Collet
ec93bb127f
Merge pull request #427 from lz4/registerLess
remove `register` keyword
2017-12-15 14:46:00 -08:00
Yann Collet
4e225165d8
Merge pull request #424 from MaxRis/msbuild-properties-#423
Msbuild properties #423
2017-12-11 10:07:03 -08:00
Max Risuhin
9be9573533 EnableWholeProgramOptimization and UseStaticCRT msbuild custom properties 2017-12-11 14:57:19 +02:00
Yann Collet
6bbe45e1b8 remove register keyword
deprecated in newer C++ versions,
and dubious utility
2017-12-04 17:10:23 -08:00
Yann Collet
de49c5bed9
Merge pull request #426 from aliceatlas/cli_chmod_fix
Fix cli sometimes calling UTIL_setFileStat on /dev/null
2017-12-04 14:38:00 -08:00
Alice Atlas
42a31aee50 Fix bug which could sometimes result in the lz4 cli chmodding /dev/null if running as root 2017-12-04 16:07:31 -05:00
Yann Collet
6c94c94d46 minor updates to examples
see 810e2ca27b (commitcomment-25810887)
2017-11-24 17:18:46 -08:00
Yann Collet
da8bed4b01 API : changed a few variables' names for clarity
updated relevant doc.
This patch has no impact on ABI/API, nor on binary generation.
2017-11-20 10:27:05 -08:00
Yann Collet
b48839b41c updated NEWS 2017-11-13 15:54:55 -08:00
Yann Collet
dac26084a9
Merge pull request #416 from lz4/newopt
Improve Optimal parser
2017-11-09 14:13:30 -08:00
Yann Collet
dc3ed5b6a7 added code comments 2017-11-08 17:56:20 -08:00
Yann Collet
63f6039fb3 added constant TRAILING_LITERALS
which is more explicit than its value `3`.
reported by @terrelln
2017-11-08 17:47:24 -08:00
Yann Collet
f93b595718 lz4opt: simplified match finder invocation to LZ4HC_FindLongerMatch() 2017-11-08 17:11:51 -08:00
Yann Collet
fa03a9d3d9 added code comments 2017-11-08 08:42:59 -08:00
Yann Collet
b07d36245a fixed LZ4HC_reverseCountPattern()
for multi-bytes patterns
(which is not useful for the time being)
2017-11-07 17:58:59 -08:00
Yann Collet
897f5e9834 removed the ip++ at the beginning of block
The first byte used to be skipped
to avoid a infinite self-comparison.
This is no longer necessary, since init() ensures that index starts at 64K.

The first byte is also useless to search when each block is independent,
but it's no longer the case when blocks are linked.

Removing the first-byte-skip saves
about 10 bytes / MB on files compressed with -BD4 (linked blocks 64Kb),
which feels correct as each MB has 16 blocks of 64KB.
2017-11-07 17:37:31 -08:00
Yann Collet
e6365b1854
Merge pull request #418 from lz4/fasterCount
faster LZ4_count()
2017-11-07 12:09:32 -08:00
Yann Collet
71fd08c17d removed legacy version of LZ4HC_InsertAndFindBestMatch() 2017-11-07 11:33:40 -08:00
Yann Collet
c49f66f2ad ensure pattern is a 1-byte repetition 2017-11-07 11:29:28 -08:00
Yann Collet
5512a5f1a9 removed useless (1 && ...) condition
as reported by @terrelln
2017-11-07 11:22:57 -08:00
Yann Collet
7130bfe573 improved LZ4HC_reverseCountPattern() :
works for any repetitive pattern of length 1, 2 or 4 (but not 3!)
works for any endianess
2017-11-07 11:05:48 -08:00
Yann Collet
a004c1fbee fixed LZ4HC_countPattern()
- works with byte values other than `0`
- works for any repetitive pattern of length 1, 2 or 4 (but not 3!)
- works for little and big endian systems
- preserve speed of previous implementation
2017-11-07 10:53:29 -08:00