Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

1.4.9-beta1

Beta with some lock scaling patches

1.4.7-rc1

See release notes at:

http://code.google.com/p/memcached/wiki/ReleaseNotes147rc1

Still too lazy to include notes in the tag. We cna fix typoes in th ewiki,
too.

1.4.6

See release notes at:

http://code.google.com/p/memcached/wiki/ReleaseNotes146

Release 1.4.7 and further will have release notes coupled in the tags again.
Right now I'm too damn lazy.

1.4.6-rc1

Full release notes for 1.4.6-rc1 to appear in the tag for 1.4.6

1.6.0-beta1

Initial beta of 1.6.0. Apologies for the brief annotation :)

1.4.5

 Memcached 1.4.5 Release Notes
                    =============================

Date: 2010-04-03

Table of Contents
=================
1 Download
2 Overview
3 Fixes
4 New Features
    4.1 New stat: reclaimed
    4.2 sasl_pwdb for more simple auth deployments
5 Contributors

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz]

2 Overview
~~~~~~~~~~~

This is a maintenance release with some build fixes, doc fixes, and
one new stat.

3 Fixes
~~~~~~~~

  * Properly detect CPU alignment on ARM. bug100
  * Remove 1MB assertion. bug119
  * More automake versions supported.
  * Compiler warning fixes for OpenBSD.
  * potential buffer overflow in vperror
  * Report errors opening pidfiles using vperror

4 New Features
~~~~~~~~~~~~~~~

4.1 New stat: reclaimed
========================
This stat reports the number of times an entry was stored using memory
from an expired entry.

4.2 sasl_pwdb for more simple auth deployments
===============================================

--enable-sasl-pwdb allows memcached to use it's own password file and
verify a plaintext password.

The file is specified with the environment variable
MEMCACHED_SASL_PWDB, and is a plain text file with the following
syntax:

username:password

Please note that you have to specify "mech_list: plain" in your sasl
config file for this to work.

Ex:

   echo "mech_list: plain" > memcached.conf
   echo "myname:mypass" > /tmp/memcached-sasl-db
   export MEMCACHED_SASL_PWDB=/tmp/memcached-sasl-db
   export SASL_CONF_PATH=`pwd`/memcached.conf
   ./memcached -S -v

and you should be able to use your favorite memcached client with sasl
support to connect to the server.

(Please note that not all SASL implementations support
SASL_CB_GETCONF, so you may have to install the sasl config
(memcached.conf) to the systemwide location)

5 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.4.4.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.4.4..1.4.5` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.5]

    6  Trond Norbye
    3  Paul Lindner
    2  Dustin Sallings
    1  Brad Fitzpatrick
    1  Jørgen Austvik

1.4.4

Release 1.4.4
                    Memcached 1.4.4 Release Notes
                    =============================

Date: 2009-11-26 Thu

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz]

2 Overview
~~~~~~~~~~~

This is a maintenance release of memcached with a workaround for
common client issue as well as a few new stats.

3 Fixes
~~~~~~~~

3.1 Add partial backwards compatibility for delete with timeout 0.
===================================================================

Before version 1.4.0, there was an optional argument to delete that
would allow a client to specify that a deleted object should exist in
the cache after the deletion occurred such that add operations would
fail even though objects did not appear in the cache.

This feature was removed completely in 1.4.0, but a parser bug caused
it to slip through.  The bug was fixed in 1.4.3.  If anyone was
attempting to use it legitimately in the 1.4 series, it would simply
not work as expected.

The 1.4.4 backwards compatibility change allows specifically the value
of 0 (i.e. non-lingering delete), while continuing to reject others.
This will satisfy clients that always wish to send a value even when
they do not wish the item to linger.

4 New Features
~~~~~~~~~~~~~~~

4.1 New Stats
==============

4.1.1 auth_enabled_sasl
------------------------

This is a general stat that indicates whether SASL authentication is
enabled or not.

4.1.2 auth_cmds
----------------

Indicates the total number of authentication attempts.

4.1.3 auth_errors
------------------

Indicates the number of failed authentication attempts.

5 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.4.3.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.4.3..1.4.4` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.4]

     2  Dustin Sallings
     2  Matt Ingenthron
     1  dormando

1.4.3

Release 1.4.3
                    Memcached 1.4.3 Release Notes
                    =============================

Date: 2009-11-07 Sat

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.3.tar.gz]

2 Overview
~~~~~~~~~~~

This is a maintenance release of memcached featuring mostly bug fixes
and one new feature.

2.1 RC history
===============

rc2 fixes a multiget bug that showed up in rc1.  A bug was not filed,
but it was found and patched at roughly the same time.

3 Fixes
~~~~~~~~

3.1 Critical Fixes
===================

  * Malicious input can crash server. bug102

3.2 Non-critical Fixes
=======================

  * Removed special case in slab sizing for factor 2. bug56
  * Provide better errors for deletion scenarios. bug3
  * Fix get stats accounting. bug104
  * Ignore stats prefix for keys without a delimiter. bug96
  * Work around rpm's broken concept of versions more. bug98
  * Use slab class growth factor limit. bug57
  * Added LSB section to init script. bug54
  * Documentation fixes
  * Various build fixes

3.3 Itemized List of Bugs Closed
=================================

If a bug shows up in this list that wasn't specifically mentioned
above, it's either too minor to mention specifically or the bug was
closed by introducing a test that proves that the bug, as described,
does not exist.

  * bug3
  * bug54
  * bug56
  * bug57
  * bug62
  * bug67
  * bug68
  * bug69
  * bug96
  * bug97
  * bug98
  * bug101
  * bug102
  * bug104

4 New Features
~~~~~~~~~~~~~~~

4.1 Support for SASL Authentication
====================================

Some installations of memcached are not in controlled environments
where simple network filtering keeps bad guys out of your stuff.  To
help with those other environments, we've introduced SASL support.
You can read more about it here:

[http://code.google.com/p/memcached/wiki/SASLHowto]

4.2 New perl tool damemtop in scripts/
=======================================

dormando's awesome memcached top - a new commandline perl tool for
monitoring small to large memcached clusters. Supports monitoring
arbitrary statistics. See scripts/README.damemtop for more
information.

This tool is intended to replace memcached-tool, but not yet.

4.3 Also Noteworthy, Slab Optimizations
========================================

Objects on the larger end of the limit should be generally more memory
efficient now as more slabs are created (thus are more granular).

5 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.4.2.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.4.2..1.4.3` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.3]

    15  Dustin Sallings
    10  Trond Norbye
     5  dormando
     2  Colin Pitrat
     1  Monty Taylor
     1  Chang Song
     1  CaptTofu
     1  Tomash Brechko

1.4.3-rc2

Release 1.4.3-rc2
                  Memcached 1.4.3-rc2 Release Notes
                  =================================

Date: 2009-11-02 Mon

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.3_rc2.tar.gz]

2 Overview
~~~~~~~~~~~

This is a maintenance release of memcached featuring mostly bug fixes
and one new feature.

2.1 RC history
===============

rc2 fixes a multiget bug that showed up in rc1.  A bug was not filed,
but it was found and patched at roughly the same time.

3 Fixes
~~~~~~~~

3.1 Critical Fixes
===================

  * Malicious input can crash server. bug102

3.2 Non-critical Fixes
=======================

  * Removed special case in slab sizing for factor 2. bug56
  * Provide better errors for deletion scenarios. bug3
  * Fix get stats accounting. bug104
  * Ignore stats prefix for keys without a delimiter. bug96
  * Work around rpm's broken concept of versions more. bug98
  * Use slab class growth factor limit. bug57
  * Added LSB section to init script. bug54
  * Documentation fixes
  * Various build fixes

3.3 Itemized List of Bugs Closed
=================================

If a bug shows up in this list that wasn't specifically mentioned
above, it's either too minor to mention specifically or the bug was
closed by introducing a test that proves that the bug, as described,
does not exist.

  * bug3
  * bug54
  * bug56
  * bug57
  * bug62
  * bug67
  * bug68
  * bug69
  * bug96
  * bug97
  * bug98
  * bug101
  * bug102
  * bug104

4 New Features
~~~~~~~~~~~~~~~

4.1 Support for SASL Authentication
====================================

Some installations of memcached are not in controlled environments
where simple network filtering keeps bad guys out of your stuff.  To
help with those other environments, we've introduced SASL support.
You can read more about it here:

[http://code.google.com/p/memcached/wiki/SASLHowto]

4.2 New perl tool damemtop in scripts/
=======================================

dormando's awesome memcached top - a new commandline perl tool for
monitoring small to large memcached clusters. Supports monitoring
arbitrary statistics. See scripts/README.damemtop for more
information.

This tool is intended to replace memcached-tool, but not yet.

4.3 Also Noteworthy, Slab Optimizations
========================================

Objects on the larger end of the limit should be generally more memory
efficient now as more slabs are created (thus are more granular).

5 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.4.2.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.4.2..1.4.3-rc2` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.3-rc2]

    15  Dustin Sallings
     8  Trond Norbye
     5  dormando
     2  Colin Pitrat
     1  Monty Taylor
     1  Chang Song
     1  CaptTofu
     1  Tomash Brechko

1.4.3-rc1

Release 1.4.3-rc1
                  Memcached 1.4.3-rc1 Release Notes
                  =================================

Date: 2009-11-01 Sun

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.3_rc1.tar.gz]

2 Overview
~~~~~~~~~~~

This is a maintenance release of memcached featuring mostly bug fixes
and one new feature.

3 Fixes
~~~~~~~~

3.1 Critical Fixes
===================

  * Malicious input can crash server. bug102

3.2 Non-critical Fixes
=======================

  * Removed special case in slab sizing for factor 2. bug56
  * Provide better errors for deletion scenarios. bug3
  * Fix get stats accounting. bug104
  * Ignore stats prefix for keys without a delimiter. bug96
  * Work around rpm's broken concept of versions more. bug98
  * Use slab class growth factor limit. bug57
  * Added LSB section to init script. bug54
  * Documentation fixes
  * Various build fixes

3.3 Itemized List of Bugs Closed
=================================

If a bug shows up in this list that wasn't specifically mentioned
above, it's either too minor to mention specifically or the bug was
closed by introducing a test that proves that the bug, as described,
does not exist.

  * bug3
  * bug54
  * bug56
  * bug57
  * bug62
  * bug67
  * bug68
  * bug69
  * bug96
  * bug97
  * bug98
  * bug101
  * bug102
  * bug104

4 New Features
~~~~~~~~~~~~~~~

4.1 Support for SASL Authentication
====================================

Some installations of memcached are not in controlled environments
where simple network filtering keeps bad guys out of your stuff.  To
help with those other environments, we've introduced SASL support.
You can read more about it here:

[http://code.google.com/p/memcached/wiki/SASLHowto]

4.2 New perl tool damemtop in scripts/
=======================================

dormando's awesome memcached top - a new commandline perl tool for
monitoring small to large memcached clusters. Supports monitoring
arbitrary statistics. See scripts/README.damemtop for more
information.

This tool is intended to replace memcached-tool, but not yet.

4.3 Also Noteworthy, Slab Optimizations
========================================

Objects on the larger end of the limit should be generally more memory
efficient now as more slabs are created (thus are more granular).

5 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.4.2.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.4.2..1.4.3-rc1` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.3-rc1]

    15  Dustin Sallings
     7  Trond Norbye
     5  dormando
     2  Colin Pitrat
     1  Chang Song
     1  CaptTofu
     1  Monty Taylor

1.4.2

Release 1.4.2
                  Memcached 1.4.2 Release Notes
                  =============================

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.2.tar.gz]

2 Overview
~~~~~~~~~~~

This is a maintenance release consisting primarily of bug fixes.

3 Fixes
~~~~~~~~

3.1 Critical Fixes
===================

  * Reject keys larger than 250 bytes in the binary protocol (bug94)
  * Bounds checking on stats cachedump (bug92)
  * Binary protocol set+cas wasn't returning a new cas ID (bug87)

3.2 Non-critical Fixes
=======================

  * Binary quitq didn't actually close the connection (bug84)
  * Build fix on CentOS 5 (bug88)
  * Slab boundary checking cleanup (bad logic in unreachable code)
  * Removed some internal redundancies.
  * Use the OS's provided htonll/ntohll if present (bug83)
  * Test fixes/cleanup/additions.
  * Get hit memory optimizations (bug89)
  * Disallow -t options that cause the server to not work (bug91)
  * memcached -vv now shows the final slab
  * Killed off incomplete slab rebalance feature.
  * Better warnings.
  * More consistent verbosity in binary and ascii (bug93)
  * More RPM spec fixes.

4 New Features
~~~~~~~~~~~~~~~

4.1 Support for libhugetlbfs (in Linux)
========================================

From [http://libhugetlbfs.ozlabs.org/] -

     libhugetlbfs is a library which provides easy access to huge
     pages of memory. It is a wrapper for the hugetlbfs file
     system.

If you are running memcached with a very large heap in Linux, this
change will make it available to you.  The hugetlbfs HOWTO provides
detailed information on how to configure your Linux system and provide
advice to applications (such as memcached) to make use of it.

4.2 Support for evictions, evict_time and OOM counts in memcached-tool
=======================================================================

memcached-tool is a commandline tool to display information about your
server.  It displays more now.

4.3 Configurable maximum item size.
====================================

Many people have asked for memcached to be able to store items larger
than 1MB, while it's generally recommended that one *not* do this, it
is now supported on the commandline.

A few enlightened folk have also asked for memcached to reduce the
maximum item size.  That is also an option.

The new -I parameter allows you to specify the maximum item size at
runtime.  It supports a unit postfix to allow for natural expression
of item size.

Examples:

memcached -I 128k # Refuse items larger than 128k.
memcached -I 10m  # Allow objects up to 10MB

4.4 New stat: 'evicted_nonzero'
================================

The evicted_nonzero stat is a counter of all of the evictions for
items that had an expiration time greater than zero.

This can be used to help distinguish "healthy" evictions from
"unhealthy" ones.  If all of your evictions are for objects with no
expiration, then they're naturally falling off the LRU as opposed to
being evicted before their maximum expiry that was set at item store
time.

4.5 Protocol definitions for range protocol.
=============================================

memcached ships with a binary protocol header that can be used when
implementing your own protocol parsers and generators.  The structure
definitions and opcodes for the range specification are included in
this header.

Note that the server *does not* support these operations.

5 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.4.1.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.4.1..1.4.2` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.2]

    12  Dustin Sallings
    10  Trond Norbye
     9  dormando
     1  Vladimir
     1  Ryan Tomayko
     1  Mat Hostetter
     1  Jonathan Steinert
     1  Dmitry Isaykin
     1  Jonathan Steinert

1.4.2-rc1

Release 1.4.2-rc1
                  Memcached 1.4.2-rc1 Release Notes
                  =================================

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.2_rc1.tar.gz]

2 Overview
~~~~~~~~~~~

This is a maintenance release consisting primarily of bug fixes.

3 Fixes
~~~~~~~~

3.1 Critical Fixes
===================

  * Reject keys larger than 250 bytes in the binary protocol (bug94)
  * Bounds checking on stats cachedump (bug92)
  * Binary protocol set+cas wasn't returning a new cas ID (bug87)

3.2 Non-critical Fixes
=======================

  * Binary quitq didn't actually close the connection (bug84)
  * Build fix on CentOS 5 (bug88)
  * Slab boundary checking cleanup (bad logic in unreachable code)
  * Removed some internal redundancies.
  * Use the OS's provided htonll/ntohll if present (bug83)
  * Test fixes/cleanup/additions.
  * Get hit memory optimizations (bug89)
  * Disallow -t options that cause the server to not work (bug91)
  * memcached -vv now shows the final slab
  * Killed off incomplete slab rebalance feature.
  * Better warnings.
  * More consistent verbosity in binary and ascii (bug93)

4 New Features
~~~~~~~~~~~~~~~

4.1 Support for libhugetlbfs (in Linux)
========================================

From [http://libhugetlbfs.ozlabs.org/] -

     libhugetlbfs is a library which provides easy access to huge
     pages of memory. It is a wrapper for the hugetlbfs file
     system.

If you are running memcached with a very large heap in Linux, this
change will make it available to you.  The hugetlbfs HOWTO provides
detailed information on how to configure your Linux system and provide
advice to applications (such as memcached) to make use of it.

4.2 Support for evictions, evict_time and OOM counts in memcached-tool
=======================================================================

memcached-tool is a commandline tool to display information about your
server.  It displays more now.

4.3 Configurable maximum item size.
====================================

Many people have asked for memcached to be able to store items larger
than 1MB, while it's generally recommended that one *not* do this, it
is now supported on the commandline.

A few enlightened folk have also asked for memcached to reduce the
maximum item size.  That is also an option.

The new -I parameter allows you to specify the maximum item size at
runtime.  It supports a unit postfix to allow for natural expression
of item size.

Examples:

memcached -I 128k # Refuse items larger than 128k.
memcached -I 10m  # Allow objects up to 10MB

4.4 New stat: 'evicted_nonzero'
================================

The evicted_nonzero stat is a counter of all of the evictions for
items that had an expiration time greater than zero.

This can be used to help distinguish "healthy" evictions from
"unhealthy" ones.  If all of your evictions are for objects with no
expiration, then they're naturally falling off the LRU as opposed to
being evicted before their maximum expiry that was set at item store
time.

4.5 Protocol definitions for range protocol.
=============================================

memcached ships with a binary protocol header that can be used when
implementing your own protocol parsers and generators.  The structure
definitions and opcodes for the range specification are included in
this header.

Note that the server *does not* support these operations.

5 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.4.1.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.4.1..1.4.2-rc1` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.2-rc1]

    16  Dustin Sallings
     8  Trond Norbye
     1  Mat Hostetter
     1  Matt Ingenthron
     1  Monty Taylor
     1  Steve Yen
     1  Adam Thomason
     1  dormando
     1  Cosimo Streppone

1.4.1

 Memcached 1.4.1 Release Notes
                    =============================

Date: 2009-08-26 Wed

Table of Contents
=================
1 Download
2 Overview
3 Fixes
    3.1 Criticial Fixes
    3.2 Non-critical Fixes
4 New Features
5 Contributors

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.1.tar.gz]

2 Overview
~~~~~~~~~~~

This is a maintenance release consisting primarily of bug fixes.

3 Fixes
~~~~~~~~

3.1 Criticial Fixes
====================

  * Boundary condition during pipelined decoding caused crash (bug72)
  * Bad initialization during buffer realloc (bug77)
  * Buffer overrun in stats_prefix_find (bug79)
  * Memory corruption from negative and invalid item lengths (bug70)

3.2 Non-critical Fixes
=======================

  * Update flush stats for binary flushes (bug71)
  * Build fixes for OpenBSD
  * Build fixes for Solaris/gcc
  * Cleanup warnings brought to us by OpenBSD (sprintf, etc...)
  * Lots of fixes with the test tools
  * Various documentation cleanups
  * RPM spec autoupdate

4 New Features
~~~~~~~~~~~~~~~

  * stats slabs returns the number of requested bytes as mem_requested
  * memcached can bind to ephemeral ports (used for testing)

5 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.4.0.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.4.0..1.4.1` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.1]

    16  Dustin Sallings
     8  Trond Norbye
     2  dormando
     1  Mat Hostetter
     1  Matt Ingenthron
     1  Monty Taylor
     1  Steve Yen
     1  Adam Thomason
     1  Cosimo Streppone

1.4.1-rc1

 Memcached 1.4.1-rc1 Release Notes
                    =============================

Date: 2009-08-26 Wed

Table of Contents
=================
1 Download
2 Overview
3 Fixes
    3.1 Criticial Fixes
    3.2 Non-critical Fixes
4 New Features
5 Contributors

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.1-rc1.tar.gz]

2 Overview
~~~~~~~~~~~

This is a maintenance release consisting primarily of bug fixes.

3 Fixes
~~~~~~~~

3.1 Criticial Fixes
====================

  * Boundary condition during pipelined decoding caused crash (bug72)
  * Bad initialization during buffer realloc (bug77)
  * Buffer overrun in stats_prefix_find (bug79)
  * Memory corruption from negative and invalid item lengths (bug70)

3.2 Non-critical Fixes
=======================

  * Update flush stats for binary flushes (bug71)
  * Build fixes for OpenBSD
  * Build fixes for Solaris/gcc
  * Cleanup warnings brought to us by OpenBSD (sprintf, etc...)
  * Lots of fixes with the test tools
  * Various documentation cleanups

4 New Features
~~~~~~~~~~~~~~~

  * stats slabs returns the number of requested bytes as mem_requested
  * memcached can bind to ephemeral ports (used for testing)

5 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.4.0.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.4.0..1.4.1-rc1` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.1-rc1]

    16  Dustin Sallings
     8  Trond Norbye
     2  dormando
     1  Mat Hostetter
     1  Matt Ingenthron
     1  Monty Taylor
     1  Steve Yen
     1  Adam Thomason
     1  Cosimo Streppone

1.4.0

Release 1.4.0
                     Memcached 1.4 Release Notes
                     ===========================

1 Download
~~~~~~~~~~~

Download Link:

[http://memcached.googlecode.com/files/memcached-1.4.0.tar.gz]

2 New Features
~~~~~~~~~~~~~~~

2.1 Binary Protocol
====================

A new feature that brings new features.  We now have goodness like
CAS-everywhere (e.g. delete), silent, but verifiable mutation
commands, and many other wonders.

Note that the original protocol is *not* deprecated.  It will be
supported indefinitely, although some new features may only be
available in the binary protocol.

2.1.1 Client Availability
--------------------------

Many clients for the binary protocol are available.

* C

  libmemcached supports just about anything you can do with a memcached
  protocol and is the foundation for many clients in many different
  languages (which you can find linked from the project page).

  Project page:  [http://tangent.org/552/libmemcached.html]

* Java

  spymemcached has very good text and binary protocol support over IPv4
  and IPv6 with a quite comprehensive test suite.

  Project page:  [http://code.google.com/p/spymemcached/]

* Protocol Spec

  NIH problem?  Go write your own client.  :)

  [http://cloud.github.com/downloads/memcached/memcached/protocol-binary.txt]

2.2 Performance
================

Lots of effort has gone into increasing performance.

There is no longer a build-time distinction between a single-threaded
and multi-threaded memcached.  If you want a single-threaded
memcached, ask for one thread (though there'll still be utility
threads and other such things in the background).  This change lets us
focus on a future where multiple cores can be saturated for servicing
requests.

Facebook-inspired contention reduction with per-thread stat collection
and the Facebook connection dispatch and thread starvation prevention
contributions helped our scalability.

Lock analysis also showed us that we had quite a bit of contention on
hash table expansion which has been moved into its own thread, greatly
improving the scalability on multicore hardware.

A variety of smaller things also shook out of performance testing and
analysis.

There's also a memory optimization for users who don't actually make
use of CAS.  Running memcached with -C disables the use of CAS
resulting in a savings of about eight bytes per item.  If you have big
caches, and don't use CAS, this can lead to a considerable savings.

2.3 Stats
==========

There are several new stats and some new ways to look at older stats.

2.3.1 New Stats
----------------

* stats settings

  Show all current server settings (useful for troubleshooting as well
  as internal verification).

* Delete

  The global stats now contain statistics on deletion.

  delete_hits refers to the number of times a deletion command was
  issued which resulted in a modification of the cache while
  delete_misses refers to the number of times a deletion command was
  issued which had no effect due to a key mismatch.

* Incr/Decr

  Incr and decr each have a pair of stats showing when a
  successful/unsuccessful incr occurred.  incr_hits, incr_misses,
  decr_hits, and decr_misses show where such mutations worked and where
  they failed to find an existing object to mutate.

* CAS

  CAS stats are tracked in three different ways:

  + cas_hits

    Number of attempts to CAS in a new value that worked.

  + cas_misses

    Number of attempts to CAS in a value where the key was not found.

  + cas_badval

    Number of attempts to CAS in a value where the CAS failed due to the
    object changing between the gets and the update.

* slab class evicted time

  Per slab class, you can now see how recently accessed the most recent
  evicted data was.  This is a useful gauge to determine eviction
  velocity on a slab so you can know whether evictions are healthy or if
  you've got a problem.

* Connection yield counts

  The -R option allows you to limit how many requests are handled in a
  single trip through the network state machine.  The conn_yields stat
  reports how many times this has occurred.

  This is most useful when you have very high rates of operations from a
  single client which seems to be hogging server resources unfairly,
  such as extremely large multi-get operations.  We do not expect this
  to be a common situation, but this stat can help diagnose such issues
  if they should occur.

2.3.2 More Granular Stats
--------------------------

Where possible, stats are now tracked individually by slab class.  The
following stats are available on a per-slab-class basis (via "stats slabs"):

  * get_hits
  * cmd_set
  * delete_hits
  * incr_hits
  * decr_hits
  * cas_hits
  * cas_badval

(misses are obviously not available as they refer to a non-existent item)

2.3.3 Removed stats
--------------------

"stats malloc" and "stats maps" have been removed.

If you depended on these commands for anything, please let us know so
we may suggest alternatives for you.

2.4 Misc
=========
- More tests
- More/better documentation
- Code cleanup

3 Bug Fixes
~~~~~~~~~~~~

  * Build fixes on ubuntu (gcc and icc) and FreeBSD
  * bad interaction with cas + incr (bug 15)
  * setuid failures are reported properly at daemonization time
  * decr overflow causing unnecessary truncation to 0 (bug 21)
  * failure to bind on Linux with no network (i.e. laptop dev)
  * some memcached-tool cleanup
  * Alignment bug in binary stats (bug26)
  * Occasional buffer overflow in stats (bug27)
  * Try to recycle memory more aggressively. (bug14)
  * incr validation (bug31)
  * 64-bit incr/decr delta fixes (bug21)
  * ascii UDP set (bug36)
  * stats slabs' used chunks (bug29)
  * stats reset should reset item stats, eviction counters, etc... (bug22)
  * Fix all stat buffer management
  * Fixes for -R handling (bug61)
  * GCC 4.4 fixes (bug60)

4 Development Info
~~~~~~~~~~~~~~~~~~~

We've added a bunch of tests and new code coverage reports.

All included code in this release has been tested against the
following platforms (using the in-tree test suite):

  * ubuntu 8.10 (64-bit, both gcc and icc)
  * ubuntu 8.04 (32-bit)
  * ubuntu 9.10 (64-bit, gcc 4.4)
  * OS X 10.5 (ppc and intel)
  * OpenSolaris 5.11 x86 (with and without dtrace)
  * Solaris 10 sparc (with and without dtrace)
  * FreeBSD 7 x86

5 Feedback
~~~~~~~~~~~

This version is considered a stable release and has been well-tested,
but bugs are always possible.  Report feedback to the list or file
bugs as you find them.

  * Mailing List:  [http://groups.google.com/group/memcached]
  * Issue Tracker:  [http://code.google.com/p/memcached/issues/list]
  * IRC:  #memcached on freenode

6 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.2.8.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.2.8..1.4.0` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/memcached/memcached/commits/1.4.0]

  149  Dustin Sallings
   61  Trond Norbye
   33  Toru Maesaka
   30  dormando
   13  Steve Yen
    7  hachi
    6  Aaron Stone
    5  Brad Fitzpatrick
    4  Victor Kirkebo
    3  Eric Lambert
    2  Brian Aker
    1  Chris Goffinet
    1  Clinton Webb
    1  Matt Ingenthron
    1  Ricky Zhou
    1  Evan Klitzke

1.4-rc1

Only turn off strict aliasing for gcc 4.4.*

1.4.0-rc1

Release 1.4-rc1
1 Download
~~~~~~~~~~~

Download Link:

http://memcached.googlecode.com/files/memcached-1.4.0-rc1.tar.gz

2 New Features
~~~~~~~~~~~~~~~

2.1 Binary Protocol
====================

A new feature that brings new features.  We now have goodness like
CAS-everywhere (e.g. delete), silent, but verifiable mutation
commands, and many other wonders.

Note that the original protocol is *not* deprecated.  It will be
supported indefinitely, although some new features may only be
available in the binary protocol.

2.1.1 Client Availability
--------------------------

Many clients for the binary protocol are available.

* C

  libmemcached supports just about anything you can do with a memcached
  protocol and is the foundation for many clients in many different
  languages (which you can find linked from the project page).

  Project page: http://tangent.org/552/libmemcached.html

* Java

  spymemcached has very good text and binary protocol support over IPv4
  and IPv6 with a quite comprehensive test suite.

  Project page: http://code.google.com/p/spymemcached/

* Protocol Spec

  NIH problem?  Go write your own client.  :)

  http://cloud.github.com/downloads/memcached/memcached/protocol-binary.txt

2.2 Performance
================

Lots of effort has gone into increasing performance.

There is no longer a build-time distinction between a single-threaded
and multi-threaded memcached.  If you want a single-threaded
memcached, ask for one thread (though there'll still be utility
threads and other such things in the background).  This change lets us
focus on a future where multiple cores can be saturated for servicing
requests.

Facebook-inspired contention reduction with per-thread stat collection
and the Facebook connection dispatch and thread starvation prevention
contributions helped our scalability.

Lock analysis also showed us that we had quite a bit of contention on
hash table expansion which has been moved into its own thread, greatly
improving the scalability on multicore hardware.

A variety of smaller things also shook out of performance testing and
analysis.

There's also a memory optimization for users who don't actually make
use of CAS.  Running memcached with -C disables the use of CAS
resulting in a savings of about eight bytes per item.  If you have big
caches, and don't use CAS, this can lead to a considerable savings.

2.3 Stats
==========

There are several new stats and some new ways to look at older stats.

2.3.1 New Stats
----------------

* stats settings

  Show all current server settings (useful for troubleshooting as well
  as internal verification).

* Delete

  The global stats now contain statistics on deletion.

  delete_hits refers to the number of times a deletion command was
  issued which resulted in a modification of the cache while
  delete_misses refers to the number of times a deletion command was
  issued which had no effect due to a key mismatch.

* Incr/Decr

  Incr and decr each have a pair of stats showing when a
  successful/unsuccessful incr occurred.  incr_hits, incr_misses,
  decr_hits, and decr_misses show where such mutations worked and where
  they failed to find an existing object to mutate.

* CAS

  CAS stats are tracked in three different ways:

  + cas_hits

    Number of attempts to CAS in a new value that worked.

  + cas_misses

    Number of attempts to CAS in a value where the key was not found.

  + cas_badval

    Number of attempts to CAS in a value where the CAS failed due to the
    object changing between the gets and the update.

* slab class evicted time

  Per slab class, you can now see how recently accessed the most recent
  evicted data was.  This is a useful gauge to determine eviction
  velocity on a slab so you can know whether evictions are healthy or if
  you've got a problem.

2.3.2 More Granular Stats
--------------------------

Where possible, stats are now tracked individually by slab class.  The
following stats are available on a per-slab-class basis (via "stats slabs"):

  * get_hits
  * cmd_set
  * delete_hits
  * incr_hits
  * decr_hits
  * cas_hits
  * cas_badval

(misses are obviously not available as they refer to a non-existent item)

2.3.3 Removed stats
--------------------

"stats malloc" and "stats maps" have been removed.

If you depended on these commands for anything, please let us know so
we may suggest alternatives for you.

2.4 Misc
=========
- More tests
- More/better documentation
- Code cleanup

3 Bug Fixes
~~~~~~~~~~~~

  * Build fixes on ubuntu (gcc and icc) and FreeBSD
  * bad interaction with cas + incr (bug 15)
  * setuid failures are reported properly at daemonization time
  * decr overflow causing unnecessary truncation to 0 (bug 21)
  * failure to bind on Linux with no network (i.e. laptop dev)
  * some memcached-tool cleanup
  * Alignment bug in binary stats (bug26)
  * Occasional buffer overflow in stats (bug27)
  * Try to recycle memory more aggressively. (bug14)
  * incr validation (bug31)
  * 64-bit incr/decr delta fixes (bug21)
  * ascii UDP set (bug36)
  * stats slabs' used chunks (bug29)
  * stats reset should reset item stats, eviction counters, etc... (bug22)
  * Fix all stat buffer management

4 Development Info
~~~~~~~~~~~~~~~~~~~

We've added a bunch of tests and new code coverage reports.

All included code in this release has been tested against the
following platforms (using the in-tree test suite):

  * ubuntu 8.10 (64-bit, both gcc and icc)
  * ubuntu 8.04 (32-bit)
  * OS X 10.5 (ppc and intel)
  * OpenSolaris 5.11 x86 (with and without dtrace)
  * Solaris 10 sparc (with and without dtrace)
  * FreeBSD 7 x86

5 Feedback
~~~~~~~~~~~

Please try this version.  Make it suffer.  Report feedback to the list
or file bugs as you find them.

  * Mailing List:  http://groups.google.com/group/memcached
  * Issue Tracker: http://code.google.com/p/memcached/issues/list
  * IRC:  #memcached on freenode

6 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.2.8.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.2.8..1.4.0-rc1` or use a web view.

  * Repo list: http://code.google.com/p/memcached/wiki/DevelopmentRepos
  * Web View:  http://github.com/memcached/memcached/commits/1.4.0-rc1

  144  Dustin Sallings
   60  Trond Norbye
   33  Toru Maesaka
   30  dormando
   13  Steve Yen
    7  hachi
    6  Aaron Stone
    5  Brad Fitzpatrick
    4  Victor Kirkebo
    3  Eric Lambert
    2  Brian Aker
    1  Chris Goffinet
    1  Ricky Zhou
    1  Clinton Webb
    1  Evan Klitzke

1.2.8

1.2.8
- fix critical issue when hitting maximum connections.
- remove 'stats maps' command
- make -b option work

1.3.3

Release 1.3.3 (a beta)
1 Download
~~~~~~~~~~~

Download Link:

http://memcached.googlecode.com/files/memcached-1.3.3.tar.gz

2 Features
~~~~~~~~~~~

2.1 Can set listen backlog on the commandline.
===============================================

Prevent connection refused during connection storms at the cost of
kernel memory.

2.2 stats settings
===================

Show all current server settings (useful for troubleshooting as well
as internal verification).

3 Bug fixes
~~~~~~~~~~~~
- Alignment bug in binary stats (bug26)
- Occasional buffer overflow in stats (bug27)
- Try to recycle memory more aggressively. (bug14)
- incr validation (bug31)
- 64-bit incr/decr delta fixes (bug21)
- ascii UDP set (bug36)
- stats slabs' used chunks (bug29)
- stats reset should reset item stats, eviction counters, etc... (bug22)
- Fix all stat buffer management

4 Misc
~~~~~~~
- More tests
- More/better documentation
- Code cleanup

5 Stable fixes from Dormando
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

5.1 New Stats
==============

5.1.1 accepting_conns
----------------------

1 or 0 to indicate whether the server is currently accepting
connections or not.

The server will stop accepting connections when it has as many as it's
configured to take.

5.1.2 listen_disabled_num
--------------------------

The number of times socket listeners were disabled due to hitting the
connection limit.

5.1.3 cmd_flush
----------------

The number of times the flush command was issued.

5.2 missing key debugging
==========================

With verbosity enabled, you can see *why* objects were not found.  In
many cases, an item exists under a given key, but is considered
invalid due to lazy expiration or flush.

5.3 tail repair
================

There is a rare, unidentified reference leak that causes a slab to be
full of invalid objects that cannot be evicted via the LRU nor will
they expire on their own.

Tail repair is a strategy by which we forcefully evict objects that
are marked as ``in-use'' (that is, in-flight or otherwise being used),
but haven't been accessed in a long time (currently three hours).

There is an additional stat that comes along with this (tailrepairs on
a slab) that will allow you to detect that this condition has occurred
on one of your slabs.

5.4 socket listen bugs
=======================

There were some issues listening to sockets on machines with different
network interface configurations (i.e. no network, only ipv4, only
ipv6, etc...).

6 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.3.2.  Please
refer to the 1.3.2 release notes for more info:

http://code.google.com/p/memcached/wiki/ReleaseNotes132

    28  Dustin Sallings
     8  Trond Norbye
     6  dormando
     5  Brad Fitzpatrick
     4  Steve Yen
     1  Eric Lambert
     1  Clinton Webb
     1  Chris Goffinet

1.2.7-rc1

release candidate 1.2.7-rc1
full release notes for -final

1.3.2

Release 1.3.2 (a beta)
1 New Features
~~~~~~~~~~~~~~~

1.1 Binary Protocol
====================

A new feature that brings new features.  We now have goodness like
CAS-everywhere (e.g. delete), silent, but verifiable mutation
commands, and many other wonders.

Note that the original protocol is *not* deprecated.  It will be
supported indefinitely, although some new features may only be
available in the binary protocol.

1.1.1 Client Availability
--------------------------

Many clients for the binary protocol are available.

* C

  libmemcached supports just about anything you can do with a memcached
  protocol and is the foundation for many clients in many different
  languages (which you can find linked from the project page).

  Project page:  [http://tangent.org/552/libmemcached.html]

* Java

  spymemcached has very good text and binary protocol support over IPv4
  and IPv6 with a quite comprehensive test suite.

  Project page:  [http://code.google.com/p/spymemcached/]

* Protocol Spec

  NIH problem?  Go write your own client.  :)

  [http://cloud.github.com/downloads/dustin/memcached/protocol-binary.txt]

1.2 Performance
================

Lots of effort has gone into increasing performance.

Facebook-inspired contention reduction with per-thread stat collection
and the Facebook connection dispatch and thread starvation prevention
contributions helped our scalability.

Lock analysis also showed us that we had quite a bit of contention on
hash table expansion which has been moved into its own thread, greatly
improving the scalability on multicore hardware.

A variety of smaller things also shook out of performance testing and
analysis.

1.3 Stats
==========

There are several new stats and some new ways to look at older stats.

1.3.1 New Stats
----------------

* Delete

  The global stats now contain statistics on deletion.

  delete_hits refers to the number of times a deletion command was
  issued which resulted in a modification of the cache while
  delete_misses refers to the number of times a deletion command was
  issued which had no effect due to a key mismatch.

* Incr/Decr

  Incr and decr each have a pair of stats showing when a
  successful/unsuccessful incr occurred.  incr_hits, incr_misses,
  decr_hits, and decr_misses show where such mutations worked and where
  they failed to find an existing object to mutate.

* CAS

  CAS stats are tracked in three different ways:

  + cas_hits

    Number of attempts to CAS in a new value that worked.

  + cas_misses

    Number of attempts to CAS in a value where the key was not found.

  + cas_badval

    Number of attempts to CAS in a value where the CAS failed due to the
    object changing between the gets and the update.

* slab class evicted time

  Per slab class, you can now see how recently accessed the most recent
  evicted data was.  This is a useful gauge to determine eviction
  velocity on a slab so you can know whether evictions are healthy or if
  you've got a problem.

1.3.2 More Granular Stats
--------------------------

Where possible, stats are now tracked individually by slab class.  The
following stats are available on a per-slab-class basis (via "stats slabs"):

  * get_hits
  * cmd_set
  * delete_hits
  * incr_hits
  * decr_hits
  * cas_hits
  * cas_badval

(misses are obviously not available as they refer to a non-existent item)

1.3.3 Removed stats
--------------------

"stats malloc" and "stats maps" have been removed.

If you depended on these commands for anything, please let us know so
we can bring them back in a more maintainable way.

2 Bug Fixes
~~~~~~~~~~~~

  * Build fixes on ubuntu (gcc and icc) and FreeBSD
  * bad interaction with cas + incr (bug 15)
  * setuid failures are reported properly at daemonization time
  * decr overflow causing unnecessary truncation to 0 (bug 21)
  * failure to bind on Linux with no network (i.e. laptop dev)
  * some memcached-tool cleanup

3 Development Info
~~~~~~~~~~~~~~~~~~~

We've added a bunch of tests and new code coverage reports.

All included code in this release has been tested against the
following platforms (using the in-tree test suite):

  * ubuntu 8.10 (64-bit, both gcc and icc)
  * ubuntu 8.04 (32-bit)
  * OS X 10.5 (ppc and intel)
  * OpenSolaris 5.11 x86 (with and without dtrace)
  * FreeBSD 7 x86

4 Feedback
~~~~~~~~~~~

Please try this version.  Make it suffer.  Report feedback to the list
or file bugs as you find them.

  * Mailing List:  [http://groups.google.com/group/memcached]
  * Issue Tracker:  [http://code.google.com/p/memcached/issues/list]
  * IRC:  #memcached on freenode

5 Contributors
~~~~~~~~~~~~~~~

The following people contributed to this release since 1.2.6.

Note that this is based on who contributed changes, not how they were
done.  In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.

Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.2.6..1.3.2` or use a web view.

  * Repo list:  [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/dustin/memcached/commits/1.3.2]

  104  Dustin Sallings
   49  Trond Norbye
   32  Toru Maesaka
   31  dormando
    8  Steve Yen
    7  hachi
    6  Aaron Stone
    6  Brian Aker
    4  Victor Kirkebo
    2  Ricky Zhou
    1  Jonathan Bastien-Filiatrault
    1  Evan Klitzke
    1  Eric Lambert

1.2.0

Release 1.2.0
Merged in a big chunk of facebook work.

1.2.1

Release 1.2.1
* Steven Grimm <sgrimm@facebook.com>: Performance improvements:

  Dynamic sizing of hashtable to reduce collisions on very large
  caches and conserve memory on small caches.

  Only reposition items in the LRU queue once a minute, to reduce
  overhead of accessing extremely frequently-used items.

  Stop listening for new connections until an existing one closes
  if we run out of available file descriptors.

  Command parser refactoring: Add a single-pass tokenizer to cut
  down on string scanning.  Split the command processing into
  separate functions for easier profiling and better readability.
  Pass key lengths along with the keys in all API functions that
  need keys, to avoid needing to call strlen() repeatedly.

* Steve Peters <steve@fisharerojo.org>: OpenBSD has a malloc.h,
  but warns to use stdlib.h instead

* Iain Wade <iwade@optusnet.com.au>: Fix for UDP responses on non-"get"
 commands.

* Steven Grimm <sgrimm@facebook.com>: New faster hash function.

* don't listen on UDP by default; more clear message when UDP port in use

1.2.2

Release 1.2.2
* Command tokenizer performance and cleanliness improvement.
  Patch contributed by Paolo Borelli <paolo.borelli@gmail.com>.

* Add notes to README about MacOS, libevent and kqueue.

* Windows Patch integration -- part 1, warnings elimination.

* Allow changes to the verbosity level of the server with a new
  "verbosity" command and some compiler cleanups.
  Patch contributed by Paolo Borelli <paolo.borelli@gmail.com>.

* Add cleanup patch from "Tim Yardley" <liquid@haveheart.com> to
  clean up source spacing issues, fix -Wall warnings, add some
  null checks, adds asserts at the top of each function for any
  use of conn *c without checking to see if c is NULL first.

* Also adjust clean-whitespace.pl to clean *.ac files.  Add
  script to test-suite to test for tabs.

* Add clarification of flush_all in the protocol docs
  from Elizabeth Mattijsen <liz@dijkmat.nl>

* Add patch from Eli Bingham <eli@pandora.com> to
  re-enable the -n switch to memcached.

* Add patch to collect eviction statistics from
  Jean-Francois BUSTARRET <jfbustarret@wat.tv>.

* Updated docs, added new test cases for t/stats.t

* Add more test cases using larger buffer sizes up to and greater
  than 1MB.

* Remove unused parameter to item_size_ok()

* Use a single printf() in usage()

* Add a failing test for conforming with maximum connections.

* crash fix from Thomas van Gulick <thomas@partyflock.nl> in
  conn_shrink(), passing &ptr, instead of ptr to realloc().

* Fix a number of places where (s)printf calls were using unsigned
  or signed formats that did not match their arguments.

* Add support for stdbool.h and stdint.h to use the bool and
  uint8_t types.

* Major refactoring - move API calls for assoc/items/slabs to
  their own individual header files.  Add apropriate const and
  static declarations as appropriate.

* Avoid type-punning.  Do a more efficient realloc inside the
  conn_shrink routine.

* Fix overflow bug where uninitialized access to slabclass caused
  size-0 mallocs during slab preallocation.

* Use EXIT_SUCCESS/EXIT_FAILURE constants.

* Convert some sprintf calls to snprintf to protect against
  buffer overflows.

* Explicitly compare against NULL or zero in many places.

* Steven Grimm <sgrimm@facebook.com>: Per-object-type stats collection
  support. Specify the object type delimiter with the -D command line
  option. Turn stats gathering on and off with "stats detail on" and
  "stats detail off". Dump the per-object-type details with
  "stats detail dump".

* Steven Grimm <sgrimm@facebook.com>: Fix an off-by-one error in the
  multithreaded version's message passing code.

* fix expirations of items set with absolute expiration times in
  the past, before the server's start time.  bug was introduced in
  1.2.0 with rel_time_t.  Thanks to Adam Dixon
  <adamtdixon@gmail.com> for the bug report and test case!

* Steven Grimm <sgrimm@facebook.com>: Performance improvements:

* Steve Peters <steve@fisharerojo.org>: OpenBSD has a malloc.h,
  but warns to use stdlib.h instead

* Steven Grimm <sgrimm@facebook.com>: Add support for multithreaded
  execution. Run configure with "--enable-threads" to enable. See
  doc/threads.txt for details.

* Iain Wade <iwade@optusnet.com.au>: Fix for UDP responses on non-"get"
  commands.

* Steven Grimm <sgrimm@facebook.com>: Dynamic sizing of hashtable to
  reduce collisions on very large caches and conserve memory on
  small caches.

* Steven Grimm <sgrimm@facebook.com>: New faster hash function.

1.2.3

Release 1.2.3
* Solaris portability fixes from Trond Norbye

* Properly document evictions statistic value

* Flesh out tests for unix domain sockets and binary data.

* Update rpm spec file to run tests

* Fix compilation bug on freebsd 6.x (and maybe others)

* Update RPM spec file per redhat bugzilla #238994

* Move unistd.h to memcached.h to get rid of warnings

* Add string.h to thread.c to get correctly prototyped strerror()

* Add fedora/redhat style init script and RPM spec file

1.2.4

Release 1.2.4
* Fix compilation on panther (JS and Dormando)

* More CAS tests (Chris Goffinet)

* Final fixes for all 1.2.4 features are in, -rc2 sent out.

* Patch series from Tomash Brechko <tomash.brechko@gmail.com>:
  Minor fixes and optimisations.

* Patches from Chris, Dustin, and Dormando to fix CAS.

* Prepping for 1.2.4 release.

* Adjusted patch from js <ebgssth@gmail.com>: Compile on OS X Panther
  and earlier.

* Patch from Tomash Brechko <tomash.brechko@gmail.com>: Always send
  "SERVER_ERROR out of memory" when memory exhausted.

* Patch from David Bremner <bremner@unb.ca> that implements
  a new option "-a" which takes an octal permission mask
  (like chmod) sets the permissions on the unix domain socket
  (specified by "-s").

* Incorporate "cas" operation developed by Dustin
  Sallings <dustin@spy.net> This change allows you
  to do atomic changes to an existing key.

* Fix for stats.evictions not incrementing
  when exptime == 0 items are kicked off the cache.
  from Jean-Francois BUSTARRET <jfbustarret@wat.tv>.

* Fix for do_item_cachedump() which was returning
  an incorrect timestamp.

* Switch to unsigned 64-bit increment/decrement counters
  from Evan Miller and Dustin Sallings.

* Add append command support written by Filipe Laborde.
  Thread safe version plus prepend command from Maxim Dounin
  <mdounin@mdounin.ru>

* The memcached-tool script can now display stats.  Patch
  provided by Dan Christian <dchristian@google.com>

* Fix for Unix Domain sockets on FreeBSD
  FreeBSD's sendmsg() requires msg_name in msghdr structure
  to be NULL if not used, setting msg_namelen to 0 isn't enough.
  Patch from Maxim Dounin <mdounin@mdounin.ru>

* Incorporate incrememnt patch from Evan Miller
  <emiller@imvu.com> to define increment overflow
  behavior.

* Bring the memcached.1 manpage up to date

* Fix crash when using -P and -d flags on x86_64
  with latest libevent release.

* Item stats commands weren't thread-safe; wrap them with locks
  when compiled in multithreaded mode.

* The "stats items" command now works again; it broke with the
  introduction of the powers-of-N chunk size change.

1.2.5

Release 1.2.5
* Add per-item-class tracking of evictions and OOM errors (dormando)

* Optimize item_alloc() a little (dormando)

* Give 'SERVER_ERROR out of memory' errors more context (dormando)

* Enable usage of large memory pages under solaris
  (Trond.Norbye@Sun.COM)

* Enable UDP by default, clean up server socket code
  (brian@tangent.org)

* 'noreply' support (Tomash Brechko)

* IPv6 support, and IPv6 multi-interface support (brian@tangent.org)

* Add compiler options for Sun Studio compilers with --enable-threads
  (Trond.Norbye@Sun.COM)

* Add --enable-64bit for mulitarget platforms (Trond.Norbye@Sun.COM)

* Use gettimeofday(2) instead of time(2).

* Make -k option work (Tomash Brechko)

* Fix chunk slab alignment (Trond.Norbye@Sun.COM)

1.2.6

Release 1.2.6
* Add support for newer automake (Facebook)

* DTrace support for Solaris/etc (Trond Norbye)

* LRU tests (Steve Yen)

* Handle negative length items properly (Dormando)

* Don't leave stale data after failed set attempts (Dormando)

* Fix refcount leaks, which would result in OOM's on all sets
  (Dormando)

* Fix buffer overruns (Dustin Sallings, Tomash Brechko)

* Fix memory corruption with CAS (Dustin Sallings)

* Fix -k to work with -d. (reported by Gary Zhu)
Something went wrong with that request. Please try again.