Top 20 C Compression Projects
-
zstd
Zstandard - Fast real-time compression algorithm
Latest mention: Linus Torvalds on the importance of ECC in main memory (RAM) | news.ycombinator.com | 2021-01-03Yes. I work at Facebook on data compression.
The libraries we maintain (1) are responsible for a non-trivial part of Facebook's overall compute footprint, (2) should basically never fail of their own accord, and (3) have pretty good error monitoring. So my team is operating what is effectively (among other things) a very sensitive detector for hardware failure.
And indeed we see examples all the time of blobs that fail to decompress, and usually when we dig in we find that the blob is only a single bit-flip away from a blob that decompresses successfully into a syntactically correct message. I can't share numbers, but, off the top of my head, I think it's the largest source of failures we see. It happens frequently enough that I wrote a tool to automate checking [0].
So yes. It happens. Pretty frequently, in the sense that if you're doing xillions of operations a day, a one-in-a-xillion failure happens all the time.
[0] https://github.com/facebook/zstd/tree/dev/contrib/diagnose_c...
-
brotli
Brotli compression format
First, it checks if request accepts compressed encoding of response. If yes, it checks if script.js.gz (or script.js.br for brotli) is available in embedded file system and serves contents of script.js.gz.
-
borg
Deduplicating archiver with compression and authenticated encryption.
borg (c) - https://github.com/borgbackup/borg
-
lz4
Extremely Fast Compression algorithm
Latest mention: lz4_flex 0.7.2 reaches parity with cpp reference implementation on speed and ratio | reddit.com/r/rust | 2021-01-18It's hard to tell, how much since the latest lz4 1.9 has been improved, because the (benchmarks)[https://github.com/lz4/lz4/commit/31763c59fca9a38bc697cd37f591d6ba385f7614#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5] are executed with different processors
-
zlib
A massively spiffy yet delicately unobtrusive compression library.
-
lzfse
LZFSE compression library and command line tool
Latest mention: Why is Zip preferred on Mac while RAR seems like the favorite on Windows? | reddit.com/r/MacOS | 2021-01-21I'm not entirely correct, though. Because Unarchiver likely uses this compression algorithm by calling directly into the API. And there is an open-source implementation for it: lzfse/lzfse.
-
opus
Modern audio compression for the internet.
If you don't own Dissonance it'll be a little more difficult. You'll need to compile opus into a dll (source code here) and then write a C# wrapper to call the opus methods from C# (using DllImport).
-
FiniteStateEntropy
New generation entropy codecs : Finite State Entropy and Huff0
-
smaz
Small strings compression library
-
minizip
Fork of the popular zip manipulation library found in the zlib distribution.
-
zlib-ng
zlib replacement with optimizations for "next generation" systems.
-
flate2-rs
DEFLATE, gzip, and zlib bindings for Rust
-
python-blosc
A Python wrapper for the extremely fast Blosc compression library
-
precomp-cpp
Precomp, C++ version - further compress already compressed files
-
TinyJpeg
Single header lib for JPEG encoding. Public domain. C99. stb style.
-
snebu
Simple Network Encrypting Backup Utility
snebu (c) - https://github.com/derekp7/snebu
-
apultra
Free open-source compressor for apLib with 5-7% better ratios
Latest mention: Free open source aPLib compressor gains serious use in retrocomputing | news.ycombinator.com | 2021-01-12 -
bzip2-rs
libbz2 (bzip2 compression) bindings for Rust
-
MV-Tractus
A simple tool to extract motion vectors from h264 encoded videos.
look for libraries to extract motion vector from video streams. e.g. https://github.com/vadimkantorov/mpegflow or https://github.com/jishnujayakumar/MV-Tractus
-
lzmat
git mirror of LZMAT (http://www.matcode.com/lzmat.htm)
Index
What are some of the best open-source Compression projects in C? This list will help you:
Project | Stars | |
---|---|---|
1 | zstd | 13,801 |
2 | brotli | 9,610 |
3 | borg | 6,891 |
4 | lz4 | 5,647 |
5 | zlib | 2,738 |
6 | lzfse | 1,578 |
7 | opus | 1,127 |
8 | FiniteStateEntropy | 934 |
9 | smaz | 875 |
10 | minizip | 735 |
11 | zlib-ng | 712 |
12 | flate2-rs | 378 |
13 | python-blosc | 261 |
14 | precomp-cpp | 239 |
15 | TinyJpeg | 138 |
16 | snebu | 88 |
17 | apultra | 52 |
18 | bzip2-rs | 50 |
19 | MV-Tractus | 46 |
20 | lzmat | 2 |