2584 Commits
Author SHA1 Message Date
Timofey Solomko 68fd0e8f49 [swcomp] Compress after creating a tar container 2021-10-24 19:07:56 +03:00
Timofey Solomko 4443fd1339 [Tests] Add a test for correct match index behavior in Deflate compression 2021-10-24 15:05:04 +03:00
Timofey Solomko a47431f86d [Deflate] Don't use match index as a cycling index
This was the cause of incorrect results in some rare cases.
2021-10-24 15:03:53 +03:00
Timofey Solomko dc93436269 [swcomp] Update to use SwiftCLI's property wrappers
This should fix all deprecation warnings.
2021-10-24 12:47:22 +03:00
Timofey Solomko f7a3d289cc Drop support for Swift 5.0 2021-10-23 21:51:28 +03:00
Timofey Solomko 29eb6f346c [swcomp] Upgrade SwiftCLI to 6.0 2021-10-23 21:45:22 +03:00
Timofey Solomko deeb02fb5c [LZ4] Remove remaining TODOs 2021-10-23 21:14:44 +03:00
Timofey Solomko 04aa3bd034 [LZ4] Add comments about implementation 2021-10-23 21:04:21 +03:00
Timofey Solomko 6e920a4ecc [LZ4] Fix compilation issues with swift pre-5.5 2021-10-22 23:56:54 +03:00
Timofey Solomko f64c5264f8 [LZ4] Remove extra TODOs 2021-10-22 22:43:50 +03:00
Timofey Solomko 7a43328b8e [BZip2] Rename crc32 function for bzip2 2021-10-22 21:55:33 +03:00
Timofey Solomko 33fd3001a0 [LZ4] Don't use optionals for storing dictionary in encoder 2021-10-22 21:51:58 +03:00
Timofey Solomko 8398f25b2b [swcomp] Don't accept block sizes larger than 4MB in LZ4 compression 2021-10-22 21:01:13 +03:00
Timofey Solomko c1496428d5 [LZ4] Don't accept block sizes larger than 4MB in compression
This matches the behavior of the reference implementation and allows to remove a couple of additional checks.
2021-10-22 20:53:56 +03:00
Timofey Solomko c2465fcd75 [LZ4] Verify in decoder that block size is not larger than max block size 2021-10-22 20:52:34 +03:00
Timofey Solomko 6d6a32b7ae [LZ4] Produce output as an arrary when decoding blocks
This change significantly improves performance.
2021-10-22 19:40:17 +03:00
Timofey Solomko e860b9d4a9 [LZ4] Slightly optimize match calculation in compression 2021-10-22 19:27:23 +03:00
Timofey Solomko 100002cf8f [LZ4] Simplify removing dictionary from the output in decompression 2021-10-21 22:31:34 +03:00
Timofey Solomko 9e7faebf90 [LZ4] Don't use crc32 for matches identification 2021-10-21 22:31:00 +03:00
Timofey Solomko de7864c6db [Deflate] Replace crc32 of a match with bytes contacenated into UInt32
Previously, we were using crc32 to identify matches when doing compression. This not only was an overkill computationally (the new version has boosted the compression speed), but it could also lead to incorrect results in some rare cases (potentially, only theoretical situtations) due to collisions of crc32 algorithm.
2021-10-21 22:30:23 +03:00
Timofey Solomko aa9377b5f5 [Tests] Print compression ratios only with 3 figures after the dot 2021-10-20 15:02:52 +03:00
Timofey Solomko 7877ad9e35 [Tests] Add lz4 test for even smaller input 2021-10-20 15:02:26 +03:00
Timofey Solomko c1315b5727 [swcomp] Rename the --no-content-checksums option of lz4 command to --no-content-checksum
There can be at most one content checksum in a frame.
2021-10-20 15:01:56 +03:00
Timofey Solomko acb041cbf4 [LZ4] Fix incorrect encoding of small inputs 2021-10-20 15:00:57 +03:00
Timofey Solomko bb9574cefd [LZ4] Fix incorrect checks for the location of the last match 2021-10-20 14:48:43 +03:00
Timofey Solomko 1324744785 [swcomp] Print compression ratio in appropriate benchmarks 2021-10-18 21:38:31 +03:00
Timofey Solomko da8f4f7f5c [Deflate] Rename some variables in lengthEncode 2021-10-18 18:35:06 +03:00
Timofey Solomko 268aaaa356 [Deflate] Use start/endIndex instead of count property of data input 2021-10-18 18:31:40 +03:00
Timofey Solomko 113972bcce [Deflate] Reduce nesting in lengthEncode
This should be a purely refactoring change with no effect on performance or functionality.
2021-10-18 18:30:15 +03:00
Timofey Solomko f2be0db44f [Tests] Add a small test for fixed incorrect matching in LZ4 compression 2021-10-17 15:45:11 +03:00
Timofey Solomko 3a54c54ecc [LZ4] Fix incorrect matching
We erroneously used match index as a cyclical index which was producing non well-formed/incorrect results in some rare cases.
2021-10-17 15:45:11 +03:00
Timofey Solomko 743b83e4cb [LZ4] Add default values for dictionary and blockSize arguments of LZ4.compress 2021-10-17 15:45:11 +03:00
Timofey Solomko 19eca839d9 Add LZ4-related references to README 2021-10-17 15:45:06 +03:00
Timofey Solomko b64c5b81e9 [LZ4] Fix more potential issues with indices when resetting dictionary in compression 2021-10-16 21:59:18 +03:00
Timofey Solomko 088ec34ca6 [Tests] Add a test for 7-Zip with LZ4 2021-10-16 21:58:02 +03:00
Timofey Solomko 6cdfc14f54 [7-Zip] Add support for LZ4 2021-10-16 21:57:46 +03:00
Timofey Solomko c44901547c Add a subspec for LZ4 2021-10-16 21:57:26 +03:00
Timofey Solomko 68f1428355 [swcomp] Add various compression options for LZ4
Also add a check that dict id is not present without a dictionary.
2021-10-16 21:33:03 +03:00
Timofey Solomko 212e1808e7 [swcomp] Add benchmark command for LZ4 compression with dependent blocks 2021-10-16 20:31:32 +03:00
Timofey Solomko 2a1b250061 [Tests] Print compression ratio only after successful redecompression 2021-10-16 20:25:17 +03:00
Timofey Solomko 2491d77bfc [LZ4] Fix incorrect usage of dictionaries in compression
Previously, the dictionary was effectively ignored, since it was never used to populate the table of matches. Additionally, we fixed another issue with dictionaries, which was hidden, because we never really used them.
2021-10-16 20:21:59 +03:00
Timofey Solomko abed04acf9 [Tests] Add dictionary tests for LZ4 compression 2021-10-16 19:32:24 +03:00
Timofey Solomko 9915e8a1d7 [LZ4] Account for the min match length when checking for end-of-block condition 2021-10-16 19:31:58 +03:00
Timofey Solomko dac1814c8d [LZ4] Simplify last sequence creation 2021-10-16 16:26:41 +03:00
Timofey Solomko 20544178a0 [LZ4] Fix potential index issues when setting dictionary for block decoding 2021-10-16 16:25:58 +03:00
Timofey Solomko be899bc355 [LZ4] Fix incorrect block checksums in case of incompressible blocks 2021-10-16 16:25:15 +03:00
Timofey Solomko 254fe0c848 [LZ4] Strictly check that the block is compressible 2021-10-16 16:24:36 +03:00
Timofey Solomko 2c36a886be [Tests] Add a randomized test for LZ4 compression options 2021-10-16 15:50:42 +03:00
Timofey Solomko f15270fc98 [Tests] Add a test for LZ4 decompression with small sized dictionary 2021-10-16 15:50:24 +03:00
Timofey Solomko 1a49f0543d [swcomp] Add benchmark command for LZ4 compression with independent blocks
LZ4 compression with block dependency will be added in the future (after SWCompression is fixed with regards to dependent blocks).
2021-10-15 22:44:55 +03:00