Skip to content

ChandKV/7-Zip-zstd

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

README

This is the Github Page of 7-Zip ZS with support of additional Codecs. The library used therefore is located here: Multithreading Library

You can install it in two ways:

  1. complete setup with additions within the GUI and a modified Explorer context menu
  2. only the codec plugin that goes to your existing 7-Zip installation

Status

Build status Latest stable release PayPal.me

Codec overview

  1. Zstandard v1.3.2 is a real-time compression algorithm, providing high compression ratios. It offers a very wide range of compression / speed trade-off, while being backed by a very fast decoder.

    • Levels: 1..22
  2. Brotli v.1.0.1 is a generic-purpose lossless compression algorithm that compresses data using a combination of a modern variant of the LZ77 algorithm, Huffman coding and 2nd order context modeling, with a compression ratio comparable to the best currently available general-purpose compression methods. It is similar in speed with deflate but offers more dense compression.

    • Levels: 0..11
  3. LZ4 v1.8.0 is lossless compression algorithm, providing compression speed at 400 MB/s per core (0.16 Bytes/cycle). It features an extremely fast decoder, with speed in multiple GB/s per core (0.71 Bytes/cycle). A high compression derivative, called LZ4_HC, is available, trading customizable CPU time for compression ratio.

    • Levels: 1..12
  4. LZ5 v1.5 is a modification of LZ4 which gives a better ratio at cost of slower compression and decompression.

    • Levels: 1..15
  5. Lizard v1.0 is an efficient compressor with very fast decompression. It achieves compression ratio that is comparable to zip/zlib and zstd/brotli (at low and medium compression levels) at decompression speed of 1000 MB/s and faster.

    • Levels 10..19 (fastLZ4) are designed to give about 10% better decompression speed than LZ4
    • Levels 20..29 (LIZv1) are designed to give better ratio than LZ4 keeping 75% decompression speed
    • Levels 30..39 (fastLZ4 + Huffman) adds Huffman coding to fastLZ4
    • Levels 40..49 (LIZv1 + Huffman) give the best ratio, comparable to zlib and low levels of zstd/brotli, but with a faster decompression speed

7-Zip Zstandard Edition (full setup, with GUI and Explorer integration)

Installation (via setup)

  1. download the setup from here 7-Zip ZS Releases
  2. install it, like the default 7-Zip
  3. use it ;)
  4. you may check, if the 7-Zip can deal with Zstandard or other codecs via this command: 7z.exe i
  5. the binaries within this installation are not binary compatible with 7-Zip... use therefore the files from the Codecs.7z archive

The output should look like this:

7-Zip 17.01 ZS v1.3.2 R1 (x64) : Copyright (c) 1999-2017 Igor Pavlov


Libs:
 0  c:\Program Files\7-Zip-Zstandard\7z.dll

Formats:
...
 0 CK            xz       xz txz (.tar) FD 7 z X Z 00
 0               Z        z taz (.tar)  1F 9D
 0 CK            zstd     zst tzstd (.tar) 0 x F D 2 F B 5 2 5 . . 0 x F D 2 F B 5 2 8 00
 0 C   F         7z       7z            7 z BC AF ' 1C
 0     F         Cab      cab           M S C F 00 00 00 00
...

Codecs:
 0 4ED  303011B BCJ2
 0  ED  3030103 BCJ
 0  ED  3030205 PPC
 0  ED  3030401 IA64
 0  ED  3030501 ARM
 0  ED  3030701 ARMT
 0  ED  3030805 SPARC
 0  ED    20302 Swap2
 0  ED    20304 Swap4
 0  ED    40202 BZip2
 0  ED        0 Copy
 0  ED    40109 Deflate64
 0  ED    40108 Deflate
 0  ED        3 Delta
 0  ED       21 LZMA2
 0  ED    30101 LZMA
 0  ED    30401 PPMD
 0   D    40301 Rar1
 0   D    40302 Rar2
 0   D    40303 Rar3
 0   D    40305 Rar5
 0  ED  4F71102 BROTLI
 0  ED  4F71104 LZ4
 0  ED  4F71106 LIZARD
 0  ED  4F71105 LZ5
 0  ED  4F71101 ZSTD
 0  ED  6F10701 7zAES
 0  ED  6F00181 AES256CBC

Usage and features of the full installation

7z a archiv.7z -m0=zstd -mx0   Zstandard Fastest Mode, without BCJ preprocessor
7z a archiv.7z -m0=zstd -mx1   Zstandard Fast mode, with BCJ preprocessor on executables
7z a archiv.7z -m0=zstd -mx..  ...
7z a archiv.7z -m0=zstd -mx21  Zstandard 2nd Slowest Mode, with BCJ preprocessor on executables
7z a archiv.7z -m0=zstd -mx22  Zstandard Ultra Mode, with BCJ preprocessor on executables

7z a archiv.7z -m0=lz4 -mx0   LZ4 Fastest Mode, without BCJ preprocessor
7z a archiv.7z -m0=lz4 -mx1   LZ4 Fast mode, with BCJ preprocessor on executables
7z a archiv.7z -m0=lz4 -mx..  ...
7z a archiv.7z -m0=lz4 -mx12  LZ4 Ultra Mode, with BCJ preprocessor on executables

7z a archiv.7z -m0=lz5 -mx0   LZ5 Version 1.5 Fastest Mode, without BCJ preprocessor
7z a archiv.7z -m0=lz5 -mx1   LZ5 Version 1.5 Fast mode, with BCJ preprocessor on executables
7z a archiv.7z -m0=lz5 -mx..  ...
7z a archiv.7z -m0=lz5 -mx16  LZ5 Version 1.5 Ultra Mode, with BCJ preprocessor on executables

7z x -so test.tar.zstd | 7z l -si -ttar
-> show contents of zstd compressed tar archiv test.tar.zstd

7z x -so test.tar.lz | 7z l -si -ttar
-> show contents of lzip compressed tar archiv test.tar.lz

Explorer inegration File Manager Methods

Zstandard codec Plugin for Mainline 7-Zip

Installation (via plugin)

  1. download the Codecs.7z archiv from here 7-Zip ZS Releases, this archive holds binaries, which are compatible with the Mainline version of 7-Zip
  2. create a new directory named Codecs and put in there the zstd-x32.dll or the zstd-x64.dll, depending on your 7-Zip installation
    • normally, the x32 should go to: "C:\Program Files (x86)\7-Zip\Codecs"
    • the x64 version should go in here: "C:\Program Files\7-Zip\Codecs"
  3. you could also replace the 7z.dll directly within C:\Program Files (x86)\7-Zip
  4. then you may check if the dll is correctly installed via this command: 7z.exe i

The output should look like this:

7-Zip 17.01 beta (x64) : Copyright (c) 1999-2017 Igor Pavlov : 2017-08-28


Libs:
 0  c:\Program Files\7-Zip\7z.dll
 1  c:\Program Files\7-Zip\Codecs\brotli-x64.dll
 2  c:\Program Files\7-Zip\Codecs\lizard-x64.dll
 3  c:\Program Files\7-Zip\Codecs\lz4-x64.dll
 4  c:\Program Files\7-Zip\Codecs\lz5-x64.dll
 5  c:\Program Files\7-Zip\Codecs\zstd-x64.dll

...

Codecs:
 0 4ED  303011B BCJ2
 0  ED  3030103 BCJ
 0  ED  3030205 PPC
 0  ED  3030401 IA64
 0  ED  3030501 ARM
 0  ED  3030701 ARMT
 0  ED  3030805 SPARC
 0  ED    20302 Swap2
 0  ED    20304 Swap4
 0  ED    40202 BZip2
 0  ED        0 Copy
 0  ED    40109 Deflate64
 0  ED    40108 Deflate
 0  ED        3 Delta
 0  ED       21 LZMA2
 0  ED    30101 LZMA
 0  ED    30401 PPMD
 0   D    40301 Rar1
 0   D    40302 Rar2
 0   D    40303 Rar3
 0   D    40305 Rar5
 0  ED  6F10701 7zAES
 0  ED  6F00181 AES256CBC
 1  ED  4F71102 BROTLI
 2  ED  4F71106 LIZARD
 3  ED  4F71104 LZ4
 4  ED  4F71105 LZ5
 5  ED  4F71101 ZSTD

Usage (codec plugin)

  • compression and decompression for Brotli, Lizard, LZ4, LZ5 and Zstandard within the 7-Zip container format
  • you can only create .7z files, the files like .lz4, .lz5 and .zst are not covered by the plugins
  • when compressing binaries (*.exe, *.dll), you have to explicitly disable the bcj2 filter via -m0=bcj, when using only the plugin dll's
  • so the usage should look like this:
7z a archiv.7z -m0=bcj -m1=zstd -mx1   Fast mode, with BCJ preprocessor on executables
7z a archiv.7z -m0=bcj -m1=zstd -mx..  ...
7z a archiv.7z -m0=bcj -m1=zstd -mx21  2nd Slowest Mode, with BCJ preprocessor on executables
7z a archiv.7z -m0=bcj -m1=zstd -mx22  Ultra Mode, with BCJ preprocessor on executables
7z a archiv.7z -m0=bcj -m1=brotli -mxN  ...
7z a archiv.7z -m0=bcj -m1=lizard -mxN  ...
7z a archiv.7z -m0=bcj -m1=lz4 -mxN  ...
7z a archiv.7z -m0=bcj -m1=lz5 -mxN  ...

Codec Plugin for Total Commander

  • download TotalCmd.7z
  • install it, by replacing the files tc7z.dll and tc7z64.dll with the new ones
  • you can check the Total Commander Forum for more information about this DLL Files
  • decompression for Brotli, Lizard, LZ4, LZ5 and Zstandard ot the 7-Zip .7z format will work out of the box with Total Commander now :-)

Codec Plugin for Far Manager

  • download Codecs.7z
  • install it, by replacing the file C:\Program Files\Far Manager\Plugins\ArcLite\7z.dll with the one found in the Codecs.7z archive
  • it's named 7z-x64.dll or 7z-x32.dll, depending on your architecture
  • then restart the Far manager - and on next start, you will have support for 7-Zip Zstandard archives ;-)

Benchmarks

For the benchmarks I am using Windows 7 64bit on my Laptop which has the following Hardware:

  • Intel i7-3632QM, limited to 2,2GHz, 16GB RAM, disabled swap space
  • the compression benchmark is read / written to an 4 GiB ImDisk
  • the decompression benchmark is also done in RAM via: 7z t archiv.7z
  • the tool for measuring the times is wtime, together with some scripts
  • the testfile is generated via generate-mcorpus Compression Speed vs Ratio Decompression Speed Memory at Compression Memory at Decompression

License and redistribution

  • the same as the Mainline 7-Zip, which means GNU LGPL

Links

Donate

You find this project useful, maybe you consider a donation ;-)

paypal

Version Information

/TR 2017-10-31

About

7-Zip with support for Brotli, Lizard, LZ4, LZ5 and Zstandard

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 51.6%
  • C 46.9%
  • Makefile 0.8%
  • Objective-C 0.4%
  • NSIS 0.1%
  • Assembly 0.1%
  • Other 0.1%