7-Zip with ZStandard Support
C++ C Makefile NSIS Assembly Batchfile
Latest commit e8f0206 Feb 6, 2017 @mcmilk LZ4 has only 12 levels now

README.md

README

This is the Github Page of 7-Zip with support for zstd, short for Zstandard, which is a fast lossless compression algorithm, targeting real-time compression scenarios at zlib-level compression ratio. LZ4 and LZ5 compression is also on the way, you can see some first coding for it here: Multithreading Library

You can install it in two ways:

  1. full setup with ZStandard additions within the GUI and an modified Explorer context menu
  2. just the codec plugin, which goes to your existing 7-Zip installation

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 via this command: 7z.exe i

The output should look like this:

7-Zip [64] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-06-26


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  4F71104 LZ4  <-- NEW
 0  ED  4F71105 LZ5  <-- NEW
 0  ED  4F71101 ZSTD  <-- NEW
 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

ZStandard codec Plugin for 7-Zip

Installation (via plugin)

  1. download the codec archiv from here 7-Zip ZS Releases
  2. create a new directory named "Codecs"
  3. 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"
  4. After this, you may check if the dll is correctly installed via this command: 7z.exe i

The output should look like this:

7-Zip [64] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04


Libs:
 0  C:\Program Files\7-Zip\7z.dll
 1  C:\Program Files\7-Zip\Codecs\lz4-x64.dll
 2  C:\Program Files\7-Zip\Codecs\lz5-x64.dll
 3  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  4F71104 LZ4 -> NEW
 2  ED  4F71105 LZ5 -> NEW
 3  ED  4F71101 ZSTD -> NEW

Usage (codec plugin)

  • 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
  • you can only create .7z files with zstd compression, but you can not create .zst files :/

Links

Benchmarks with i7-3632QM

Compression Speed vs Ratio Decompression Speed

License and redistribution

  • the same as the original 7-Zip, which means GNU GPL

Version Information

  • 7-Zip ZS Version 16.04
    • ZStandard Version 1.1.3
    • LZ4 Version 1.7.5
    • LZ5 Version 1.5

/TR 2017-02-06