1363 Commits

Author SHA1 Message Date
Timofey Solomko 1e8ad0e2a5 Prepare for 4.7.0 release 2021-11-04 12:12:10 +03:00
Timofey Solomko 6971656b63 Two minor changes: make Checksums a caseless enum, fix a grammar mistake in a code comment 2021-11-04 12:10:39 +03:00
Timofey Solomko 10905dc588 [docs] Minor fixes to LZ4 documentation 2021-11-03 20:41:48 +03:00
Timofey Solomko 9f7efc9276 [docs] Add documentation for LZ4 compression functions 2021-11-03 20:31:08 +03:00
Timofey Solomko d73fc791b1 [docs] Add documentation for DataError 2021-11-03 20:19:41 +03:00
Timofey Solomko e3ffb812b9 [docs] Add documentation for LZ4 decompression functions 2021-11-03 20:13:42 +03:00
Timofey Solomko 5d63df36cf Prepare for the test release of 4.7.0 2021-10-30 13:06:45 +03:00
Timofey Solomko a3332364a7 [Tests] Add many tests that check that checksum errors are thrown correctly 2021-10-29 19:26:33 +03:00
Timofey Solomko 20e8db701f [Tests] Add a test for correct usage of CP437 in ZIP 2021-10-28 19:54:25 +03:00
Timofey Solomko 088d63ac03 [swcomp] Add --use-format option to tar command
This option allows to specify which TAR format to use when creating a container.
2021-10-25 20:01:00 +03:00
Timofey Solomko 01c106228b [swcomp] Replace ConvertibleFromString extension for BZip2.BlockSize with an empty conformance
SwiftCLI provides a default implementation for enums with Int raw values.
2021-10-25 20:00:22 +03:00
Timofey Solomko 68fd0e8f49 [swcomp] Compress after creating a tar container 2021-10-24 19:07:56 +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 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 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 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 b64c5b81e9 [LZ4] Fix more potential issues with indices when resetting dictionary in compression 2021-10-16 21:59:18 +03:00
Timofey Solomko 6cdfc14f54 [7-Zip] Add support for LZ4 2021-10-16 21:57:46 +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 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 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 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
Timofey Solomko 377344197b [swcomp] Implement --compress option for the lz4 command 2021-10-15 22:40:55 +03:00