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.
