Snappy v1.0.5, February 24th 2012:

  * More speed improvements. Exactly how big will depend on
    the architecture:

    - 3–10% faster decompression for the base case (x86-64).

    - ARMv7 and higher can now use unaligned accesses,
      and will see about 30% faster decompression and
      20–40% faster compression.

    - 32-bit platforms (ARM and 32-bit x86) will see 2–5%
      faster compression.

    These are all cumulative (e.g., ARM gets all three speedups).

  * Fixed an issue where the unit test would crash on system
    with less than 256 MB address space available,
    e.g. some embedded platforms.

  * Added a framing format description, for use over e.g. HTTP,
    or for a command-line compressor. We do not have any
    implementations of this at the current point, but there seems
    to be enough of a general interest in the topic.
    Also make the format description slightly clearer.

  * Remove some compile-time warnings in -Wall
    (mostly signed/unsigned comparisons), for easier embedding
    into projects that use -Wall -Werror.


Snappy v1.0.4, September 15th 2011:

  * Speeded up the decompressor somewhat; typically about 2–8%
    for Core i7, in 64-bit mode (comparable for Opteron).
    Somewhat more for some tests, almost no gain for others.
  
  * Make Snappy compile on certain platforms it didn't before
    (Solaris with SunPro C++, HP-UX, AIX).

  * Correct some minor errors in the format description.


Snappy v1.0.3, June 2nd 2011:

  * Speeded up the decompressor somewhat; about 3-6% for Core 2,
    6-13% for Core i7, and 5-12% for Opteron (all in 64-bit mode).

  * Added compressed format documentation. This text is new,
    but an earlier version from Zeev Tarantov was used as reference.

  * Only link snappy_unittest against -lz and other autodetected
    libraries, not libsnappy.so (which doesn't need any such dependency).

  * Fixed some display issues in the microbenchmarks, one of which would
    frequently make the test crash on GNU/Hurd.


Snappy v1.0.2, April 29th 2011:

  * Relicense to a BSD-type license.

  * Added C bindings, contributed by Martin Gieseking.

  * More Win32 fixes, in particular for MSVC.

  * Replace geo.protodata with a newer version.

  * Fix timing inaccuracies in the unit test when comparing Snappy
    to other algorithms.


Snappy v1.0.1, March 25th 2011:

This is a maintenance release, mostly containing minor fixes.
There is no new functionality. The most important fixes include:

  * The COPYING file and all licensing headers now correctly state that
    Snappy is licensed under the Apache 2.0 license.

  * snappy_unittest should now compile natively under Windows,
    as well as on embedded systems with no mmap().

  * Various autotools nits have been fixed.


Snappy v1.0, March 17th 2011:

  * Initial version.
