Go to file
2015-08-24 00:14:40 +01:00
lib Added : ZSTD decompression : ability to resist to noisy/faulty data source 2015-08-23 23:13:49 +01:00
programs Added : ZSTD decompression : ability to resist to noisy/faulty data source 2015-08-23 23:13:49 +01:00
visual/2012 Updated Visual solution 2015-08-23 23:20:34 +01:00
.gitattributes Added : *.png are binary files 2015-01-31 10:57:57 +01:00
.gitignore Visual : Removed *.suo and *.user files, as suggested by Takayuki Matsuoka 2015-02-08 21:51:28 +01:00
.travis.yml Added sanitize=undefine test 2015-07-07 00:36:49 -08:00
Makefile Added more strigent tests : compresson into too small buffer 2015-08-11 14:18:45 +01:00
NEWS Initial release 2015-01-24 01:58:16 +01:00
README.md updated readme 2015-08-24 00:14:40 +01:00

Zstd, short for Zstandard, is a new lossless compression algorithm, which provides both good compression ratio and speed for your standard compression needs. "Standard" translates into everyday situations which neither look for highest possible ratio nor extreme speed.

It is provided as a BSD-license package, hosted on Github.

Branch Status
master Build Status
dev Build Status

For a taste of its performance, here are a few benchmark numbers, completed on a Core i7-5600U @ 2.6 GHz, using fsbench 0.14.3, an open-source benchmark program by m^2.

Name Ratio C.speed D.speed
MB/s MB/s
zlib 1.2.8 -6 3.099 21 320
zstd 2.871 255 531
zlib 1.2.8 -1 2.730 70 300
LZ4 HC r131 2.720 25 2100
QuickLZ 1.5.1b6 2.237 370 415
LZO 2.06 2.106 400 580
Snappy 1.1.0 2.091 330 1100
LZ4 r131 2.101 450 2100
LZF 3.6 2.077 200 560

An interesting feature of zstd is that it can qualify as both a reasonably strong compressor and a fast one.

Zstd delivers high decompression speed, at more than >500 MB/s per core. Obviously, your exact mileage will vary depending on your target system.

Zstd compression speed will be configurable to fit different situations. The first available version is the fast one, at ~250 MB/s per core, which is suitable for a few real-time scenarios. But similar to LZ4, zstd can offer derivatives trading compression time for compression ratio, keeping decompression properties intact. "Offline compression", where compression time is of little importance because the content is only compressed once and decompressed many times, will likely prefer this setup.

Note that high compression derivatives still have to be developed. It's a complex area which will require time and benefit from contributions.

Another property zstd is developed for is configurable memory requirement, with the objective to fit into low-memory configurations, or servers handling many connections in parallel.

Zstd entropy stage is provided by Huff0 and FSE, from Finite State Entrop library.

Zstd has not yet reached "stable" status. Specifically, it doesn't guarantee yet that its current compressed format will remain stable and supported in future versions of the library. However, its current behavior is pretty solid, and able to withstand many hazards situations, including invalid input. Therefore, you can safely test zstd into controlled environments.

"Stable Format" is projected sometimes early 2016.

Branch Policy

The "dev" branch is the one where all contributions will be merged before reaching "master". If you plan to propose a patch, please commit into the "dev" branch or its own feature branch. Direct commit to "master" are not permitted.