Google snappy in C for Linux Kernel
C Python Makefile Shell Other
Latest commit fd4b491 Aug 18, 2016 @zeevt committed on GitHub Merge pull request #29 from fperrad/patch-1
Update URL of Google Snappy
Failed to load latest commit information.
python move python toys Feb 28, 2012
testdata check for memeory leaks Mar 26, 2011
Makefile This patch adds two new "make install" arguments: Oct 13, 2014
TODO set LD_LIBRARY_PATH Apr 18, 2011
cl_tester.c cl_tester -S d test failed on AArch64 when decompressing data without Jul 29, 2015
csnappy_compat.h Sereal's csnappy Win32 fixes Feb 28, 2013
csnappy_decompress.c Fix integer truncation error during decompression Mar 31, 2015
csnappy_internal_userspace.h endian.h and mingw (same as PR #27) Nov 11, 2015
kernel_3_2_10.patch a current linux kernel patch Mar 13, 2012
unaligned_arm.s ARM optimizations. There will be more. In particular ARMv6 has unalig… Mar 11, 2012
userspace_benchmark.txt update userspace benchmarks Apr 30, 2011
zram_benchmark.txt split zram benchmark from readme Apr 15, 2011


Google Snappy, available at
is a compression library designed for speed rather than compression ratios.

It is not a new concept by far. The Linux kernel currently uses LZO as the
 default fast compressor. Snappy works faster, though achieves less compression.

Google's code is written in C with a lot of C++. Some of the more interesting
 features that rely on C++ appear to have been elided from the open source
 version of Snappy.

To get the codebase into a shape that can be accepted into the mainline
 Linux kernel and used with zram (
Being able to compress vmlinux and initrd with Snappy is a secondary goal.
Same for support in Squashfs and other parts of the kernel that currently
 support LZO.

I cut out or ported to plain ANSI C the necessary code and headers.
To cause less confusion, I call this project (and files) csnappy.
The API looks right, but I welcome comments.
The code *has* been tested in kernel-space using a patched zram and it works.

The code has been tested in a qemu emulating a PowerPC Mac and ARMv5TE running
 Debian Wheezy.

I also use an ARMv6 Android phone for testing.

Testing on other hardware or platforms is welcome.

Note: The userspace tester is a hack, as is the shared library.

Someone wrote a perl wrapper for csnappy:

Patch for upstream snappy tester is available: snappy_tester.patch
Patch for linux kernel is available: kernel_3_2_10.patch

Benchmark in userspace: userspace_benchmark.txt
Benchmark in kernel space with zram: zram_benchmark.txt