docs: add changelogs [ci skip]
authorMichael Wallner <mike@php.net>
Fri, 23 Oct 2020 08:25:38 +0000 (10:25 +0200)
committerMichael Wallner <mike@php.net>
Fri, 23 Oct 2020 08:25:38 +0000 (10:25 +0200)
25 files changed:
ChangeLog-0.md [new file with mode: 0644]
ChangeLog-1.0.md [new file with mode: 0644]
ChangeLog-1.1.md [new file with mode: 0644]
ChangeLog.md [changed from file to symlink]
LICENSE
docs/CMakeLists.txt
docs/conf.py.in [new file with mode: 0644]
docs/source/CMakeLists.txt [new file with mode: 0644]
docs/source/ChangeLog-0.rst [new file with mode: 0644]
docs/source/ChangeLog-1.0.rst [new file with mode: 0644]
docs/source/ChangeLog-1.1.rst [new file with mode: 0644]
docs/source/changelogs.rst [new file with mode: 0644]
docs/source/conf.py.in [deleted file]
docs/source/copyright.rst
docs/source/index.rst
docs/source/libhashkit.rst [deleted file]
docs/source/libhashkit/hashkit_create.rst
docs/source/libhashkit/hashkit_function.rst
docs/source/libhashkit/hashkit_functions.rst
docs/source/libhashkit/hashkit_value.rst
docs/source/libhashkit/index.rst
docs/source/libmemcached.rst
docs/source/libmemcached/index_misc.rst
docs/source/libmemcachedutil.rst [deleted file]
docs/source/libmemcachedutil/index.rst

diff --git a/ChangeLog-0.md b/ChangeLog-0.md
new file mode 100644 (file)
index 0000000..6fca9bb
--- /dev/null
@@ -0,0 +1,514 @@
+# ChangeLog v0.x
+
+## v 0.53
+> released 2011-09-27
+
+* Fix for FreeBSD/OpenBSD and -lm
+* Added memcached_exist()
+* Fix for memory when using config test.
+* CLI gained --quiet
+
+## v 0.52
+> released 2011-09-12
+
+* Build fixes for Ubuntu/Suse.
+* Fixes for OSX Lion.
+* Bug fix for looping back through dns lookups under certain failures.
+* Fixes related to dead server failures.
+
+## v 0.51
+> released 2011-07-21
+
+* memcached_callback_set() now takes its data argument as const
+* Update to tests.
+* Fix in parser for port number.
+
+## v 0.50
+> released 2011-06-20
+
+* Updates to C++ interface 
+* Custom free allocators need to now check for value before calling free.
+* memcached_fetch_result() now uses the internal result when available (about 25 to 50% faster).
+* Fix for stats structure.
+* Updates to documentation.
+* memcached_fetch_result() now uses the internal result when available (about 25 to 50% faster).
+
+## v 0.49
+> released 2011-04-14
+
+* Fix calls to auto methods so that if value is not passed in nothing bad happens.
+* New parser calls for generating memcached_st objects.
+* New error system.
+* New flow control for messages means faster get/set calls.
+* Added new documentation system.
+* A behavior change has been now made that if you specify a weight for any server, we enable the weight flag and do weight balancing.  
+* Added MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS to simplify the setting of AUTO REJECT for servers.
+
+## v 0.48
+> released 2011-03-16
+
+* Fix memory leak in server parse.
+* Move test framework out to be its own library (easier to work with Gearman).
+
+
+## v 0.47
+> released 2011-02-24
+
+* Additional fixes for OpenBSD.
+* Bug fix 677609, 456080.
+* SIGPIPE fix for Linux send(). 
+* memcapable can now test ascii or binary based on flags.
+* Additional build fixes for SASL.
+
+
+## v 0.46
+> released 2011-02-14
+
+* Fixes a number of corner case bugs.
+* Fixes related to OpenBSD.
+* Better testing for protocol version.
+* Removes special case infinite wait on blocking setup.
+
+## v 0.45
+> released 2011-02-09
+
+* Add support for systemtap
+
+## v 0.44
+> released 2010-09-23
+
+* Windows bug fixes.
+* Hudson port support in test harness.
+* Improved portability of test hanrness.
+* SASL fixes.
+
+## v 0.43
+> released 2010-07-28
+
+* Added --args to memstat so that a greater range of values can be returned.
+* Prelimanary support for Windows.
+* memcached_stat_execute() merged. 
+
+## v 0.42
+> released 2010-07-06
+
+* Mistake in libtool caused issue with library version
+
+## v 0.41
+> released 2010-06-30
+
+* Added --file for memcat.
+* Added limemcached_ping() to libmemcached_util
+* Bugfix for some cases where connect would have issues with timeout.
+* Wrong value for errno given as error on an IO failure inside of poll.
+* Bug fix for issue where multiple interfaces with bad DNS were not being caught.
+
+## v 0.40
+> released 2010-04-23
+
+* Placed retry logic in for busted resolvers
+* Add an ignore for SIGPIPE to solve OSX issues.
+* A couple of fixed for memcached_light server.
+* Updated to debug mode to track io_wait
+
+## v 0.39
+> released 2010-04-06
+
+* Add support for prefix keys to binary protocol.
+* Remove the undocumented call memcached_server_remove().
+* The undocumented call memcached_server_by_key() now returns const.
+* memcached_server_error_reset() has been deprecated.
+* memcached_server_list() has been deprecated. Use memcached_server_cursor() to walk the servers found in a memcached_st() structure.
+* memcached_verbosity() can now be run concurrently with other operations.
+* SASL support.
+* Fixes memory leak found in EJECT HOSTS.
+
+## v 0.38
+> released 2010-02-10
+
+* C++ interface for libhashkit.
+* Modified memcached_set_memory_allocators() so that it requires a context pointer.
+* memcached_clone() now runs 5 times faster.
+* Functions used for callbacks are now given const memcached_st.
+* Added MEMCACHED_BEHAVIOR_CORK.
+* memslap now creates a configuration file at ~/.memslap.cnf
+* memcached_purge() now calls any callbacks registered during get execution.
+* Many fixes to memslap.
+* Updates for memcapable.
+* Compile fixes for OpenBSD.
+* Fix for possible recursive decent on IO failure.
+
+## v 0.37
+> released 2010-01-12
+
+* Fixed build for libhashkit.
+* Fixed install path regression.  
+* Modified RPM to strict check install. 
+* Added documentation for memcached_server_cursor();
+* Added memcached_servers_reset().
+* Modified memcached_st to remove dead cursor_server member.
+
+## v 0.36
+> released 2010-01-07
+
+* Merged in new memslap utility.
+* All of constants.h has been updated to match style (all old identifiers continue to work).
+* Added first pass for libhashkit.
+* Updated test Framework/extended tests.
+* Random read support during replication added.
+* Modified use_sort so that the option can be applied to any distribution type.
+* We removed the MEMCACHED_BEHAVIOR_KETAMA_COMPAT_MODE added in 0.35. Instead use memcached_behavior_set_distribution().
+
+## v 0.35
+> released 2009-11-09
+
+* Added support for by_key operations for inc/dec methods.
+* Added mget test to memslap.
+* Support for compatible ketama for SpyMemcached
+* Update C++ interface.
+* Fix for memcp
+
+## v 0.34
+> released 2009-10-13
+
+* Added support for setting behavior flags on a connection pool.
+* Don't increment server_failure_counter on normal disconnects.
+* Added prototype for a callback based protocol parser (server side) with examples so that you could let your own application speak the memcached protocol
+* Updated memcapable to test ASCII protocol.
+* Changed behavior so that server can be removed at first sign of failure.
+* Added memcached_server_get_last_disconnect() call
+
+## v 0.33
+> released 2009-09-23
+
+* Added memcapable to test servers for binary compatibility.
+* Updated C++ interface. Added basic support for C++ exceptions. Added multiple constructors the memcached client object. The C++ interface now takes parameters which are C++ types (such as std::string).
+* Several bug fixes for binary protocol support.
+* Fixed crashing issue with dumping from memcachd server (server internals were changed without documenting change).
+
+## v 0.32
+> released 2009-09-15
+
+* Change of behavior where linger is only modified for no-block and then it is set to zero.
+* Added Twitter's memcached_server_error() functions.
+* Fix for OSX compiles in development builds.
+* Updated C++ interface.
+* Updated memcached_mget and memcached_mget_by_key to take a size_t as a parameter instead of an unsigned int for number_of_keys.
+
+## v 0.31
+> released 2009-07-10
+
+* Added support or HA via replication.
+* malloc() removed for server key usage.
+* Update build system.
+* Added support for memcached_set_memory_allocators().
+* Fixed bug in configure.ac for have_htoll.
+
+## v 0.30
+> released 2009-06-01
+
+* Added memcachd_dump command (and framework for memdump tool).
+* Realigned all structures to remove padding (and line up important bits for 64bit caches.
+* Remove some of sprintf() in storage calls().
+* Removed printf() in stat call for unknown stat member.
+* memcached_generate_hash() function added.
+* Added tests to make sure all hash functions are stable.
+
+## v 0.29
+> released 2009-05-19
+
+* Fixed malloc usage to calloc for spots where we need zero filled memory. 
+* All code warnings now treated as errors.
+* Fixes for debian packaging.
+* Added new pooling mechanism.
+* MEMCACHED_BEHAVIOR_NO_BLOCK no longer also sets MEMCACHED_BEHAVIOR_BUFFER_REQUESTS.
+* Updated generic rpm.
+
+## v 0.28
+> released 2009-04-15
+
+* Fixed bug in init sructure (reapplied)
+* Fixed bug in get/set by key (nikkhils@gmail.com)
+
+## v 0.27
+> released 2009-03-30
+
+* Added new UDP fire-forget mode.
+* Reworked performance for mget() to better make use of async protocol
+* Cleaned up execution of fetch (just one set of code now)
+* Fixed Jenkin's for big endian hosts.
+* Updates for memstat to determine network latency.
+* Updates for binary protocol.
+* Many updates to documentation.
+
+## v 0.26
+> released 2009-01-29
+
+* Fix for decrement on hash key
+* Fixed assert that was catching bad memset() call in host_reset()
+* Fix purge issue for blocked IO which has been stacked.
+
+## v 0.25
+> released 2008-11-28
+
+* Jenkins HASH added.
+* Update of Murmur hash code
+* Support explicit weights (Robey Pointer, Evan Weaver)
+* Bugfix for ketama continuum (Robey Pointer)
+* New behavior MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY (Robey Pointer)
+* Don't ever call stats for weighting servers, because it is unstable.
+
+## v 0.24
+> released 2008-09-16
+
+* Cleanup compile warnings.
+* Fix issues in partitioning by keys.
+* Fixed "fail case" to make sure when calling memcached_clone() no memcached_st is over written.
+* New memcached_server_by_key() method for finding a server from a key.
+* memcached_server_free() was added for freeing server structures.
+
+
+## v 0.23
+> released 2008-09-07
+
+* Added strings.h header for Solaris 9
+* Solaris 64bit fix.
+* Support for weighted Ketama from Yin Chen.
+* Fix for Chinese 
+* Fix for 0 length key to trigger bad key.
+* Added behaviors MEMCACHED_BEHAVIOR_SND_TIMEOUT, MEMCACHED_BEHAVIOR_RCV_TIMEOUT
+* Support for Binary Protocol added
+
+## v 0.22
+> released 2008-07-14
+
+* Fix where master key was no being checked for "bad key"
+* Fixed bugs in stats output (thread output was wrong)
+* Clarified MEMCACHED_BAD_KEY_PROVIDED is return for bad prefix key.
+* Found a bug in Flags return (Jacek Ostrowski)
+* Fixed issue with compiling on Visual Studio
+
+## v 0.21
+> released 2008-05-24
+
+* Change of char * to const char * for all key based functions.
+* New  MEMCACHED_CALLBACK_PREFIX_KEY added. You can now create domains for values.
+* Fixed bug introducd in last version on memcp
+* Fix for death of file io to call shutdown()
+
+## v 0.20
+> released 2008-05-05
+
+* New consistent distribution tests.
+* Found a memory leak when a server constantly fails.
+* Fix in watchpoint macro
+* Changed default timeout to 1 second for poll timeouts
+* Wheel uses less memory/dynamic allocation for size (no longer limited to 512 hosts by default.
+* memslap memory leak fix
+* Added Ketama distribution
+* Fix assert.h compile problem on CentOS
+
+## v 0.19
+> released 2008-04-09
+
+* Documentation fix in libmemcached.
+* Fixed bug where sort was always occuring on hosts
+* Logic fix in branch prediction (thanks Jay!)
+* Read through cached support.
+* Fixed for cas by key operation.
+* Fix for memcached_server_st list structures to have correct count.
+* Added callback MEMCACHED_CALLBACK_DELETE_TRIGGER
+* Removed function call in favor of macro (aka cut out some instructions)
+
+
+## v 0.18
+> released 2008-03-17
+
+* Fix plus tests for non-zero value objects and flags.
+* MEMCACHED_HASH_MURMUR added for murmur algorithm provided.
+* MEMCACHED_BEHAVIOR_RETRY_TIMEOUT added to keep connecting from looping on timeout.
+* gcc branch prediction optimizations
+* Refactored entire tree to make include files cleaner
+* Fixed leaked socket.
+
+## v 0.17
+> released 2008-02-27
+
+* MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT added for connect timeout in non-block mode.
+* Incompatible change in memcached_behavior_set() api. We now use a uint64_t, instead of a pointer.
+* Fix for storage of values for zero.
+* memcached_server_cursor() function added to API for cycling through servers.
+
+## v 0.16
+> released 2008-02-18
+
+* Work on the UDP protocol
+* Added get_by_key, set_by_key tests for C++ API
+* Fix for limit_maxbytes to be 64bit in stats
+* Added Atom Smasher test (scale baby, scale!)
+* Servers are now sorted, meaning that servers are now ordered so that clients with the same lists, will have same distribution. (Idea from Ross McFarland). MEMCACHED_BEHAVIOR_SORT_HOSTS was added to enable this support.
+* Added MEMCACHED_BAD_KEY_PROVIDED error for auto, set, and get operations.  MEMCACHED_BEHAVIOR_VERIFY_KEY was added to enable this feature.
+* More error messages on command line tools.
+* Fixed bugs in memcached_cas() operator.
+* Fix to loop through interfaces
+
+## v 0.15
+> released 2008-01-29
+
+* More work on the C++ API.
+* Bug fixes around block corner cases.
+* Slight performance increase in both read() and write().
+
+## v 0.14
+> released 2008-01-22
+
+* For for bug found by Evan Weaver where increment() was not returning propper error of value was not found.
+* Fix for bad null pointer on flag by Toru Maesaka.
+* Refactor of all IO to just pass in the active server
+* Problem configuring (PKG_CHECK_MODULES) fixed by removal of "rpath" in support/libmemcached.pc.in (Thanks to Ross McFarland).
+* Added memcached_callback_get()/set()
+* First prototype of C++ interface
+* Updated docs for uint16_t changes in previous release
+
+## v 0.13
+> released 2008-01-13
+
+* MEMCACHED_BEHAVIOR_USER_DATA added to store user pointer.
+* Fix for failure to connect to invalidate socket.
+* Patch from Marc Rossi to add --hash option for memcp, memrm, and memcat.
+* Kevin's patch for fixing EOF issues during a read.
+* Toru Maesaka patch for stats mismatch
+* Fix for when CRC return 0
+* Fixed uint16_t issues around flags. Turns out the documentation on the protocol was wrong.
+* Lingering socket fixes for FreeBSD.
+* Patches from Kevin Dalley for FreeBSD 4.0
+* Added multi delete functions.
+* All get key returns have C style null termination
+* If memcached_server_list_append is passed NULLs instead of pointers it returns NULL.  
+* Added memcached_fetch_execute() method
+* Found a bug where memcached_fetch() was not null terminating the result value.
+* memcached_behavior() now has the ability to set "buffering" so that data is not automatically flushed.
+* Behavior change, buffered commands now return MEMCACHED_BUFFERED
+
+## v 0.12
+> released 2007-12-11
+
+* Updates for consistent hashing
+* IPV6 support
+* Static allocation for hostname (performance)
+* Fixed bug where in non-block mode all data might not have been sent on close().
+* Refactor of memcached_get() to use common code.
+* Change in value fetch, MEMCACHED_END is now returned when keys are no longer in the pipe.
+* Fixed bug where key could be out of range of characters
+* Added _by_key() methods to allow partitioning of values to particular servers.
+* MEMCACHED_DEFAILT_TIMEOUT is now set to a non -1 value.
+* Performance improvements in get operations.
+
+## v 0.11
+> released 2007-11-26
+
+* Added option to memcache_behavior_set() so that poll() can be timed out.
+* Fixed memory leak in case of using memcached_fetch_result() where no value was returned.
+* Bug fixed in memcached_connect() which would cause servers that did not need to be enabled to be enabled (performance issue).
+* Rewrote bounds checking code for get calls.
+* "make test" now starts its own memcached servers.
+* Added Hseih hash (MEMCACHED_HASH_HSIEH), which is showing about 7% performance over standard hash.
+
+## v 0.10
+> released 2007-11-21
+
+* Added append binary test.
+* Added MEMCACHED_BEHAVIOR_CACHE_LOOKUPS behavior so that you can save on multiple DNS lookups.
+* Added CAS support, though this is optional and must be enabled during runtime.
+* Added the utility memerror to create human readable error strings from memcached errors (aka convert ints to strings)
+* Fixed type in MEMCACHED_HOST_LOOKUP_FAILURE
+* Fixed bug where hostname might not be null terminated
+* Moved to using gethostbyname_r() on Linux to solve thread safety issue
+* Added -rpath support for pkg-config
+* Documentation fix for hash setting using memcached_behavior_set()
+
+## v 0.9
+> released 2007-11-15
+
+* fix for when no servers are definied.
+* different buffers are now kept for different connections to speed up async efforts
+* Modified increment/decrement functions to return uint64_t values
+* Fixed bug in cases where zero length keys were provided
+* Thread cleanup issue in memslap
+* No hostname lookup on reconnect
+* Fix for flag settings (was doing hex by accident!)
+* Support for 1.2.4 server additions "prepend" and "append" added.
+* Added memcached_version()... not sure if I will make this public or not.
+
+## v 0.8
+> released 2007-11-05
+
+* Adding support for CRC hash method 
+* Adding support for UNIX sockets
+* Added additional HASHing methods of FNV1_64,FNV1A_64, FNV1_32, FNV1A_32
+* Added pkgconfig support (PKG_CHECK_MODULES)
+* Fixed conflict with defined type in MySQL
+* Added memcached_result_st structure and functions to manipulate it.
+
+## v 0.7
+> released 2007-10-30
+
+* Poved to poll() from select()
+* Fixes in internal string class for allocation of large numbers of strings.
+* memcached_mget() function now sends keys as it parses them instead of building strings as it goes.
+* Propper flush now for making sure we get all IO sent even when in non-block mode.
+* Added --enable-debug rule for configure
+* All asserts() removed (hey this is going into production!)
+
+
+## v 0.6
+> released 2007-10-17
+
+* get value returns are now null terminated (request by Cal Heldenbrand) 
+* Fixed connections for more hosts then two.
+* Rewrite of the read/write IO systems to handle different sorts of host failures.
+* Added man pages for all functions and tools
+* Raised buffer size for readinng/writing to 16K
+* You can now optionally set the socket size for recv/send via memached_behavior_set/get.
+
+## v 0.5
+> released 2007-10-09
+
+* Ruby maintainer mentioned TCP_NODELAY patch he had added. Added this to C
+  library as well. (Eric Hodel drbrain@segment7.net)
+* Added support script for set_benchmark
+* Updated memslap to allow testing of TCP_NODELAY
+* Updated memslap to support --flush (aka dump memcache servers before testing)
+* Fixed bug in multiple hosts not being activated
+* Added environmental variable MEMCACHED_SERVERS which can be used to set the servers list.
+* fixed memcached_stat method (and now memstat works)
+* server connect now happens on demand.
+* Help for all command line applications
+
+## v 0.4
+> released 2007-10-03
+
+* Added buffered IO to write calls for keys
+* Added buffered IO for reads
+* memstat was broken (bad if/else on connect)
+* New non-blocking IO (not default yet). Mucho faster
+* Refactor of test system.
+* memslap crash solved
+
+## v 0.3
+> released 2007-10-01
+
+* Jeff Fisher <guppy@techmonkeys.org> provided a spec file
+* Added "make rpm" around dist file
+* Added support for Solaris
+* Added support for DTrace
+* Fixed read to be recv and write to be send
+* Bug fix where memstat would core if no server was found
+* Added memslap tool (load generator)
+* Numerous bug fixes in library
+* Added calls to library for creating host lists (see text cases to understand how to use this).
+
+## v 0.2
+> released 2007-09-27
+
+* First public version
diff --git a/ChangeLog-1.0.md b/ChangeLog-1.0.md
new file mode 100644 (file)
index 0000000..08445df
--- /dev/null
@@ -0,0 +1,122 @@
+# ChangeLog v1.0
+
+## v 1.0.18
+> released 2014-02-09
+
+* MEMCACHED_BEHAVIOR_RETRY_TIMEOUT can now be set to zero.
+* Numerous bug fixes.
+
+## v 1.0.17
+> released 2013-04-03
+
+* Remove c++ namespace that was being exposed (the API should be plug compatible)..
+* Fix cases where --servers wasn't behaving the same in all clients.
+
+## v 1.0.16
+> released 2013-02-01
+
+* Added support to do two part shutdown of socket.
+* Fixes for Fedora 18.
+* Fix for binary memcached_touch()
+
+## v 1.0.15
+> released 2012-12-17
+
+* Added support for Murmur3 (HASHKIT_HASH_MURMUR3)
+* Portability fixes.
+
+## v 1.0.14
+> released 2012-11-14
+
+* CLIENT_ERROR fixed to not be treated as a fatal error.
+* Compiler fixes for older Ubuntu releases.
+
+## v 1.0.13
+> released 2012-10-19
+
+* Fix bug that caused version string to not be exported correctly.
+
+## v 1.0.12
+> released 2012-10-09
+
+* Added memcached_result_take_value().
+* Added ax_libmemcached.m4
+
+## v 1.0.11
+> released 2012-09-17
+
+* Removed custom version of memcached.
+* Updated hardening rules.
+* Fixed a case where the return error from a socket connection differred from that of a TCP/IP socket.
+
+## v 1.0.10
+> released 2012-07-30
+
+* --disable-assert has been removed from configure, and --enable-assert has been added in its place.
+* Compiling fixes for Clang on OSX Mountain Lion.
+
+## v 1.0.9
+> released 2012-07-05
+
+* Faster close on socket.
+* Instance allocation is now seperated from server interface. 
+  This should allow for a better preservation of ABI compliance from now on.
+* Fix close on exec bug.
+* Numerous other bug fixes.
+
+## v 1.0.8
+> released 2012-05-22
+
+* Added support for setting options via ENV variable LIBMEMCACHED
+* Fix corner case on last used result.
+
+## v 1.0.7
+> released 2012-04-28
+
+* Add API call for exist calls.
+* Update all license files to be BSD.
+
+## v 1.0.6
+> released 2012-04-08
+
+* Fixes for gcc 4.7, lp:961812
+* Fix for restart issue that happens under testing.
+* Fix for lp:962815.
+* Support for transparent AES encryption.
+
+## v 1.0.5
+> released 2012-03-14
+
+* Fixes for OSX.
+* Version is now parsed directly in the parser, which makes buffered operations now work with it..
+* memstat has been extended so that it can be used to find the version of the server.
+* Update documentation.
+* Fixes for compile issues on Debian and Ubuntu
+
+## v 1.0.4
+> released 2012-01-27
+
+* Fix for memcached_dump().
+* Additional testing for memcached_stat_execute().
+
+## v 1.0.3
+> released 2012-01-09
+
+* Increased size of sort buffer used during Ketama.
+* Added support for new behavior to handle dead servers.
+* Overall haul of UDP IO.
+* Fixed C compile issue with memcached_exist()
+* Numerous bug fixes.
+* Clang support for OSX.
+* All commands now using vector send support.
+
+## v 1.0.2
+> released 2011-10-24
+
+* Dropped libmemcached/memcached_util.h (undocumented header file)
+* Added memcached_touch() and memcached_touch_by_key()
+* UDP support restructured to toggle on a complete memcached_st structure.
+
+---
+
+See [ChangeLog-0](./ChangeLog-0.md) for changes prior v1.0.
diff --git a/ChangeLog-1.1.md b/ChangeLog-1.1.md
new file mode 100644 (file)
index 0000000..4654055
--- /dev/null
@@ -0,0 +1,106 @@
+# ChangeLog v1.1
+
+## v 1.1.0 
+
+**NOTE:**  
+This is a bug fix release, not a feature release. The minor version number
+was incremented due to the following changes:
+
+* Ported build system to CMake.
+* Ported test suite to Catch2.
+* Build requires C++11 compiler support.
+* Tests require C++17 compiler support.
+* Moved the project from launchpad to github: 
+    * Source: https://github.com/m6w6/libmemcached
+    * Documentation: https://m6w6.github.io/libmemcached
+    * Continuous Integration:
+        * Github: https://github.com/m6w6/libmemcached/actions (Linux, MacOS **·** amd64)
+        * Travis: https://travis-ci.org/m6w6/libmemcached (Linux **·** arm64, ppc64le, s390x)
+        * Cirrus: https://cirrus-ci.com/m6w6/libmemcached (FreeBSD **·** amd64)
+  
+> released YYYY-MM-DD
+
+* Fix build failure due to comparison of incompatible types in bin/memflush and bin/memstat.
+* Fix wrong type of memcached_instance_st::server_timeout_counter_query_id from uint32_t to uint64_t.
+* Fix memcached_dump():
+  returned MEMCACHED_CLIENT_ERROR on request to dump illegal slab id.
+* Fix bin/memcapable:
+  failed with "No hostname was provided" when providing a hostname.
+* Fix hashkit/murmur and hashkit/murur3:
+  undefined behavior on platforms requiring aligned access.
+* Fix Memcache::set():
+  possible subscription of empty vector.
+* Fix libmemcached_util_version_check().
+* Fix ketama/consistent hashing:
+  crash on reallocation of continuum.
+* Fix [gh #90](https://github.com/m6w6/libmemcached/issues/90):
+  Build fails on Darwin.
+* Fix [gh #83](https://github.com/m6w6/libmemcached/issues/83):
+  memcp waits forever if file no found.
+* Fix [gh #80](https://github.com/m6w6/libmemcached/issues/80):
+  memparse docs.
+* Fix [gh #72](https://github.com/m6w6/libmemcached/issues/72)
+  and [gh #47](https://github.com/m6w6/libmemcached/issues/47):
+  memcached_return_t docs.
+* Fix [gh #62](https://github.com/m6w6/libmemcached/issues/62):
+  uint32_t overflow cause busy loop.
+* Removed restriction of UDP+IPv6.
+* Fix SERVER_ERROR_MEMORY_ALLOCATION_FAILURE: 
+  recognize more strings returned by the server.
+* Fix [gh #13](https://github.com/m6w6/libmemcached/issues/13):
+  reset continuum counter after freeing them.
+* Fix [gh #14](https://github.com/m6w6/libmemcached/issues/14)
+  and [gh #17](https://github.com/m6w6/libmemcached/issues/17):
+  SASL: AUTH_CONTINUE was considered a failure and caused IO reset.
+* Fix [gh #25](https://github.com/m6w6/libmemcached/issues/25):
+  hashkit/murmur3 unavailable.
+* Fix missing handling of EAGAIN for non-blocking unix domain socket.
+* Fix [gh #35](https://github.com/m6w6/libmemcached/issues/35):
+  handling of BEHAVIOR_REMOVE_FAILED_SERVERS.
+* Fix [gh #41](https://github.com/m6w6/libmemcached/issues/41):
+  ensure stable sort on continuum host key collision.
+* Fix [gh #42](https://github.com/m6w6/libmemcached/issues/42):
+  MEMCACHED_MAX_BUFFER docs.
+* Fix [gh #43](https://github.com/m6w6/libmemcached/issues/43):
+  libmemcached_configuration docs.
+* Fix [gh #46](https://github.com/m6w6/libmemcached/issues/46):
+  clarification on millisecond timeout docs.
+* Fix [gh #50](https://github.com/m6w6/libmemcached/issues/50):
+  memcached_fetch_result() can return previously returned data.
+* Fix [gh #53](https://github.com/m6w6/libmemcached/issues/53):
+  stack overflow in memcached_fetch_result().
+* Fix [gh #57](https://github.com/m6w6/libmemcached/issues/57):
+  include <inttypes.h> vs <cinttypes>
+* Fix [gh #58](https://github.com/m6w6/libmemcached/issues/58):
+  more specific error messages when connect() fails.
+* Fix [gh #59](https://github.com/m6w6/libmemcached/issues/59):
+  bin/memcat: typo in "No servers provied".
+* Fix [gh #77](https://github.com/m6w6/libmemcached/issues/77):
+  undeclared UINT64_C in ketama.cc.
+* Fix [gh #12](https://github.com/m6w6/libmemcached/issues/12):
+  never reconnects after connection reset (binary protocol).
+* Fix [gh #49](https://github.com/m6w6/libmemcached/issues/49):
+  assertion memcached_failed(rc) failed in memcached_send_ascii().
+* Fix [gh #67](https://github.com/m6w6/libmemcached/issues/67):
+  get returns NOTFOUND on timeout.
+* Fix [gh #76](https://github.com/m6w6/libmemcached/issues/76):
+  memcached_touch() crashes when expiration=-1 (ASCII only).
+* Fix [gh #23](https://github.com/m6w6/libmemcached/issues/23):
+  build fails with bison 2.3.
+* Fix memaslap: build fails with newer compiler versions.
+* Fix usage of strerror_r() implementations returning pointer to char.
+* Fix pipelining commands with memcached >= 1.6.
+* Fixed memcached_stat_get_value(): buffer overflow.
+* Fix memcached_stat(): undefined behavior due to unintialized memcached_return_t.
+* Fix SASL tests: requires SASL_PWDB_CONF.
+* Fix bin/memaslap to idnentify itself as memaslap instead of memslap.
+* Fix bin/memcapable to work with memcached >= 1.6.
+* Fix murmur and murmur3 hashes on big endian platforms.
+* Fix [gh #82](https://github.com/m6w6/libmemcached/issues/82),
+  [gh #64](https://github.com/m6w6/libmemcached/issues/64) and
+  [gh #21](https://github.com/m6w6/libmemcached/issues/21):
+  clarify documentation on replication.
+
+---
+
+See [ChangeLog-1.0](./ChangeLog-1.0.md) for changes prior v1.1.
deleted file mode 100644 (file)
index 85df3e3606e214f58f0821a3b0ce6567b9b3e24b..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1,733 +0,0 @@
-# ChangeLog
-## 1.1.0 
-
-**NOTE:**  
-This is not a feature, but a bug fix release. The minor version number
-has been incremented due to the following changes:
-
-* Ported build system to CMake.
-* Ported tests to Catch2.
-* Build requires C++11 compiler support.
-* Tests require C++17 compiler support.
-* Moved the project from launchpad to github: 
-    * Source: https://github.com/m6w6/libmemcached
-    * Documentation: https://m6w6.github.io/libmemcached
-    * Continuous Integration:
-        * Github: https://github.com/m6w6/libmemcached/actions (Linux, MacOS **·** amd64)
-        * Travis: https://travis-ci.org/m6w6/libmemcached (Linux **·** arm64, ppc64le, s390x)
-        * Cirrus: https://cirrus-ci.com/m6w6/libmemcached (FreeBSD **·** amd64)
-  
-> released 2020-10-31
-
-* Fix build failure due to comparison of incompatible types in bin/memflush and bin/memstat.
-* Fix wrong type of memcached_instance_st::server_timeout_counter_query_id from uint32_t to uint64_t.
-* Fix memcached_dump():
-  returned MEMCACHED_CLIENT_ERROR on request to dump illegal slab id.
-* Fix bin/memcapable:
-  failed with "No hostname was provided" when providing a hostname.
-* Fix hashkit/murmur and hashkit/murur3:
-  undefined behavior on platforms requiring aligned access.
-* Fix Memcache::set():
-  possible subscription of empty vector.
-* Fix libmemcached_util_version_check().
-* Fix ketama/consistent hashing:
-  crash on reallocation of continuum.
-* Fix [gh #90](https://github.com/m6w6/libmemcached/issues/90):
-  Build fails on Darwin.
-* Fix [gh #83](https://github.com/m6w6/libmemcached/issues/83):
-  memcp waits forever if file no found.
-* Fix [gh #80](https://github.com/m6w6/libmemcached/issues/80):
-  memparse docs.
-* Fix [gh #72](https://github.com/m6w6/libmemcached/issues/72)
-  and [gh #47](https://github.com/m6w6/libmemcached/issues/47):
-  memcached_return_t docs.
-* Fix [gh #62](https://github.com/m6w6/libmemcached/issues/62):
-  uint32_t overflow cause busy loop.
-* Removed restriction of UDP+IPv6.
-* Fix SERVER_ERROR_MEMORY_ALLOCATION_FAILURE: 
-  recognize more strings returned by the server.
-* Fix [gh #13](https://github.com/m6w6/libmemcached/issues/13):
-  reset continuum counter after freeing them.
-* Fix [gh #14](https://github.com/m6w6/libmemcached/issues/14)
-  and [gh #17](https://github.com/m6w6/libmemcached/issues/17):
-  SASL: AUTH_CONTINUE was considered a failure and caused IO reset.
-* Fix [gh #25](https://github.com/m6w6/libmemcached/issues/25):
-  hashkit/murmur3 unavailable.
-* Fix missing handling of EAGAIN for non-blocking unix domain socket.
-* Fix [gh #35](https://github.com/m6w6/libmemcached/issues/35):
-  handling of BEHAVIOR_REMOVE_FAILED_SERVERS.
-* Fix [gh #41](https://github.com/m6w6/libmemcached/issues/41):
-  ensure stable sort on continuum host key collision.
-* Fix [gh #42](https://github.com/m6w6/libmemcached/issues/42):
-  MEMCACHED_MAX_BUFFER docs.
-* Fix [gh #43](https://github.com/m6w6/libmemcached/issues/43):
-  libmemcached_configuration docs.
-* Fix [gh #46](https://github.com/m6w6/libmemcached/issues/46):
-  clarification on millisecond timeout docs.
-* Fix [gh #50](https://github.com/m6w6/libmemcached/issues/50):
-  memcached_fetch_result() can return previously returned data.
-* Fix [gh #53](https://github.com/m6w6/libmemcached/issues/53):
-  stack overflow in memcached_fetch_result().
-* Fix [gh #57](https://github.com/m6w6/libmemcached/issues/57):
-  include <inttypes.h> vs <cinttypes>
-* Fix [gh #58](https://github.com/m6w6/libmemcached/issues/58):
-  more specific error messages when connect() fails.
-* Fix [gh #59](https://github.com/m6w6/libmemcached/issues/59):
-  bin/memcat: typo in "No servers provied".
-* Fix [gh #77](https://github.com/m6w6/libmemcached/issues/77):
-  undeclared UINT64_C in ketama.cc.
-* Fix [gh #12](https://github.com/m6w6/libmemcached/issues/12):
-  never reconnects after connection reset (binary protocol).
-* Fix [gh #49](https://github.com/m6w6/libmemcached/issues/49):
-  assertion memcached_failed(rc) failed in memcached_send_ascii().
-* Fix [gh #67](https://github.com/m6w6/libmemcached/issues/67):
-  get returns NOTFOUND on timeout.
-* Fix [gh #76](https://github.com/m6w6/libmemcached/issues/76):
-  memcached_touch() crashes when expiration=-1 (ASCII only).
-* Fix [gh #23](https://github.com/m6w6/libmemcached/issues/23):
-  build fails with bison 2.3.
-* Fix memaslap: build fails with newer compiler versions.
-* Fix usage of strerror_r() implementations returning pointer to char.
-* Fix pipelining commands with memcached >= 1.6.
-* Fixed memcached_stat_get_value(): buffer overflow.
-* Fix memcached_stat(): undefined behavior due to unintialized memcached_return_t.
-* Fix SASL tests: requires SASL_PWDB_CONF.
-* Fix bin/memaslap to idnentify itself as memaslap instead of memslap.
-* Fix bin/memcapable to work with memcached >= 1.6.
-* Fix murmur and murmur3 hashes on big endian platforms.
-* Fix [gh #82](https://github.com/m6w6/libmemcached/issues/82),
-  [gh #64](https://github.com/m6w6/libmemcached/issues/64) and
-  [gh #21](https://github.com/m6w6/libmemcached/issues/21):
-  clarify documentation on replication.
-
----
-
-## 1.0.18
-> released 2014-02-09
-
-* MEMCACHED_BEHAVIOR_RETRY_TIMEOUT can now be set to zero.
-* Numerous bug fixes.
-
-## 1.0.17
-> released 2013-04-03
-
-* Remove c++ namespace that was being exposed (the API should be plug compatible)..
-* Fix cases where --servers wasn't behaving the same in all clients.
-
-## 1.0.16
-> released 2013-02-01
-
-* Added support to do two part shutdown of socket.
-* Fixes for Fedora 18.
-* Fix for binary memcached_touch()
-
-## 1.0.15
-> released 2012-12-17
-
-* Added support for Murmur3 (HASHKIT_HASH_MURMUR3)
-* Portability fixes.
-
-## 1.0.14
-> released 2012-11-14
-
-* CLIENT_ERROR fixed to not be treated as a fatal error.
-* Compiler fixes for older Ubuntu releases.
-
-## 1.0.13
-> released 2012-10-19
-
-* Fix bug that caused version string to not be exported correctly.
-
-## 1.0.12
-> released 2012-10-09
-
-* Added memcached_result_take_value().
-* Added ax_libmemcached.m4
-
-## 1.0.11
-> released 2012-09-17
-
-* Removed custom version of memcached.
-* Updated hardening rules.
-* Fixed a case where the return error from a socket connection differred from that of a TCP/IP socket.
-
-## 1.0.10
-> released 2012-07-30
-
-* --disable-assert has been removed from configure, and --enable-assert has been added in its place.
-* Compiling fixes for Clang on OSX Mountain Lion.
-
-## 1.0.9
-> released 2012-07-05
-
-* Faster close on socket.
-* Instance allocation is now seperated from server interface. 
-  This should allow for a better preservation of ABI compliance from now on.
-* Fix close on exec bug.
-* Numerous other bug fixes.
-
-## 1.0.8
-> released 2012-05-22
-
-* Added support for setting options via ENV variable LIBMEMCACHED
-* Fix corner case on last used result.
-
-## 1.0.7
-> released 2012-04-28
-
-* Add API call for exist calls.
-* Update all license files to be BSD.
-
-## 1.0.6
-> released 2012-04-08
-
-* Fixes for gcc 4.7, lp:961812
-* Fix for restart issue that happens under testing.
-* Fix for lp:962815.
-* Support for transparent AES encryption.
-
-## 1.0.5
-> released 2012-03-14
-
-* Fixes for OSX.
-* Version is now parsed directly in the parser, which makes buffered operations now work with it..
-* memstat has been extended so that it can be used to find the version of the server.
-* Update documentation.
-* Fixes for compile issues on Debian and Ubuntu
-
-## 1.0.4
-> released 2012-01-27
-
-* Fix for memcached_dump().
-* Additional testing for memcached_stat_execute().
-
-## 1.0.3
-> released 2012-01-09
-
-* Increased size of sort buffer used during Ketama.
-* Added support for new behavior to handle dead servers.
-* Overall haul of UDP IO.
-* Fixed C compile issue with memcached_exist()
-* Numerous bug fixes.
-* Clang support for OSX.
-* All commands now using vector send support.
-
-## 1.0.2
-> released 2011-10-24
-
-* Dropped libmemcached/memcached_util.h (undocumented header file)
-* Added memcached_touch() and memcached_touch_by_key()
-* UDP support restructured to toggle on a complete memcached_st structure.
-
-## 0.53
-> released 2011-09-27
-
-* Fix for FreeBSD/OpenBSD and -lm
-* Added memcached_exist()
-* Fix for memory when using config test.
-* CLI gained --quiet
-
-## 0.52
-> released 2011-09-12
-
-* Build fixes for Ubuntu/Suse.
-* Fixes for OSX Lion.
-* Bug fix for looping back through dns lookups under certain failures.
-* Fixes related to dead server failures.
-
-## 0.51
-> released 2011-07-21
-
-* memcached_callback_set() now takes its data argument as const
-* Update to tests.
-* Fix in parser for port number.
-
-## 0.50
-> released 2011-06-20
-
-* Updates to C++ interface 
-* Custom free allocators need to now check for value before calling free.
-* memcached_fetch_result() now uses the internal result when available (about 25 to 50% faster).
-* Fix for stats structure.
-* Updates to documentation.
-* memcached_fetch_result() now uses the internal result when available (about 25 to 50% faster).
-
-## 0.49
-> released 2011-04-14
-
-* Fix calls to auto methods so that if value is not passed in nothing bad happens.
-* New parser calls for generating memcached_st objects.
-* New error system.
-* New flow control for messages means faster get/set calls.
-* Added new documentation system.
-* A behavior change has been now made that if you specify a weight for any server, we enable the weight flag and do weight balancing.  
-* Added MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS to simplify the setting of AUTO REJECT for servers.
-
-## 0.48
-> released 2011-03-16
-
-* Fix memory leak in server parse.
-* Move test framework out to be its own library (easier to work with Gearman).
-
-
-## 0.47
-> released 2011-02-24
-
-* Additional fixes for OpenBSD.
-* Bug fix 677609, 456080.
-* SIGPIPE fix for Linux send(). 
-* memcapable can now test ascii or binary based on flags.
-* Additional build fixes for SASL.
-
-
-## 0.46
-> released 2011-02-14
-
-* Fixes a number of corner case bugs.
-* Fixes related to OpenBSD.
-* Better testing for protocol version.
-* Removes special case infinite wait on blocking setup.
-
-## 0.45
-> released 2011-02-09
-
-* Add support for systemtap
-
-## 0.44
-> released 2010-09-23
-
-* Windows bug fixes.
-* Hudson port support in test harness.
-* Improved portability of test hanrness.
-* SASL fixes.
-
-## 0.43
-> released 2010-07-28
-
-* Added --args to memstat so that a greater range of values can be returned.
-* Prelimanary support for Windows.
-* memcached_stat_execute() merged. 
-
-## 0.42
-> released 2010-07-06
-
-* Mistake in libtool caused issue with library version
-
-## 0.41
-> released 2010-06-30
-
-* Added --file for memcat.
-* Added limemcached_ping() to libmemcached_util
-* Bugfix for some cases where connect would have issues with timeout.
-* Wrong value for errno given as error on an IO failure inside of poll.
-* Bug fix for issue where multiple interfaces with bad DNS were not being caught.
-
-## 0.40
-> released 2010-04-23
-
-* Placed retry logic in for busted resolvers
-* Add an ignore for SIGPIPE to solve OSX issues.
-* A couple of fixed for memcached_light server.
-* Updated to debug mode to track io_wait
-
-## 0.39
-> released 2010-04-06
-
-* Add support for prefix keys to binary protocol.
-* Remove the undocumented call memcached_server_remove().
-* The undocumented call memcached_server_by_key() now returns const.
-* memcached_server_error_reset() has been deprecated.
-* memcached_server_list() has been deprecated. Use memcached_server_cursor() to walk the servers found in a memcached_st() structure.
-* memcached_verbosity() can now be run concurrently with other operations.
-* SASL support.
-* Fixes memory leak found in EJECT HOSTS.
-
-## 0.38
-> released 2010-02-10
-
-* C++ interface for libhashkit.
-* Modified memcached_set_memory_allocators() so that it requires a context pointer.
-* memcached_clone() now runs 5 times faster.
-* Functions used for callbacks are now given const memcached_st.
-* Added MEMCACHED_BEHAVIOR_CORK.
-* memslap now creates a configuration file at ~/.memslap.cnf
-* memcached_purge() now calls any callbacks registered during get execution.
-* Many fixes to memslap.
-* Updates for memcapable.
-* Compile fixes for OpenBSD.
-* Fix for possible recursive decent on IO failure.
-
-## 0.37
-> released 2010-01-12
-
-* Fixed build for libhashkit.
-* Fixed install path regression.  
-* Modified RPM to strict check install. 
-* Added documentation for memcached_server_cursor();
-* Added memcached_servers_reset().
-* Modified memcached_st to remove dead cursor_server member.
-
-## 0.36
-> released 2010-01-07
-
-* Merged in new memslap utility.
-* All of constants.h has been updated to match style (all old identifiers continue to work).
-* Added first pass for libhashkit.
-* Updated test Framework/extended tests.
-* Random read support during replication added.
-* Modified use_sort so that the option can be applied to any distribution type.
-* We removed the MEMCACHED_BEHAVIOR_KETAMA_COMPAT_MODE added in 0.35. Instead use memcached_behavior_set_distribution().
-
-## 0.35
-> released 2009-11-09
-
-* Added support for by_key operations for inc/dec methods.
-* Added mget test to memslap.
-* Support for compatible ketama for SpyMemcached
-* Update C++ interface.
-* Fix for memcp
-
-## 0.34
-> released 2009-10-13
-
-* Added support for setting behavior flags on a connection pool.
-* Don't increment server_failure_counter on normal disconnects.
-* Added prototype for a callback based protocol parser (server side) with examples so that you could let your own application speak the memcached protocol
-* Updated memcapable to test ASCII protocol.
-* Changed behavior so that server can be removed at first sign of failure.
-* Added memcached_server_get_last_disconnect() call
-
-## 0.33
-> released 2009-09-23
-
-* Added memcapable to test servers for binary compatibility.
-* Updated C++ interface. Added basic support for C++ exceptions. Added multiple constructors the memcached client object. The C++ interface now takes parameters which are C++ types (such as std::string).
-* Several bug fixes for binary protocol support.
-* Fixed crashing issue with dumping from memcachd server (server internals were changed without documenting change).
-
-## 0.32
-> released 2009-09-15
-
-* Change of behavior where linger is only modified for no-block and then it is set to zero.
-* Added Twitter's memcached_server_error() functions.
-* Fix for OSX compiles in development builds.
-* Updated C++ interface.
-* Updated memcached_mget and memcached_mget_by_key to take a size_t as a parameter instead of an unsigned int for number_of_keys.
-
-## 0.31
-> released 2009-07-10
-
-* Added support or HA via replication.
-* malloc() removed for server key usage.
-* Update build system.
-* Added support for memcached_set_memory_allocators().
-* Fixed bug in configure.ac for have_htoll.
-
-## 0.30
-> released 2009-06-01
-
-* Added memcachd_dump command (and framework for memdump tool).
-* Realigned all structures to remove padding (and line up important bits for 64bit caches.
-* Remove some of sprintf() in storage calls().
-* Removed printf() in stat call for unknown stat member.
-* memcached_generate_hash() function added.
-* Added tests to make sure all hash functions are stable.
-
-## 0.29
-> released 2009-05-19
-
-* Fixed malloc usage to calloc for spots where we need zero filled memory. 
-* All code warnings now treated as errors.
-* Fixes for debian packaging.
-* Added new pooling mechanism.
-* MEMCACHED_BEHAVIOR_NO_BLOCK no longer also sets MEMCACHED_BEHAVIOR_BUFFER_REQUESTS.
-* Updated generic rpm.
-
-## 0.28
-> released 2009-04-15
-
-* Fixed bug in init sructure (reapplied)
-* Fixed bug in get/set by key (nikkhils@gmail.com)
-
-## 0.27
-> released 2009-03-30
-
-* Added new UDP fire-forget mode.
-* Reworked performance for mget() to better make use of async protocol
-* Cleaned up execution of fetch (just one set of code now)
-* Fixed Jenkin's for big endian hosts.
-* Updates for memstat to determine network latency.
-* Updates for binary protocol.
-* Many updates to documentation.
-
-## 0.26
-> released 2009-01-29
-
-* Fix for decrement on hash key
-* Fixed assert that was catching bad memset() call in host_reset()
-* Fix purge issue for blocked IO which has been stacked.
-
-## 0.25
-> released 2008-11-28
-
-* Jenkins HASH added.
-* Update of Murmur hash code
-* Support explicit weights (Robey Pointer, Evan Weaver)
-* Bugfix for ketama continuum (Robey Pointer)
-* New behavior MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY (Robey Pointer)
-* Don't ever call stats for weighting servers, because it is unstable.
-
-## 0.24
-> released 1970-01-01
-
-* Cleanup compile warnings.
-* Fix issues in partitioning by keys.
-* Fixed "fail case" to make sure when calling memcached_clone() no memcached_st is over written.
-* New memcached_server_by_key() method for finding a server from a key.
-* memcached_server_free() was added for freeing server structures.
-
-
-## 0.23
-> released 2008-09-07
-
-* Added strings.h header for Solaris 9
-* Solaris 64bit fix.
-* Support for weighted Ketama from Yin Chen.
-* Fix for Chinese 
-* Fix for 0 length key to trigger bad key.
-* Added behaviors MEMCACHED_BEHAVIOR_SND_TIMEOUT, MEMCACHED_BEHAVIOR_RCV_TIMEOUT
-* Support for Binary Protocol added
-
-## 0.22
-> released 2008-07-14
-
-* Fix where master key was no being checked for "bad key"
-* Fixed bugs in stats output (thread output was wrong)
-* Clarified MEMCACHED_BAD_KEY_PROVIDED is return for bad prefix key.
-* Found a bug in Flags return (Jacek Ostrowski)
-* Fixed issue with compiling on Visual Studio
-
-## 0.21
-> released 2008-05-24
-
-* Change of char * to const char * for all key based functions.
-* New  MEMCACHED_CALLBACK_PREFIX_KEY added. You can now create domains for values.
-* Fixed bug introducd in last version on memcp
-* Fix for death of file io to call shutdown()
-
-## 0.20
-> released 2008-05-05
-
-* New consistent distribution tests.
-* Found a memory leak when a server constantly fails.
-* Fix in watchpoint macro
-* Changed default timeout to 1 second for poll timeouts
-* Wheel uses less memory/dynamic allocation for size (no longer limited to 512 hosts by default.
-* memslap memory leak fix
-* Added Ketama distribution
-* Fix assert.h compile problem on CentOS
-
-## 0.19
-> released 2008-04-09
-
-* Documentation fix in libmemcached.
-* Fixed bug where sort was always occuring on hosts
-* Logic fix in branch prediction (thanks Jay!)
-* Read through cached support.
-* Fixed for cas by key operation.
-* Fix for memcached_server_st list structures to have correct count.
-* Added callback MEMCACHED_CALLBACK_DELETE_TRIGGER
-* Removed function call in favor of macro (aka cut out some instructions)
-
-
-## 0.18
-> released 2008-03-17
-
-* Fix plus tests for non-zero value objects and flags.
-* MEMCACHED_HASH_MURMUR added for murmur algorithm provided.
-* MEMCACHED_BEHAVIOR_RETRY_TIMEOUT added to keep connecting from looping on timeout.
-* gcc branch prediction optimizations
-* Refactored entire tree to make include files cleaner
-* Fixed leaked socket.
-
-## 0.17
-> released 2008-02-27
-
-* MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT added for connect timeout in non-block mode.
-* Incompatible change in memcached_behavior_set() api. We now use a uint64_t, instead of a pointer.
-* Fix for storage of values for zero.
-* memcached_server_cursor() function added to API for cycling through servers.
-
-## 0.16
-> released 2008-02-18
-
-* Work on the UDP protocol
-* Added get_by_key, set_by_key tests for C++ API
-* Fix for limit_maxbytes to be 64bit in stats
-* Added Atom Smasher test (scale baby, scale!)
-* Servers are now sorted, meaning that servers are now ordered so that clients with the same lists, will have same distribution. (Idea from Ross McFarland). MEMCACHED_BEHAVIOR_SORT_HOSTS was added to enable this support.
-* Added MEMCACHED_BAD_KEY_PROVIDED error for auto, set, and get operations.  MEMCACHED_BEHAVIOR_VERIFY_KEY was added to enable this feature.
-* More error messages on command line tools.
-* Fixed bugs in memcached_cas() operator.
-* Fix to loop through interfaces
-
-## 0.15
-> released 2008-01-29
-
-* More work on the C++ API.
-* Bug fixes around block corner cases.
-* Slight performance increase in both read() and write().
-
-## 0.14
-> released 2008-01-22
-
-* For for bug found by Evan Weaver where increment() was not returning propper error of value was not found.
-* Fix for bad null pointer on flag by Toru Maesaka.
-* Refactor of all IO to just pass in the active server
-* Problem configuring (PKG_CHECK_MODULES) fixed by removal of "rpath" in support/libmemcached.pc.in (Thanks to Ross McFarland).
-* Added memcached_callback_get()/set()
-* First prototype of C++ interface
-* Updated docs for uint16_t changes in previous release
-
-## 0.13
-> released 2008-01-13
-
-* MEMCACHED_BEHAVIOR_USER_DATA added to store user pointer.
-* Fix for failure to connect to invalidate socket.
-* Patch from Marc Rossi to add --hash option for memcp, memrm, and memcat.
-* Kevin's patch for fixing EOF issues during a read.
-* Toru Maesaka patch for stats mismatch
-* Fix for when CRC return 0
-* Fixed uint16_t issues around flags. Turns out the documentation on the protocol was wrong.
-* Lingering socket fixes for FreeBSD.
-* Patches from Kevin Dalley for FreeBSD 4.0
-* Added multi delete functions.
-* All get key returns have C style null termination
-* If memcached_server_list_append is passed NULLs instead of pointers it returns NULL.  
-* Added memcached_fetch_execute() method
-* Found a bug where memcached_fetch() was not null terminating the result value.
-* memcached_behavior() now has the ability to set "buffering" so that data is not automatically flushed.
-* Behavior change, buffered commands now return MEMCACHED_BUFFERED
-
-## 0.12
-> released 2007-12-11
-
-* Updates for consistent hashing
-* IPV6 support
-* Static allocation for hostname (performance)
-* Fixed bug where in non-block mode all data might not have been sent on close().
-* Refactor of memcached_get() to use common code.
-* Change in value fetch, MEMCACHED_END is now returned when keys are no longer in the pipe.
-* Fixed bug where key could be out of range of characters
-* Added _by_key() methods to allow partitioning of values to particular servers.
-* MEMCACHED_DEFAILT_TIMEOUT is now set to a non -1 value.
-* Performance improvements in get operations.
-
-## 0.11
-> released 2007-11-26
-
-* Added option to memcache_behavior_set() so that poll() can be timed out.
-* Fixed memory leak in case of using memcached_fetch_result() where no value was returned.
-* Bug fixed in memcached_connect() which would cause servers that did not need to be enabled to be enabled (performance issue).
-* Rewrote bounds checking code for get calls.
-* "make test" now starts its own memcached servers.
-* Added Hseih hash (MEMCACHED_HASH_HSIEH), which is showing about 7% performance over standard hash.
-
-## 0.10
-> released 2007-11-21
-
-* Added append binary test.
-* Added MEMCACHED_BEHAVIOR_CACHE_LOOKUPS behavior so that you can save on multiple DNS lookups.
-* Added CAS support, though this is optional and must be enabled during runtime.
-* Added the utility memerror to create human readable error strings from memcached errors (aka convert ints to strings)
-* Fixed type in MEMCACHED_HOST_LOOKUP_FAILURE
-* Fixed bug where hostname might not be null terminated
-* Moved to using gethostbyname_r() on Linux to solve thread safety issue
-* Added -rpath support for pkg-config
-* Documentation fix for hash setting using memcached_behavior_set()
-
-## 0.9
-> released 2007-11-15
-
-* fix for when no servers are definied.
-* different buffers are now kept for different connections to speed up async efforts
-* Modified increment/decrement functions to return uint64_t values
-* Fixed bug in cases where zero length keys were provided
-* Thread cleanup issue in memslap
-* No hostname lookup on reconnect
-* Fix for flag settings (was doing hex by accident!)
-* Support for 1.2.4 server additions "prepend" and "append" added.
-* Added memcached_version()... not sure if I will make this public or not.
-
-## 0.8
-> released 2007-11-05
-
-* Adding support for CRC hash method 
-* Adding support for UNIX sockets
-* Added additional HASHing methods of FNV1_64,FNV1A_64, FNV1_32, FNV1A_32
-* Added pkgconfig support (PKG_CHECK_MODULES)
-* Fixed conflict with defined type in MySQL
-* Added memcached_result_st structure and functions to manipulate it.
-
-## 0.7
-> released 2007-10-30
-
-* Poved to poll() from select()
-* Fixes in internal string class for allocation of large numbers of strings.
-* memcached_mget() function now sends keys as it parses them instead of building strings as it goes.
-* Propper flush now for making sure we get all IO sent even when in non-block mode.
-* Added --enable-debug rule for configure
-* All asserts() removed (hey this is going into production!)
-
-
-## 0.6
-> released 2007-10-17
-
-* get value returns are now null terminated (request by Cal Heldenbrand) 
-* Fixed connections for more hosts then two.
-* Rewrite of the read/write IO systems to handle different sorts of host failures.
-* Added man pages for all functions and tools
-* Raised buffer size for readinng/writing to 16K
-* You can now optionally set the socket size for recv/send via memached_behavior_set/get.
-
-## 0.5
-> released 2007-10-09
-
-* Ruby maintainer mentioned TCP_NODELAY patch he had added. Added this to C
-  library as well. (Eric Hodel drbrain@segment7.net)
-* Added support script for set_benchmark
-* Updated memslap to allow testing of TCP_NODELAY
-* Updated memslap to support --flush (aka dump memcache servers before testing)
-* Fixed bug in multiple hosts not being activated
-* Added environmental variable MEMCACHED_SERVERS which can be used to set the servers list.
-* fixed memcached_stat method (and now memstat works)
-* server connect now happens on demand.
-* Help for all command line applications
-
-## 0.4
-> released 2007-10-03
-
-* Added buffered IO to write calls for keys
-* Added buffered IO for reads
-* memstat was broken (bad if/else on connect)
-* New non-blocking IO (not default yet). Mucho faster
-* Refactor of test system.
-* memslap crash solved
-
-## 0.3
-> released 2007-10-01
-
-* Jeff Fisher <guppy@techmonkeys.org> provided a spec file
-* Added "make rpm" around dist file
-* Added support for Solaris
-* Added support for DTrace
-* Fixed read to be recv and write to be send
-* Bug fix where memstat would core if no server was found
-* Added memslap tool (load generator)
-* Numerous bug fixes in library
-* Added calls to library for creating host lists (see text cases to understand how to use this).
-
-## 0.2
-> released 2007-09-27
-
-* First public version
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..a78d08eb9fd8c1ca2ad4677f0c71c3807f7b87bf
--- /dev/null
@@ -0,0 +1 @@
+ChangeLog-1.1.md
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index 0985e79d873b7507f6773f7f924203abdf2d163f..095eb77d30381db3593c2ccb0ec6e35365e148d6 100644 (file)
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2011-2013 Brian Aker, DataDifferential, https://datadifferential.com/
+Copyright (c) 2006-2014 Brian Aker, DataDifferential, https://datadifferential.com/
 Copyright (c) 2020 Michael Wallner, SmugMug Inc, https://smugmug.com/
 
 All rights reserved.
index 784fadb71b09332e77f53bdeb87eb336a33f42b0..dd6a32c50ae9fa3cf3d529844b39f244255a5c83 100644 (file)
@@ -2,7 +2,7 @@ find_package(Sphinx)
 
 if(NOT SPHINX_EXECUTABLE)
 
-    message(WARNING "The sphinx-build command is required to build manpages.")
+    message(WARNING "The sphinx-build command is required to build documentation.")
 
 else()
 
@@ -29,13 +29,12 @@ else()
     # MAN output directory
     set(SPHINX_MAN_DIR "${SPHINX_BUILD_DIR}/man")
 
-    configure_file(
-            "${SPHINX_SOURCE_DIR}/conf.py.in"
-            "${SPHINX_BUILD_DIR}/conf.py"
-            @ONLY)
+    configure_file("conf.py.in" "conf.py" @ONLY)
+    add_subdirectory(source)
 
     if(BUILD_DOCS_HTML)
         add_custom_target(html
+                COMMAND
                 ${SPHINX_EXECUTABLE}
                 -q -b html
                 -c "${SPHINX_BUILD_DIR}"
diff --git a/docs/conf.py.in b/docs/conf.py.in
new file mode 100644 (file)
index 0000000..a0dc5ba
--- /dev/null
@@ -0,0 +1,215 @@
+# -*- coding: utf-8 -*-
+
+import sys, os
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.insert(0, os.path.abspath('.'))
+
+
+# -- General configuration -----------------------------------------------------
+
+#needs_sphinx = '1.0'
+extensions = [@SPHINX_EXTENSIONS@]
+templates_path = ['_templates']
+source_suffix = ['.rst']
+master_doc = 'index'
+pygments_style = 'sphinx'
+
+primary_domain = 'cpp'
+default_role = 'any'
+
+project = u'libmemcached'
+version = '@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@'
+release = '@PROJECT_VERSION@'
+
+smartquotes = False
+m2r_parse_relative_links = True
+
+# -- Options for HTML output ---------------------------------------------------
+
+html_theme = '@SPHINX_THEME@'
+html_theme_options = {@SPHINX_THEME_OPTIONS@}
+html_domain_indices = False
+html_show_sourcelink = False
+html_copy_source = False
+#manpages_url = 'http://man7.org/linux/man-pages/man{section}/{page}.{section}.html'
+manpages_url = 'https://linux.die.net/man/{section}/{page}'
+
+html_context = {
+  'display_github': True,
+  'github_user': 'm6w6',
+  'github_repo': 'libmemcached',
+  'github_version': 'v1.x/docs/source/'
+}
+
+# -- Options for manual page output --------------------------------------------
+
+# Skip a separate AUTHOR section
+man_authors = []
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+  ('libhashkit/index'                          ,'libhashkit'                              ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_create'                 ,'hashkit_clone'                           ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_create'                 ,'hashkit_create'                          ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_create'                 ,'hashkit_free'                            ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_create'                 ,'hashkit_is_allocated'                    ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_function'               ,'hashkit_function'                        ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_function'               ,'hashkit_get_distribution_function'       ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_function'               ,'hashkit_get_function'                    ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_function'               ,'hashkit_set_custom_distribution_function',u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_function'               ,'hashkit_set_custom_function'             ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_function'               ,'hashkit_set_distribution_function'       ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_function'               ,'hashkit_set_function'                    ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_functions'              ,'hashkit_crc32'                           ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_functions'              ,'hashkit_fnv1_32'                         ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_functions'              ,'hashkit_fnv1_64'                         ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_functions'              ,'hashkit_fnv1a_32'                        ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_functions'              ,'hashkit_fnv1a_64'                        ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_functions'              ,'hashkit_functions'                       ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_functions'              ,'hashkit_hsieh'                           ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_functions'              ,'hashkit_jenkins'                         ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_functions'              ,'hashkit_md5'                             ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_functions'              ,'hashkit_murmur'                          ,u'libhashkit Documentation'            ,man_authors,3),
+  ('libhashkit/hashkit_value'                  ,'hashkit_value'                           ,u'libhashkit Documentation'            ,man_authors,3),
+
+  ('libmemcached'                              ,'libmemcached'                            ,u'C/C++ Client Library for memcached'  ,man_authors,3),
+  ('libmemcached/configuration'                ,'libmemcached_check_configuration'        ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/configuration'                ,'libmemcached_configuration'              ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/configuration'                ,'memcached'                               ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/examples'                     ,'libmemcached_examples'                   ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_analyze'            ,'memcached_analyze'                       ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_append'             ,'memcached_append_by_key'                 ,u'Appending to or Prepending Data'     ,man_authors,3),
+  ('libmemcached/memcached_append'             ,'memcached_append'                        ,u'Appending to or Prepending Data'     ,man_authors,3),
+  ('libmemcached/memcached_append'             ,'memcached_prepend_by_key'                ,u'Appending to or Prepending Data'     ,man_authors,3),
+  ('libmemcached/memcached_append'             ,'memcached_prepend'                       ,u'Appending to or Prepending Data'     ,man_authors,3),
+  ('libmemcached/memcached_auto'               ,'memcached_auto'                          ,u'Incrementing and Decrementing Values',man_authors,3),
+  ('libmemcached/memcached_auto'               ,'memcached_decrement'                     ,u'Incrementing and Decrementing Values',man_authors,3),
+  ('libmemcached/memcached_auto'               ,'memcached_decrement_with_initial'        ,u'Incrementing and Decrementing Values',man_authors,3),
+  ('libmemcached/memcached_auto'               ,'memcached_increment'                     ,u'Incrementing and Decrementing Values',man_authors,3),
+  ('libmemcached/memcached_auto'               ,'memcached_increment_with_initial'        ,u'Incrementing and Decrementing Values',man_authors,3),
+  ('libmemcached/memcached_behavior'           ,'memcached_behavior_get'                  ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_behavior'           ,'memcached_behavior_set'                  ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_behavior'           ,'memcached_behavior'                      ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_callback'           ,'memcached_callback_get'                  ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_callback'           ,'memcached_callback_set'                  ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_callback'           ,'memcached_callback'                      ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_cas'                ,'memcached_cas_by_key'                    ,u'Storing and Replacing Data'          ,man_authors,3),
+  ('libmemcached/memcached_cas'                ,'memcached_cas'                           ,u'Atomic Compare and Swap'             ,man_authors,3),
+  ('libmemcached/memcached_create'             ,'memcached_clone'                         ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_create'             ,'memcached_create'                        ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_create'             ,'memcached_free'                          ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_create'             ,'memcached_servers_reset'                 ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_delete'             ,'memcached_delete_by_key'                 ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_delete'             ,'memcached_delete'                        ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_dump'               ,'memcached_dump'                          ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_exist'              ,'memcached_exist_by_key'                  ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_exist'              ,'memcached_exist'                         ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_fetch'              ,'memcached_fetch'                         ,u'Retrieving data from the server'     ,man_authors,3),
+  ('libmemcached/memcached_flush_buffers'      ,'memcached_flush_buffers'                 ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_flush'              ,'memcached_flush'                         ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_generate_hash_value','memcached_generate_hash'                 ,u'Generating hash values directly'     ,man_authors,3),
+  ('libmemcached/memcached_generate_hash_value','memcached_generate_hash_value'           ,u'Generating hash values directly'     ,man_authors,3),
+  ('libmemcached/memcached_get'                ,'memcached_fetch_execute'                 ,u'Retrieving data from the server'     ,man_authors,3),
+  ('libmemcached/memcached_get'                ,'memcached_fetch_result'                  ,u'Retrieving data from the server'     ,man_authors,3),
+  ('libmemcached/memcached_get'                ,'memcached_get_by_key'                    ,u'Retrieving data from the server'     ,man_authors,3),
+  ('libmemcached/memcached_get'                ,'memcached_get'                           ,u'Retrieving data from the server'     ,man_authors,3),
+  ('libmemcached/memcached_get'                ,'memcached_mget_by_key'                   ,u'Retrieving data from the server'     ,man_authors,3),
+  ('libmemcached/memcached_get'                ,'memcached_mget_execute_by_key'           ,u'Retrieving data from the server'     ,man_authors,3),
+  ('libmemcached/memcached_get'                ,'memcached_mget_execute'                  ,u'Retrieving data from the server'     ,man_authors,3),
+  ('libmemcached/memcached_get'                ,'memcached_mget'                          ,u'Retrieving data from the server'     ,man_authors,3),
+  ('libmemcached/memcached_last_error'         ,'memcached_last_error_errno'              ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_last_error'         ,'memcached_last_error_message'            ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_last_error'         ,'memcached_last_error'                    ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_memory_allocators'  ,'memcached_get_memory_allocators'         ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_memory_allocators'  ,'memcached_memory_allocators'             ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_memory_allocators'  ,'memcached_set_memory_allocators_context' ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_memory_allocators'  ,'memcached_set_memory_allocators'         ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_quit'               ,'memcached_quit'                          ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_result_st'          ,'memcached_result_cas'                    ,u'Working with result sets'            ,man_authors,3),
+  ('libmemcached/memcached_result_st'          ,'memcached_result_create'                 ,u'Working with result sets'            ,man_authors,3),
+  ('libmemcached/memcached_result_st'          ,'memcached_result_flags'                  ,u'Working with result sets'            ,man_authors,3),
+  ('libmemcached/memcached_result_st'          ,'memcached_result_free'                   ,u'Working with result sets'            ,man_authors,3),
+  ('libmemcached/memcached_result_st'          ,'memcached_result_key_length'             ,u'Working with result sets'            ,man_authors,3),
+  ('libmemcached/memcached_result_st'          ,'memcached_result_key_value'              ,u'Working with result sets'            ,man_authors,3),
+  ('libmemcached/memcached_result_st'          ,'memcached_result_length'                 ,u'Working with result sets'            ,man_authors,3),
+  ('libmemcached/memcached_result_st'          ,'memcached_result_st'                     ,u'Working with result sets'            ,man_authors,3),
+  ('libmemcached/memcached_result_st'          ,'memcached_result_value'                  ,u'Working with result sets'            ,man_authors,3),
+  ('libmemcached/memcached_return_t'           ,'memcached_return_t'                      ,u'Return type values '                 ,man_authors,3),
+  ('libmemcached/memcached_sasl'               ,'memcached_destroy_sasl_auth_data'        ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_sasl'               ,'memcached_get_sasl_callbacks'            ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_sasl'               ,'memcached_sasl_set_auth_data'            ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_sasl'               ,'memcached_sasl'                          ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_sasl'               ,'memcached_set_sasl_callbacks'            ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_servers'            ,'memcached_server_add'                    ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_servers'            ,'memcached_server_add_unix_socket'        ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_servers'            ,'memcached_server_count'                  ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_servers'            ,'memcached_server_cursor'                 ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_servers'            ,'memcached_server_list'                   ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_servers'            ,'memcached_server_push'                   ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_servers'            ,'memcached_server_st'                     ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_servers'            ,'memcached_servers'                       ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_server_st'          ,'memcached_server_list_append'            ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_server_st'          ,'memcached_server_list_count'             ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_server_st'          ,'memcached_server_list_free'              ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_server_st'          ,'memcached_servers_parse'                 ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_set_encoding_key'   ,'memcached_set_encoding_key'              ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_set'                ,'memcached_add_by_key'                    ,u'Storing and Replacing Data'          ,man_authors,3),
+  ('libmemcached/memcached_set'                ,'memcached_add'                           ,u'Storing and Replacing Data'          ,man_authors,3),
+  ('libmemcached/memcached_set'                ,'memcached_replace_by_key'                ,u'Storing and Replacing Data'          ,man_authors,3),
+  ('libmemcached/memcached_set'                ,'memcached_replace'                       ,u'Storing and Replacing Data'          ,man_authors,3),
+  ('libmemcached/memcached_set'                ,'memcached_set_by_key'                    ,u'Storing and Replacing Data'          ,man_authors,3),
+  ('libmemcached/memcached_set'                ,'memcached_set'                           ,u'Storing and Replacing Data'          ,man_authors,3),
+  ('libmemcached/memcached_stats'              ,'memcached_stat_execute'                  ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_stats'              ,'memcached_stat_get_keys'                 ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_stats'              ,'memcached_stat_get_value'                ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_stats'              ,'memcached_stat_servername'               ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_stats'              ,'memcached_stats'                         ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_stats'              ,'memcached_stat'                          ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_strerror'           ,'memcached_strerror'                      ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_touch'              ,'memcached_touch_by_key'                  ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_touch'              ,'memcached_touch'                         ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_user_data'          ,'memcached_get_user_data'                 ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_user_data'          ,'memcached_set_user_data'                 ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_user_data'          ,'memcached_user_data'                     ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_verbosity'          ,'memcached_verbosity'                     ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_version'            ,'memcached_lib_version'                   ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcached/memcached_version'            ,'memcached_version'                       ,u'libmemcached Documentation'          ,man_authors,3),
+
+  ('libmemcachedutil/index'                    ,'libmemcachedutil'                        ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcachedutil/memcached_pool'           ,'memcached_pool_behavior_get'             ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcachedutil/memcached_pool'           ,'memcached_pool_behavior_set'             ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcachedutil/memcached_pool'           ,'memcached_pool_create'                   ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcachedutil/memcached_pool'           ,'memcached_pool_destroy'                  ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcachedutil/memcached_pool'           ,'memcached_pool_fetch'                    ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcachedutil/memcached_pool'           ,'memcached_pool_pop'                      ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcachedutil/memcached_pool'           ,'memcached_pool_push'                     ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcachedutil/memcached_pool'           ,'memcached_pool_release'                  ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcachedutil/memcached_pool'           ,'memcached_pool_st'                       ,u'libmemcached Documentation'          ,man_authors,3),
+  ('libmemcachedutil/memcached_pool'           ,'memcached_pool'                          ,u'libmemcached Documentation'          ,man_authors,3),
+
+  ('bin/memcapable'                            , 'memcapable'                             , u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memcat'                                , 'memcat'                                 , u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memcp'                                 , 'memcp'                                  , u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memdump'                               , 'memdump'                                , u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memerror'                              , 'memerror'                               , u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memflush'                              , 'memflush'                               , u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memrm'                                 , 'memrm'                                  , u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memaslap'                              , 'memaslap'                               , u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memslap'                               , 'memslap'                                , u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memstat'                               , 'memstat'                                , u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memexist'                              , 'memexist'                               , u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memparse'                              , 'memparse'                               , u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memping'                               , 'memping'                                , u'libmemcached Documentation'         , man_authors, 1),
+  ('bin/memtouch'                              , 'memtouch'                               , u'libmemcached Documentation'         , man_authors, 1),
+  ]
+
+rst_prolog = """
+.. |libhashkit_version| replace:: @LIBHASHKIT_VERSION_MAJOR@.@LIBHASHKIT_VERSION_MINOR@
+.. |libmemcached_version| replace:: @LIBMEMCACHED_VERSION_MAJOR@.@LIBMEMCACHED_VERSION_MINOR@
+"""
+
+@SPHINX_CONF_APPEND@
diff --git a/docs/source/CMakeLists.txt b/docs/source/CMakeLists.txt
new file mode 100644 (file)
index 0000000..ff33055
--- /dev/null
@@ -0,0 +1,25 @@
+find_program(M2R m2r)
+
+if(M2R)
+    file(GLOB CHANGELOGS "${CMAKE_SOURCE_DIR}/ChangeLog-*.md")
+    message("-- Checking ChangeLogs ...")
+    foreach(CHANGELOG IN LISTS CHANGELOGS)
+        string(REGEX REPLACE "\\.md$" ".rst" FILEPATH ${CHANGELOG})
+        get_filename_component(FILENAME ${FILEPATH} NAME)
+
+        set(RESTFILE "${CMAKE_CURRENT_SOURCE_DIR}/${FILENAME}")
+        if(${CHANGELOG} IS_NEWER_THAN ${RESTFILE})
+            message("--   Processing ${CHANGELOG} ...")
+            execute_process(
+                    COMMAND ${M2R} --overwrite --parse-relative-links ${CHANGELOG}
+                    RESULTS_VARIABLE M2R_STATUS
+            )
+            if(M2R_STATUS)
+                message("     Failed to update ${RESTFILE}: ${M2R_STATUS}")
+            else()
+                file(RENAME ${FILEPATH} ${RESTFILE} )
+                message("     Updated ${RESTFILE}: OK")
+            endif()
+        endif()
+    endforeach()
+endif()
diff --git a/docs/source/ChangeLog-0.rst b/docs/source/ChangeLog-0.rst
new file mode 100644 (file)
index 0000000..4f045ac
--- /dev/null
@@ -0,0 +1,823 @@
+
+ChangeLog v0.x
+==============
+
+v 0.53
+------
+
+..
+
+   released 2011-09-27
+
+
+
+* Fix for FreeBSD/OpenBSD and -lm
+* Added memcached_exist()
+* Fix for memory when using config test.
+* CLI gained --quiet
+
+v 0.52
+------
+
+..
+
+   released 2011-09-12
+
+
+
+* Build fixes for Ubuntu/Suse.
+* Fixes for OSX Lion.
+* Bug fix for looping back through dns lookups under certain failures.
+* Fixes related to dead server failures.
+
+v 0.51
+------
+
+..
+
+   released 2011-07-21
+
+
+
+* memcached_callback_set() now takes its data argument as const
+* Update to tests.
+* Fix in parser for port number.
+
+v 0.50
+------
+
+..
+
+   released 2011-06-20
+
+
+
+* Updates to C++ interface 
+* Custom free allocators need to now check for value before calling free.
+* memcached_fetch_result() now uses the internal result when available (about 25 to 50% faster).
+* Fix for stats structure.
+* Updates to documentation.
+* memcached_fetch_result() now uses the internal result when available (about 25 to 50% faster).
+
+v 0.49
+------
+
+..
+
+   released 2011-04-14
+
+
+
+* Fix calls to auto methods so that if value is not passed in nothing bad happens.
+* New parser calls for generating memcached_st objects.
+* New error system.
+* New flow control for messages means faster get/set calls.
+* Added new documentation system.
+* A behavior change has been now made that if you specify a weight for any server, we enable the weight flag and do weight balancing.  
+* Added MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS to simplify the setting of AUTO REJECT for servers.
+
+v 0.48
+------
+
+..
+
+   released 2011-03-16
+
+
+
+* Fix memory leak in server parse.
+* Move test framework out to be its own library (easier to work with Gearman).
+
+v 0.47
+------
+
+..
+
+   released 2011-02-24
+
+
+
+* Additional fixes for OpenBSD.
+* Bug fix 677609, 456080.
+* SIGPIPE fix for Linux send(). 
+* memcapable can now test ascii or binary based on flags.
+* Additional build fixes for SASL.
+
+v 0.46
+------
+
+..
+
+   released 2011-02-14
+
+
+
+* Fixes a number of corner case bugs.
+* Fixes related to OpenBSD.
+* Better testing for protocol version.
+* Removes special case infinite wait on blocking setup.
+
+v 0.45
+------
+
+..
+
+   released 2011-02-09
+
+
+
+* Add support for systemtap
+
+v 0.44
+------
+
+..
+
+   released 2010-09-23
+
+
+
+* Windows bug fixes.
+* Hudson port support in test harness.
+* Improved portability of test hanrness.
+* SASL fixes.
+
+v 0.43
+------
+
+..
+
+   released 2010-07-28
+
+
+
+* Added --args to memstat so that a greater range of values can be returned.
+* Prelimanary support for Windows.
+* memcached_stat_execute() merged. 
+
+v 0.42
+------
+
+..
+
+   released 2010-07-06
+
+
+
+* Mistake in libtool caused issue with library version
+
+v 0.41
+------
+
+..
+
+   released 2010-06-30
+
+
+
+* Added --file for memcat.
+* Added limemcached_ping() to libmemcached_util
+* Bugfix for some cases where connect would have issues with timeout.
+* Wrong value for errno given as error on an IO failure inside of poll.
+* Bug fix for issue where multiple interfaces with bad DNS were not being caught.
+
+v 0.40
+------
+
+..
+
+   released 2010-04-23
+
+
+
+* Placed retry logic in for busted resolvers
+* Add an ignore for SIGPIPE to solve OSX issues.
+* A couple of fixed for memcached_light server.
+* Updated to debug mode to track io_wait
+
+v 0.39
+------
+
+..
+
+   released 2010-04-06
+
+
+
+* Add support for prefix keys to binary protocol.
+* Remove the undocumented call memcached_server_remove().
+* The undocumented call memcached_server_by_key() now returns const.
+* memcached_server_error_reset() has been deprecated.
+* memcached_server_list() has been deprecated. Use memcached_server_cursor() to walk the servers found in a memcached_st() structure.
+* memcached_verbosity() can now be run concurrently with other operations.
+* SASL support.
+* Fixes memory leak found in EJECT HOSTS.
+
+v 0.38
+------
+
+..
+
+   released 2010-02-10
+
+
+
+* C++ interface for libhashkit.
+* Modified memcached_set_memory_allocators() so that it requires a context pointer.
+* memcached_clone() now runs 5 times faster.
+* Functions used for callbacks are now given const memcached_st.
+* Added MEMCACHED_BEHAVIOR_CORK.
+* memslap now creates a configuration file at ~/.memslap.cnf
+* memcached_purge() now calls any callbacks registered during get execution.
+* Many fixes to memslap.
+* Updates for memcapable.
+* Compile fixes for OpenBSD.
+* Fix for possible recursive decent on IO failure.
+
+v 0.37
+------
+
+..
+
+   released 2010-01-12
+
+
+
+* Fixed build for libhashkit.
+* Fixed install path regression.  
+* Modified RPM to strict check install. 
+* Added documentation for memcached_server_cursor();
+* Added memcached_servers_reset().
+* Modified memcached_st to remove dead cursor_server member.
+
+v 0.36
+------
+
+..
+
+   released 2010-01-07
+
+
+
+* Merged in new memslap utility.
+* All of constants.h has been updated to match style (all old identifiers continue to work).
+* Added first pass for libhashkit.
+* Updated test Framework/extended tests.
+* Random read support during replication added.
+* Modified use_sort so that the option can be applied to any distribution type.
+* We removed the MEMCACHED_BEHAVIOR_KETAMA_COMPAT_MODE added in 0.35. Instead use memcached_behavior_set_distribution().
+
+v 0.35
+------
+
+..
+
+   released 2009-11-09
+
+
+
+* Added support for by_key operations for inc/dec methods.
+* Added mget test to memslap.
+* Support for compatible ketama for SpyMemcached
+* Update C++ interface.
+* Fix for memcp
+
+v 0.34
+------
+
+..
+
+   released 2009-10-13
+
+
+
+* Added support for setting behavior flags on a connection pool.
+* Don't increment server_failure_counter on normal disconnects.
+* Added prototype for a callback based protocol parser (server side) with examples so that you could let your own application speak the memcached protocol
+* Updated memcapable to test ASCII protocol.
+* Changed behavior so that server can be removed at first sign of failure.
+* Added memcached_server_get_last_disconnect() call
+
+v 0.33
+------
+
+..
+
+   released 2009-09-23
+
+
+
+* Added memcapable to test servers for binary compatibility.
+* Updated C++ interface. Added basic support for C++ exceptions. Added multiple constructors the memcached client object. The C++ interface now takes parameters which are C++ types (such as std::string).
+* Several bug fixes for binary protocol support.
+* Fixed crashing issue with dumping from memcachd server (server internals were changed without documenting change).
+
+v 0.32
+------
+
+..
+
+   released 2009-09-15
+
+
+
+* Change of behavior where linger is only modified for no-block and then it is set to zero.
+* Added Twitter's memcached_server_error() functions.
+* Fix for OSX compiles in development builds.
+* Updated C++ interface.
+* Updated memcached_mget and memcached_mget_by_key to take a size_t as a parameter instead of an unsigned int for number_of_keys.
+
+v 0.31
+------
+
+..
+
+   released 2009-07-10
+
+
+
+* Added support or HA via replication.
+* malloc() removed for server key usage.
+* Update build system.
+* Added support for memcached_set_memory_allocators().
+* Fixed bug in configure.ac for have_htoll.
+
+v 0.30
+------
+
+..
+
+   released 2009-06-01
+
+
+
+* Added memcachd_dump command (and framework for memdump tool).
+* Realigned all structures to remove padding (and line up important bits for 64bit caches.
+* Remove some of sprintf() in storage calls().
+* Removed printf() in stat call for unknown stat member.
+* memcached_generate_hash() function added.
+* Added tests to make sure all hash functions are stable.
+
+v 0.29
+------
+
+..
+
+   released 2009-05-19
+
+
+
+* Fixed malloc usage to calloc for spots where we need zero filled memory. 
+* All code warnings now treated as errors.
+* Fixes for debian packaging.
+* Added new pooling mechanism.
+* MEMCACHED_BEHAVIOR_NO_BLOCK no longer also sets MEMCACHED_BEHAVIOR_BUFFER_REQUESTS.
+* Updated generic rpm.
+
+v 0.28
+------
+
+..
+
+   released 2009-04-15
+
+
+
+* Fixed bug in init sructure (reapplied)
+* Fixed bug in get/set by key (nikkhils@gmail.com)
+
+v 0.27
+------
+
+..
+
+   released 2009-03-30
+
+
+
+* Added new UDP fire-forget mode.
+* Reworked performance for mget() to better make use of async protocol
+* Cleaned up execution of fetch (just one set of code now)
+* Fixed Jenkin's for big endian hosts.
+* Updates for memstat to determine network latency.
+* Updates for binary protocol.
+* Many updates to documentation.
+
+v 0.26
+------
+
+..
+
+   released 2009-01-29
+
+
+
+* Fix for decrement on hash key
+* Fixed assert that was catching bad memset() call in host_reset()
+* Fix purge issue for blocked IO which has been stacked.
+
+v 0.25
+------
+
+..
+
+   released 2008-11-28
+
+
+
+* Jenkins HASH added.
+* Update of Murmur hash code
+* Support explicit weights (Robey Pointer, Evan Weaver)
+* Bugfix for ketama continuum (Robey Pointer)
+* New behavior MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY (Robey Pointer)
+* Don't ever call stats for weighting servers, because it is unstable.
+
+v 0.24
+------
+
+..
+
+   released 2008-09-16
+
+
+
+* Cleanup compile warnings.
+* Fix issues in partitioning by keys.
+* Fixed "fail case" to make sure when calling memcached_clone() no memcached_st is over written.
+* New memcached_server_by_key() method for finding a server from a key.
+* memcached_server_free() was added for freeing server structures.
+
+v 0.23
+------
+
+..
+
+   released 2008-09-07
+
+
+
+* Added strings.h header for Solaris 9
+* Solaris 64bit fix.
+* Support for weighted Ketama from Yin Chen.
+* Fix for Chinese 
+* Fix for 0 length key to trigger bad key.
+* Added behaviors MEMCACHED_BEHAVIOR_SND_TIMEOUT, MEMCACHED_BEHAVIOR_RCV_TIMEOUT
+* Support for Binary Protocol added
+
+v 0.22
+------
+
+..
+
+   released 2008-07-14
+
+
+
+* Fix where master key was no being checked for "bad key"
+* Fixed bugs in stats output (thread output was wrong)
+* Clarified MEMCACHED_BAD_KEY_PROVIDED is return for bad prefix key.
+* Found a bug in Flags return (Jacek Ostrowski)
+* Fixed issue with compiling on Visual Studio
+
+v 0.21
+------
+
+..
+
+   released 2008-05-24
+
+
+
+* Change of char * to const char * for all key based functions.
+* New  MEMCACHED_CALLBACK_PREFIX_KEY added. You can now create domains for values.
+* Fixed bug introducd in last version on memcp
+* Fix for death of file io to call shutdown()
+
+v 0.20
+------
+
+..
+
+   released 2008-05-05
+
+
+
+* New consistent distribution tests.
+* Found a memory leak when a server constantly fails.
+* Fix in watchpoint macro
+* Changed default timeout to 1 second for poll timeouts
+* Wheel uses less memory/dynamic allocation for size (no longer limited to 512 hosts by default.
+* memslap memory leak fix
+* Added Ketama distribution
+* Fix assert.h compile problem on CentOS
+
+v 0.19
+------
+
+..
+
+   released 2008-04-09
+
+
+
+* Documentation fix in libmemcached.
+* Fixed bug where sort was always occuring on hosts
+* Logic fix in branch prediction (thanks Jay!)
+* Read through cached support.
+* Fixed for cas by key operation.
+* Fix for memcached_server_st list structures to have correct count.
+* Added callback MEMCACHED_CALLBACK_DELETE_TRIGGER
+* Removed function call in favor of macro (aka cut out some instructions)
+
+v 0.18
+------
+
+..
+
+   released 2008-03-17
+
+
+
+* Fix plus tests for non-zero value objects and flags.
+* MEMCACHED_HASH_MURMUR added for murmur algorithm provided.
+* MEMCACHED_BEHAVIOR_RETRY_TIMEOUT added to keep connecting from looping on timeout.
+* gcc branch prediction optimizations
+* Refactored entire tree to make include files cleaner
+* Fixed leaked socket.
+
+v 0.17
+------
+
+..
+
+   released 2008-02-27
+
+
+
+* MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT added for connect timeout in non-block mode.
+* Incompatible change in memcached_behavior_set() api. We now use a uint64_t, instead of a pointer.
+* Fix for storage of values for zero.
+* memcached_server_cursor() function added to API for cycling through servers.
+
+v 0.16
+------
+
+..
+
+   released 2008-02-18
+
+
+
+* Work on the UDP protocol
+* Added get_by_key, set_by_key tests for C++ API
+* Fix for limit_maxbytes to be 64bit in stats
+* Added Atom Smasher test (scale baby, scale!)
+* Servers are now sorted, meaning that servers are now ordered so that clients with the same lists, will have same distribution. (Idea from Ross McFarland). MEMCACHED_BEHAVIOR_SORT_HOSTS was added to enable this support.
+* Added MEMCACHED_BAD_KEY_PROVIDED error for auto, set, and get operations.  MEMCACHED_BEHAVIOR_VERIFY_KEY was added to enable this feature.
+* More error messages on command line tools.
+* Fixed bugs in memcached_cas() operator.
+* Fix to loop through interfaces
+
+v 0.15
+------
+
+..
+
+   released 2008-01-29
+
+
+
+* More work on the C++ API.
+* Bug fixes around block corner cases.
+* Slight performance increase in both read() and write().
+
+v 0.14
+------
+
+..
+
+   released 2008-01-22
+
+
+
+* For for bug found by Evan Weaver where increment() was not returning propper error of value was not found.
+* Fix for bad null pointer on flag by Toru Maesaka.
+* Refactor of all IO to just pass in the active server
+* Problem configuring (PKG_CHECK_MODULES) fixed by removal of "rpath" in support/libmemcached.pc.in (Thanks to Ross McFarland).
+* Added memcached_callback_get()/set()
+* First prototype of C++ interface
+* Updated docs for uint16_t changes in previous release
+
+v 0.13
+------
+
+..
+
+   released 2008-01-13
+
+
+
+* MEMCACHED_BEHAVIOR_USER_DATA added to store user pointer.
+* Fix for failure to connect to invalidate socket.
+* Patch from Marc Rossi to add --hash option for memcp, memrm, and memcat.
+* Kevin's patch for fixing EOF issues during a read.
+* Toru Maesaka patch for stats mismatch
+* Fix for when CRC return 0
+* Fixed uint16_t issues around flags. Turns out the documentation on the protocol was wrong.
+* Lingering socket fixes for FreeBSD.
+* Patches from Kevin Dalley for FreeBSD 4.0
+* Added multi delete functions.
+* All get key returns have C style null termination
+* If memcached_server_list_append is passed NULLs instead of pointers it returns NULL.  
+* Added memcached_fetch_execute() method
+* Found a bug where memcached_fetch() was not null terminating the result value.
+* memcached_behavior() now has the ability to set "buffering" so that data is not automatically flushed.
+* Behavior change, buffered commands now return MEMCACHED_BUFFERED
+
+v 0.12
+------
+
+..
+
+   released 2007-12-11
+
+
+
+* Updates for consistent hashing
+* IPV6 support
+* Static allocation for hostname (performance)
+* Fixed bug where in non-block mode all data might not have been sent on close().
+* Refactor of memcached_get() to use common code.
+* Change in value fetch, MEMCACHED_END is now returned when keys are no longer in the pipe.
+* Fixed bug where key could be out of range of characters
+* Added _by_key() methods to allow partitioning of values to particular servers.
+* MEMCACHED_DEFAILT_TIMEOUT is now set to a non -1 value.
+* Performance improvements in get operations.
+
+v 0.11
+------
+
+..
+
+   released 2007-11-26
+
+
+
+* Added option to memcache_behavior_set() so that poll() can be timed out.
+* Fixed memory leak in case of using memcached_fetch_result() where no value was returned.
+* Bug fixed in memcached_connect() which would cause servers that did not need to be enabled to be enabled (performance issue).
+* Rewrote bounds checking code for get calls.
+* "make test" now starts its own memcached servers.
+* Added Hseih hash (MEMCACHED_HASH_HSIEH), which is showing about 7% performance over standard hash.
+
+v 0.10
+------
+
+..
+
+   released 2007-11-21
+
+
+
+* Added append binary test.
+* Added MEMCACHED_BEHAVIOR_CACHE_LOOKUPS behavior so that you can save on multiple DNS lookups.
+* Added CAS support, though this is optional and must be enabled during runtime.
+* Added the utility memerror to create human readable error strings from memcached errors (aka convert ints to strings)
+* Fixed type in MEMCACHED_HOST_LOOKUP_FAILURE
+* Fixed bug where hostname might not be null terminated
+* Moved to using gethostbyname_r() on Linux to solve thread safety issue
+* Added -rpath support for pkg-config
+* Documentation fix for hash setting using memcached_behavior_set()
+
+v 0.9
+-----
+
+..
+
+   released 2007-11-15
+
+
+
+* fix for when no servers are definied.
+* different buffers are now kept for different connections to speed up async efforts
+* Modified increment/decrement functions to return uint64_t values
+* Fixed bug in cases where zero length keys were provided
+* Thread cleanup issue in memslap
+* No hostname lookup on reconnect
+* Fix for flag settings (was doing hex by accident!)
+* Support for 1.2.4 server additions "prepend" and "append" added.
+* Added memcached_version()... not sure if I will make this public or not.
+
+v 0.8
+-----
+
+..
+
+   released 2007-11-05
+
+
+
+* Adding support for CRC hash method 
+* Adding support for UNIX sockets
+* Added additional HASHing methods of FNV1_64,FNV1A_64, FNV1_32, FNV1A_32
+* Added pkgconfig support (PKG_CHECK_MODULES)
+* Fixed conflict with defined type in MySQL
+* Added memcached_result_st structure and functions to manipulate it.
+
+v 0.7
+-----
+
+..
+
+   released 2007-10-30
+
+
+
+* Poved to poll() from select()
+* Fixes in internal string class for allocation of large numbers of strings.
+* memcached_mget() function now sends keys as it parses them instead of building strings as it goes.
+* Propper flush now for making sure we get all IO sent even when in non-block mode.
+* Added --enable-debug rule for configure
+* All asserts() removed (hey this is going into production!)
+
+v 0.6
+-----
+
+..
+
+   released 2007-10-17
+
+
+
+* get value returns are now null terminated (request by Cal Heldenbrand) 
+* Fixed connections for more hosts then two.
+* Rewrite of the read/write IO systems to handle different sorts of host failures.
+* Added man pages for all functions and tools
+* Raised buffer size for readinng/writing to 16K
+* You can now optionally set the socket size for recv/send via memached_behavior_set/get.
+
+v 0.5
+-----
+
+..
+
+   released 2007-10-09
+
+
+
+* Ruby maintainer mentioned TCP_NODELAY patch he had added. Added this to C
+  library as well. (Eric Hodel drbrain@segment7.net)
+* Added support script for set_benchmark
+* Updated memslap to allow testing of TCP_NODELAY
+* Updated memslap to support --flush (aka dump memcache servers before testing)
+* Fixed bug in multiple hosts not being activated
+* Added environmental variable MEMCACHED_SERVERS which can be used to set the servers list.
+* fixed memcached_stat method (and now memstat works)
+* server connect now happens on demand.
+* Help for all command line applications
+
+v 0.4
+-----
+
+..
+
+   released 2007-10-03
+
+
+
+* Added buffered IO to write calls for keys
+* Added buffered IO for reads
+* memstat was broken (bad if/else on connect)
+* New non-blocking IO (not default yet). Mucho faster
+* Refactor of test system.
+* memslap crash solved
+
+v 0.3
+-----
+
+..
+
+   released 2007-10-01
+
+
+
+* Jeff Fisher guppy@techmonkeys.org provided a spec file
+* Added "make rpm" around dist file
+* Added support for Solaris
+* Added support for DTrace
+* Fixed read to be recv and write to be send
+* Bug fix where memstat would core if no server was found
+* Added memslap tool (load generator)
+* Numerous bug fixes in library
+* Added calls to library for creating host lists (see text cases to understand how to use this).
+
+v 0.2
+-----
+
+..
+
+   released 2007-09-27
+
+
+
+* First public version
diff --git a/docs/source/ChangeLog-1.0.rst b/docs/source/ChangeLog-1.0.rst
new file mode 100644 (file)
index 0000000..e1a808c
--- /dev/null
@@ -0,0 +1,226 @@
+
+ChangeLog v1.0
+==============
+
+v 1.0.18
+--------
+
+..
+
+   released 2014-02-09
+
+
+
+* MEMCACHED_BEHAVIOR_RETRY_TIMEOUT can now be set to zero.
+* Numerous bug fixes.
+
+v 1.0.17
+--------
+
+..
+
+   released 2013-04-03
+
+
+
+* Remove c++ namespace that was being exposed (the API should be plug compatible)..
+* Fix cases where --servers wasn't behaving the same in all clients.
+
+v 1.0.16
+--------
+
+..
+
+   released 2013-02-01
+
+
+
+* Added support to do two part shutdown of socket.
+* Fixes for Fedora 18.
+* Fix for binary memcached_touch()
+
+v 1.0.15
+--------
+
+..
+
+   released 2012-12-17
+
+
+
+* Added support for Murmur3 (HASHKIT_HASH_MURMUR3)
+* Portability fixes.
+
+v 1.0.14
+--------
+
+..
+
+   released 2012-11-14
+
+
+
+* CLIENT_ERROR fixed to not be treated as a fatal error.
+* Compiler fixes for older Ubuntu releases.
+
+v 1.0.13
+--------
+
+..
+
+   released 2012-10-19
+
+
+
+* Fix bug that caused version string to not be exported correctly.
+
+v 1.0.12
+--------
+
+..
+
+   released 2012-10-09
+
+
+
+* Added memcached_result_take_value().
+* Added ax_libmemcached.m4
+
+v 1.0.11
+--------
+
+..
+
+   released 2012-09-17
+
+
+
+* Removed custom version of memcached.
+* Updated hardening rules.
+* Fixed a case where the return error from a socket connection differred from that of a TCP/IP socket.
+
+v 1.0.10
+--------
+
+..
+
+   released 2012-07-30
+
+
+
+* --disable-assert has been removed from configure, and --enable-assert has been added in its place.
+* Compiling fixes for Clang on OSX Mountain Lion.
+
+v 1.0.9
+-------
+
+..
+
+   released 2012-07-05
+
+
+
+* Faster close on socket.
+* Instance allocation is now seperated from server interface. 
+  This should allow for a better preservation of ABI compliance from now on.
+* Fix close on exec bug.
+* Numerous other bug fixes.
+
+v 1.0.8
+-------
+
+..
+
+   released 2012-05-22
+
+
+
+* Added support for setting options via ENV variable LIBMEMCACHED
+* Fix corner case on last used result.
+
+v 1.0.7
+-------
+
+..
+
+   released 2012-04-28
+
+
+
+* Add API call for exist calls.
+* Update all license files to be BSD.
+
+v 1.0.6
+-------
+
+..
+
+   released 2012-04-08
+
+
+
+* Fixes for gcc 4.7, lp:961812
+* Fix for restart issue that happens under testing.
+* Fix for lp:962815.
+* Support for transparent AES encryption.
+
+v 1.0.5
+-------
+
+..
+
+   released 2012-03-14
+
+
+
+* Fixes for OSX.
+* Version is now parsed directly in the parser, which makes buffered operations now work with it..
+* memstat has been extended so that it can be used to find the version of the server.
+* Update documentation.
+* Fixes for compile issues on Debian and Ubuntu
+
+v 1.0.4
+-------
+
+..
+
+   released 2012-01-27
+
+
+
+* Fix for memcached_dump().
+* Additional testing for memcached_stat_execute().
+
+v 1.0.3
+-------
+
+..
+
+   released 2012-01-09
+
+
+
+* Increased size of sort buffer used during Ketama.
+* Added support for new behavior to handle dead servers.
+* Overall haul of UDP IO.
+* Fixed C compile issue with memcached_exist()
+* Numerous bug fixes.
+* Clang support for OSX.
+* All commands now using vector send support.
+
+v 1.0.2
+-------
+
+..
+
+   released 2011-10-24
+
+
+
+* Dropped libmemcached/memcached_util.h (undocumented header file)
+* Added memcached_touch() and memcached_touch_by_key()
+* UDP support restructured to toggle on a complete memcached_st structure.
+
+----
+
+See :doc:`ChangeLog-0 <./ChangeLog-0>` for changes prior v1.0.
diff --git a/docs/source/ChangeLog-1.1.rst b/docs/source/ChangeLog-1.1.rst
new file mode 100644 (file)
index 0000000..282aff2
--- /dev/null
@@ -0,0 +1,119 @@
+.. role:: raw-html-m2r(raw)
+   :format: html
+
+
+ChangeLog v1.1
+==============
+
+v 1.1.0
+-------
+
+**NOTE:**\ :raw-html-m2r:`<br>`
+This is a bug fix release, not a feature release. The minor version number
+was incremented due to the following changes:
+
+
+* Ported build system to CMake.
+* Ported test suite to Catch2.
+* Build requires C++11 compiler support.
+* Tests require C++17 compiler support.
+* Moved the project from launchpad to github: 
+
+  * Source: https://github.com/m6w6/libmemcached
+  * Documentation: https://m6w6.github.io/libmemcached
+  * Continuous Integration:
+
+    * Github: https://github.com/m6w6/libmemcached/actions (Linux, MacOS **·** amd64)
+    * Travis: https://travis-ci.org/m6w6/libmemcached (Linux **·** arm64, ppc64le, s390x)
+    * Cirrus: https://cirrus-ci.com/m6w6/libmemcached (FreeBSD **·** amd64)
+
+..
+
+   released YYYY-MM-DD
+
+
+
+* Fix build failure due to comparison of incompatible types in bin/memflush and bin/memstat.
+* Fix wrong type of memcached_instance_st::server_timeout_counter_query_id from uint32_t to uint64_t.
+* Fix memcached_dump():
+  returned MEMCACHED_CLIENT_ERROR on request to dump illegal slab id.
+* Fix bin/memcapable:
+  failed with "No hostname was provided" when providing a hostname.
+* Fix hashkit/murmur and hashkit/murur3:
+  undefined behavior on platforms requiring aligned access.
+* Fix Memcache::set():
+  possible subscription of empty vector.
+* Fix libmemcached_util_version_check().
+* Fix ketama/consistent hashing:
+  crash on reallocation of continuum.
+* Fix `gh #90 <https://github.com/m6w6/libmemcached/issues/90>`_\ :
+  Build fails on Darwin.
+* Fix `gh #83 <https://github.com/m6w6/libmemcached/issues/83>`_\ :
+  memcp waits forever if file no found.
+* Fix `gh #80 <https://github.com/m6w6/libmemcached/issues/80>`_\ :
+  memparse docs.
+* Fix `gh #72 <https://github.com/m6w6/libmemcached/issues/72>`_
+  and `gh #47 <https://github.com/m6w6/libmemcached/issues/47>`_\ :
+  memcached_return_t docs.
+* Fix `gh #62 <https://github.com/m6w6/libmemcached/issues/62>`_\ :
+  uint32_t overflow cause busy loop.
+* Removed restriction of UDP+IPv6.
+* Fix SERVER_ERROR_MEMORY_ALLOCATION_FAILURE: 
+  recognize more strings returned by the server.
+* Fix `gh #13 <https://github.com/m6w6/libmemcached/issues/13>`_\ :
+  reset continuum counter after freeing them.
+* Fix `gh #14 <https://github.com/m6w6/libmemcached/issues/14>`_
+  and `gh #17 <https://github.com/m6w6/libmemcached/issues/17>`_\ :
+  SASL: AUTH_CONTINUE was considered a failure and caused IO reset.
+* Fix `gh #25 <https://github.com/m6w6/libmemcached/issues/25>`_\ :
+  hashkit/murmur3 unavailable.
+* Fix missing handling of EAGAIN for non-blocking unix domain socket.
+* Fix `gh #35 <https://github.com/m6w6/libmemcached/issues/35>`_\ :
+  handling of BEHAVIOR_REMOVE_FAILED_SERVERS.
+* Fix `gh #41 <https://github.com/m6w6/libmemcached/issues/41>`_\ :
+  ensure stable sort on continuum host key collision.
+* Fix `gh #42 <https://github.com/m6w6/libmemcached/issues/42>`_\ :
+  MEMCACHED_MAX_BUFFER docs.
+* Fix `gh #43 <https://github.com/m6w6/libmemcached/issues/43>`_\ :
+  libmemcached_configuration docs.
+* Fix `gh #46 <https://github.com/m6w6/libmemcached/issues/46>`_\ :
+  clarification on millisecond timeout docs.
+* Fix `gh #50 <https://github.com/m6w6/libmemcached/issues/50>`_\ :
+  memcached_fetch_result() can return previously returned data.
+* Fix `gh #53 <https://github.com/m6w6/libmemcached/issues/53>`_\ :
+  stack overflow in memcached_fetch_result().
+* Fix `gh #57 <https://github.com/m6w6/libmemcached/issues/57>`_\ :
+  include <inttypes.h> vs :raw-html-m2r:`<cinttypes>`
+* Fix `gh #58 <https://github.com/m6w6/libmemcached/issues/58>`_\ :
+  more specific error messages when connect() fails.
+* Fix `gh #59 <https://github.com/m6w6/libmemcached/issues/59>`_\ :
+  bin/memcat: typo in "No servers provied".
+* Fix `gh #77 <https://github.com/m6w6/libmemcached/issues/77>`_\ :
+  undeclared UINT64_C in ketama.cc.
+* Fix `gh #12 <https://github.com/m6w6/libmemcached/issues/12>`_\ :
+  never reconnects after connection reset (binary protocol).
+* Fix `gh #49 <https://github.com/m6w6/libmemcached/issues/49>`_\ :
+  assertion memcached_failed(rc) failed in memcached_send_ascii().
+* Fix `gh #67 <https://github.com/m6w6/libmemcached/issues/67>`_\ :
+  get returns NOTFOUND on timeout.
+* Fix `gh #76 <https://github.com/m6w6/libmemcached/issues/76>`_\ :
+  memcached_touch() crashes when expiration=-1 (ASCII only).
+* Fix `gh #23 <https://github.com/m6w6/libmemcached/issues/23>`_\ :
+  build fails with bison 2.3.
+* Fix memaslap: build fails with newer compiler versions.
+* Fix usage of strerror_r() implementations returning pointer to char.
+* Fix pipelining commands with memcached >= 1.6.
+* Fixed memcached_stat_get_value(): buffer overflow.
+* Fix memcached_stat(): undefined behavior due to unintialized memcached_return_t.
+* Fix SASL tests: requires SASL_PWDB_CONF.
+* Fix bin/memaslap to idnentify itself as memaslap instead of memslap.
+* Fix bin/memcapable to work with memcached >= 1.6.
+* Fix murmur and murmur3 hashes on big endian platforms.
+* Fix `gh #82 <https://github.com/m6w6/libmemcached/issues/82>`_\ ,
+  `gh #64 <https://github.com/m6w6/libmemcached/issues/64>`_ and
+  `gh #21 <https://github.com/m6w6/libmemcached/issues/21>`_\ :
+  clarify documentation on replication.
+
+----
+
+See :doc:`ChangeLog-1.0 <./ChangeLog-1.0>` for changes prior v1.1.
diff --git a/docs/source/changelogs.rst b/docs/source/changelogs.rst
new file mode 100644 (file)
index 0000000..bc6d19a
--- /dev/null
@@ -0,0 +1,12 @@
+Change Logs
+===========
+
+.. toctree::
+
+    ChangeLog-1.1
+
+.. toctree::
+    :maxdepth: 1
+
+    ChangeLog-1.0
+    ChangeLog-0
diff --git a/docs/source/conf.py.in b/docs/source/conf.py.in
deleted file mode 100644 (file)
index 5dba3f3..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import sys, os
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.insert(0, os.path.abspath('.'))
-
-
-# -- General configuration -----------------------------------------------------
-
-#needs_sphinx = '1.0'
-extensions = [@SPHINX_EXTENSIONS@]
-templates_path = ['_templates']
-source_suffix = '.rst'
-master_doc = 'index'
-pygments_style = 'sphinx'
-
-primary_domain = 'cpp'
-default_role = 'any'
-
-project = u'libmemcached'
-version = '@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@'
-release = '@PROJECT_VERSION@'
-
-smartquotes = False
-
-# -- Options for HTML output ---------------------------------------------------
-
-html_theme = '@SPHINX_THEME@'
-html_theme_options = {@SPHINX_THEME_OPTIONS@}
-html_domain_indices = False
-html_show_sourcelink = False
-html_copy_source = False
-#manpages_url = 'http://man7.org/linux/man-pages/man{section}/{page}.{section}.html'
-manpages_url = 'https://linux.die.net/man/{section}/{page}'
-
-# -- Options for manual page output --------------------------------------------
-
-# Skip a separate AUTHOR section
-man_authors = []
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-man_pages = [
-  ('libhashkit'                                ,'libhashkit'                              ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_create'                 ,'hashkit_clone'                           ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_create'                 ,'hashkit_create'                          ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_create'                 ,'hashkit_free'                            ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_create'                 ,'hashkit_is_allocated'                    ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_function'               ,'hashkit_function'                        ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_function'               ,'hashkit_get_distribution_function'       ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_function'               ,'hashkit_get_function'                    ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_function'               ,'hashkit_set_custom_distribution_function',u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_function'               ,'hashkit_set_custom_function'             ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_function'               ,'hashkit_set_distribution_function'       ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_function'               ,'hashkit_set_function'                    ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_functions'              ,'hashkit_crc32'                           ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_functions'              ,'hashkit_fnv1_32'                         ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_functions'              ,'hashkit_fnv1_64'                         ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_functions'              ,'hashkit_fnv1a_32'                        ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_functions'              ,'hashkit_fnv1a_64'                        ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_functions'              ,'hashkit_functions'                       ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_functions'              ,'hashkit_hsieh'                           ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_functions'              ,'hashkit_jenkins'                         ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_functions'              ,'hashkit_md5'                             ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_functions'              ,'hashkit_murmur'                          ,u'libhashkit Documentation'            ,man_authors,3),
-  ('libhashkit/hashkit_value'                  ,'hashkit_value'                           ,u'libhashkit Documentation'            ,man_authors,3),
-
-  ('libmemcached'                              ,'libmemcached'                            ,u'C/C++ Client Library for memcached'  ,man_authors,3),
-  ('libmemcached/configuration'                ,'libmemcached_check_configuration'        ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/configuration'                ,'libmemcached_configuration'              ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/configuration'                ,'memcached'                               ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/examples'                     ,'libmemcached_examples'                   ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_analyze'            ,'memcached_analyze'                       ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_append'             ,'memcached_append_by_key'                 ,u'Appending to or Prepending Data'     ,man_authors,3),
-  ('libmemcached/memcached_append'             ,'memcached_append'                        ,u'Appending to or Prepending Data'     ,man_authors,3),
-  ('libmemcached/memcached_append'             ,'memcached_prepend_by_key'                ,u'Appending to or Prepending Data'     ,man_authors,3),
-  ('libmemcached/memcached_append'             ,'memcached_prepend'                       ,u'Appending to or Prepending Data'     ,man_authors,3),
-  ('libmemcached/memcached_auto'               ,'memcached_auto'                          ,u'Incrementing and Decrementing Values',man_authors,3),
-  ('libmemcached/memcached_auto'               ,'memcached_decrement'                     ,u'Incrementing and Decrementing Values',man_authors,3),
-  ('libmemcached/memcached_auto'               ,'memcached_decrement_with_initial'        ,u'Incrementing and Decrementing Values',man_authors,3),
-  ('libmemcached/memcached_auto'               ,'memcached_increment'                     ,u'Incrementing and Decrementing Values',man_authors,3),
-  ('libmemcached/memcached_auto'               ,'memcached_increment_with_initial'        ,u'Incrementing and Decrementing Values',man_authors,3),
-  ('libmemcached/memcached_behavior'           ,'memcached_behavior_get'                  ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_behavior'           ,'memcached_behavior_set'                  ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_behavior'           ,'memcached_behavior'                      ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_callback'           ,'memcached_callback_get'                  ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_callback'           ,'memcached_callback_set'                  ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_callback'           ,'memcached_callback'                      ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_cas'                ,'memcached_cas_by_key'                    ,u'Storing and Replacing Data'          ,man_authors,3),
-  ('libmemcached/memcached_cas'                ,'memcached_cas'                           ,u'Atomic Compare and Swap'             ,man_authors,3),
-  ('libmemcached/memcached_create'             ,'memcached_clone'                         ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_create'             ,'memcached_create'                        ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_create'             ,'memcached_free'                          ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_create'             ,'memcached_servers_reset'                 ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_delete'             ,'memcached_delete_by_key'                 ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_delete'             ,'memcached_delete'                        ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_dump'               ,'memcached_dump'                          ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_exist'              ,'memcached_exist_by_key'                  ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_exist'              ,'memcached_exist'                         ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_fetch'              ,'memcached_fetch'                         ,u'Retrieving data from the server'     ,man_authors,3),
-  ('libmemcached/memcached_flush_buffers'      ,'memcached_flush_buffers'                 ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_flush'              ,'memcached_flush'                         ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_generate_hash_value','memcached_generate_hash'                 ,u'Generating hash values directly'     ,man_authors,3),
-  ('libmemcached/memcached_generate_hash_value','memcached_generate_hash_value'           ,u'Generating hash values directly'     ,man_authors,3),
-  ('libmemcached/memcached_get'                ,'memcached_fetch_execute'                 ,u'Retrieving data from the server'     ,man_authors,3),
-  ('libmemcached/memcached_get'                ,'memcached_fetch_result'                  ,u'Retrieving data from the server'     ,man_authors,3),
-  ('libmemcached/memcached_get'                ,'memcached_get_by_key'                    ,u'Retrieving data from the server'     ,man_authors,3),
-  ('libmemcached/memcached_get'                ,'memcached_get'                           ,u'Retrieving data from the server'     ,man_authors,3),
-  ('libmemcached/memcached_get'                ,'memcached_mget_by_key'                   ,u'Retrieving data from the server'     ,man_authors,3),
-  ('libmemcached/memcached_get'                ,'memcached_mget_execute_by_key'           ,u'Retrieving data from the server'     ,man_authors,3),
-  ('libmemcached/memcached_get'                ,'memcached_mget_execute'                  ,u'Retrieving data from the server'     ,man_authors,3),
-  ('libmemcached/memcached_get'                ,'memcached_mget'                          ,u'Retrieving data from the server'     ,man_authors,3),
-  ('libmemcached/memcached_last_error'         ,'memcached_last_error_errno'              ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_last_error'         ,'memcached_last_error_message'            ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_last_error'         ,'memcached_last_error'                    ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_memory_allocators'  ,'memcached_get_memory_allocators'         ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_memory_allocators'  ,'memcached_memory_allocators'             ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_memory_allocators'  ,'memcached_set_memory_allocators_context' ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_memory_allocators'  ,'memcached_set_memory_allocators'         ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_quit'               ,'memcached_quit'                          ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_result_st'          ,'memcached_result_cas'                    ,u'Working with result sets'            ,man_authors,3),
-  ('libmemcached/memcached_result_st'          ,'memcached_result_create'                 ,u'Working with result sets'            ,man_authors,3),
-  ('libmemcached/memcached_result_st'          ,'memcached_result_flags'                  ,u'Working with result sets'            ,man_authors,3),
-  ('libmemcached/memcached_result_st'          ,'memcached_result_free'                   ,u'Working with result sets'            ,man_authors,3),
-  ('libmemcached/memcached_result_st'          ,'memcached_result_key_length'             ,u'Working with result sets'            ,man_authors,3),
-  ('libmemcached/memcached_result_st'          ,'memcached_result_key_value'              ,u'Working with result sets'            ,man_authors,3),
-  ('libmemcached/memcached_result_st'          ,'memcached_result_length'                 ,u'Working with result sets'            ,man_authors,3),
-  ('libmemcached/memcached_result_st'          ,'memcached_result_st'                     ,u'Working with result sets'            ,man_authors,3),
-  ('libmemcached/memcached_result_st'          ,'memcached_result_value'                  ,u'Working with result sets'            ,man_authors,3),
-  ('libmemcached/memcached_return_t'           ,'memcached_return_t'                      ,u'Return type values '                 ,man_authors,3),
-  ('libmemcached/memcached_sasl'               ,'memcached_destroy_sasl_auth_data'        ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_sasl'               ,'memcached_get_sasl_callbacks'            ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_sasl'               ,'memcached_sasl_set_auth_data'            ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_sasl'               ,'memcached_sasl'                          ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_sasl'               ,'memcached_set_sasl_callbacks'            ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_servers'            ,'memcached_server_add'                    ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_servers'            ,'memcached_server_add_unix_socket'        ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_servers'            ,'memcached_server_count'                  ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_servers'            ,'memcached_server_cursor'                 ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_servers'            ,'memcached_server_list'                   ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_servers'            ,'memcached_server_push'                   ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_servers'            ,'memcached_server_st'                     ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_servers'            ,'memcached_servers'                       ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_server_st'          ,'memcached_server_list_append'            ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_server_st'          ,'memcached_server_list_count'             ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_server_st'          ,'memcached_server_list_free'              ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_server_st'          ,'memcached_servers_parse'                 ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_set_encoding_key'   ,'memcached_set_encoding_key'              ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_set'                ,'memcached_add_by_key'                    ,u'Storing and Replacing Data'          ,man_authors,3),
-  ('libmemcached/memcached_set'                ,'memcached_add'                           ,u'Storing and Replacing Data'          ,man_authors,3),
-  ('libmemcached/memcached_set'                ,'memcached_replace_by_key'                ,u'Storing and Replacing Data'          ,man_authors,3),
-  ('libmemcached/memcached_set'                ,'memcached_replace'                       ,u'Storing and Replacing Data'          ,man_authors,3),
-  ('libmemcached/memcached_set'                ,'memcached_set_by_key'                    ,u'Storing and Replacing Data'          ,man_authors,3),
-  ('libmemcached/memcached_set'                ,'memcached_set'                           ,u'Storing and Replacing Data'          ,man_authors,3),
-  ('libmemcached/memcached_stats'              ,'memcached_stat_execute'                  ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_stats'              ,'memcached_stat_get_keys'                 ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_stats'              ,'memcached_stat_get_value'                ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_stats'              ,'memcached_stat_servername'               ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_stats'              ,'memcached_stats'                         ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_stats'              ,'memcached_stat'                          ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_strerror'           ,'memcached_strerror'                      ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_touch'              ,'memcached_touch_by_key'                  ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_touch'              ,'memcached_touch'                         ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_user_data'          ,'memcached_get_user_data'                 ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_user_data'          ,'memcached_set_user_data'                 ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_user_data'          ,'memcached_user_data'                     ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_verbosity'          ,'memcached_verbosity'                     ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_version'            ,'memcached_lib_version'                   ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcached/memcached_version'            ,'memcached_version'                       ,u'libmemcached Documentation'          ,man_authors,3),
-
-  ('libmemcachedutil'                          ,'libmemcachedutil'                        ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcachedutil/memcached_pool'           ,'memcached_pool_behavior_get'             ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcachedutil/memcached_pool'           ,'memcached_pool_behavior_set'             ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcachedutil/memcached_pool'           ,'memcached_pool_create'                   ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcachedutil/memcached_pool'           ,'memcached_pool_destroy'                  ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcachedutil/memcached_pool'           ,'memcached_pool_fetch'                    ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcachedutil/memcached_pool'           ,'memcached_pool_pop'                      ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcachedutil/memcached_pool'           ,'memcached_pool_push'                     ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcachedutil/memcached_pool'           ,'memcached_pool_release'                  ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcachedutil/memcached_pool'           ,'memcached_pool_st'                       ,u'libmemcached Documentation'          ,man_authors,3),
-  ('libmemcachedutil/memcached_pool'           ,'memcached_pool'                          ,u'libmemcached Documentation'          ,man_authors,3),
-
-  ('bin/memcapable'                            , 'memcapable'                             , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memcat'                                , 'memcat'                                 , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memcp'                                 , 'memcp'                                  , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memdump'                               , 'memdump'                                , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memerror'                              , 'memerror'                               , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memflush'                              , 'memflush'                               , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memrm'                                 , 'memrm'                                  , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memaslap'                              , 'memaslap'                               , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memslap'                               , 'memslap'                                , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memstat'                               , 'memstat'                                , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memexist'                              , 'memexist'                               , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memparse'                              , 'memparse'                               , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memping'                               , 'memping'                                , u'libmemcached Documentation'         , man_authors, 1),
-  ('bin/memtouch'                              , 'memtouch'                               , u'libmemcached Documentation'         , man_authors, 1),
-  ]
-
-rst_prolog = """
-.. |libhashkit_version| replace:: @LIBHASHKIT_VERSION_MAJOR@.@LIBHASHKIT_VERSION_MINOR@
-.. |libmemcached_version| replace:: @LIBMEMCACHED_VERSION_MAJOR@.@LIBMEMCACHED_VERSION_MINOR@
-"""
-
-@SPHINX_CONF_APPEND@
index 8bba184cbe1a0722f96a4f11f4927c380310d415..9f8f76edef444415231718be331729ca6dbdbf9e 100644 (file)
@@ -1,7 +1,7 @@
 Copyright
 =========
 
- * | 2011-2013 Brian Aker, DataDifferential
+ * | 2006-2014 Brian Aker, DataDifferential
    | https://datadifferential.com/
  * | 2020 Michael Wallner, SmugMug Inc
    | https://smugmug.com/
index 67c22628ccda484a29e5b254197f8e10066cd3b1..e82ffb8f15a15d5e6acaec11c8f67e807d61e174 100644 (file)
@@ -7,37 +7,19 @@ memory usage, thread safe, and provide full access to server side methods.
 
 
 .. toctree::
-    :caption: libmemcached
     :titlesonly:
 
     Introduction <libmemcached>
     libmemcached/index
+    libmemcachedutil API <libmemcachedutil/index>
+    libhashkit API <libhashkit/index>
+    bin/index
     libmemcached/index_misc
 
-.. toctree::
-    :titlesonly:
-    :caption: libmemcachedutil
-
-    Introduction <libmemcachedutil>
-    libmemcachedutil/index
-
-.. toctree::
-    :titlesonly:
-    :caption: libhashkit
-
-    Introduction <libhashkit>
-    libhashkit/index
-
 .. toctree::
     :maxdepth: 1
-    :caption: Client Applications
-
-    bin/index
-
-.. toctree::
-    :caption: Copyright
-    :hidden:
 
+    changelogs
     copyright
 
 Index
diff --git a/docs/source/libhashkit.rst b/docs/source/libhashkit.rst
deleted file mode 100644 (file)
index 9bda5cb..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-libhashkit - C/C++ hashing library
-==================================
-
-SYNOPSIS
---------
-
-#include <libhashkit-|libhashkit_version|/hashkit.h>
-  Compile and link with -lhashkit.
-
-DESCRIPTION
------------
-
-`libhashkit` is a small and thread-safe client library that provides a collection
-of useful hashing algorithms.
-
-`libhashkit` is distributed with `libmemcached`.
-
-SEE ALSO
---------
-
-.. only:: man
-
-    :manpage:`libmemcached(3)`
-    :manpage:`hashkit_create(3)`
-    :manpage:`hashkit_function(3)`
-    :manpage:`hashkit_functions(3)`
-    :manpage:`hashkit_value(3)`
-
-.. only:: html
-
-    * :doc:`libmemcached`
-    * :doc:`libhashkit/hashkit_create`
-    * :doc:`libhashkit/hashkit_function`
-    * :doc:`libhashkit/hashkit_functions`
-    * :doc:`libhashkit/hashkit_value`
-
index 670bdd9cd50d6c85aaa5749e9eea0cb7d3197fba..b88124dc5c021819bdc31522ad3efd440528d031 100644 (file)
@@ -69,6 +69,6 @@ SEE ALSO
 
 .. only:: html
 
-    * :doc:`../libhashkit`
+    * :doc:`index`
     * :doc:`hashkit_value`
     * :doc:`hashkit_function`
index b55f3fb9f1c2f04a01c989cdc77efd90b61c794e..e18f7d5076b4ade2ed7d8cba3e81817f219d0727 100644 (file)
@@ -129,7 +129,7 @@ SEE ALSO
 
 .. only:: html
 
-    * :doc:`../libhashkit`
+    * :doc:`index`
     * :doc:`hashkit_create`
     * :doc:`hashkit_functions`
 
index 9eccb0609fbb340b57f239314691df136e26d25f..d637209ed5f52e3b3f01cfd4ecc9a43ef105196f 100644 (file)
@@ -56,7 +56,7 @@ SEE ALSO
 
 .. only:: html
 
-    * :doc:`../libhashkit`
+    * :doc:`index`
     * :doc:`hashkit_create`
     * :doc:`hashkit_function`
 
index 101630c72179c437e4234be325c321689d73e6cf..8daf0e4d1e9a6c3e95c165bd921b7df26474aff5 100644 (file)
@@ -38,7 +38,7 @@ SEE ALSO
 
 .. only:: html
 
-    * :doc:`../libhashkit`
+    * :doc:`index`
     * :doc:`hashkit_create`
     * :doc:`hashkit_function`
     * :doc:`hashkit_functions`
index 3915fd9f3070d8fe61cc618712ffa80f43dec2df..1624655962410adf999a79f74c2103c7faf46079 100644 (file)
@@ -1,5 +1,19 @@
-libhashkit API
-==============
+libhashkit - C/C++ hashing library
+==================================
+
+SYNOPSIS
+--------
+
+#include <libhashkit-|libhashkit_version|/hashkit.h>
+  Compile and link with -lhashkit.
+
+DESCRIPTION
+-----------
+
+`libhashkit` is a small and thread-safe client library that provides a collection
+of useful hashing algorithms.
+
+`libhashkit` is distributed with `libmemcached`.
 
 .. toctree::
     :titlesonly:
@@ -9,3 +23,18 @@ libhashkit API
     hashkit_function
     hashkit_functions
     hashkit_value
+
+SEE ALSO
+--------
+
+.. only:: man
+
+    :manpage:`libmemcached(3)`
+    :manpage:`hashkit_create(3)`
+    :manpage:`hashkit_function(3)`
+    :manpage:`hashkit_functions(3)`
+    :manpage:`hashkit_value(3)`
+
+.. only:: html
+
+    * :doc:`../libmemcached`
index 6c842e819d3cce6be6f7313528b20caaf8002956..f630a391fc8456e2746df90053ef5c28e4332886 100644 (file)
@@ -130,8 +130,8 @@ UTILITY LIBRARIES
 
 .. only:: html
 
-    * :doc:`libhashkit`
-    * :doc:`libmemcachedutil`
+    * :doc:`libhashkit/index`
+    * :doc:`libmemcachedutil/index`
 
 SEE ALSO
 --------
index b1d2c81a9c78b15c4cd314d427468d0a4329a77f..c477d99671d95d65ebc0a151ec712dcdb94894c2 100644 (file)
@@ -1,8 +1,8 @@
-Misc
-====
+Miscellaneous
+=============
 
 .. toctree::
-    :titlesonly:
+    :maxdepth: 1
 
     Configuration <configuration>
     Constants <constants>
diff --git a/docs/source/libmemcachedutil.rst b/docs/source/libmemcachedutil.rst
deleted file mode 100644 (file)
index f17cd86..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-
-libmemcachedutil - C/C++ utilities extending libmemcached
-=========================================================
-
-Utility library for libmemcached
-
-SYNOPSIS
---------
-
-#include <libmemcachedutil-|libmemcached_version|/util.h>
-  Compile and link with -lmemcachedutil -lmemcached
-
-DESCRIPTION
------------
-
-`libmemcachedutil` is a small and thread-safe client library that provides extra
-functionality built on top of `libmemcached`.
-
-THREADS AND PROCESSES
----------------------
-
-Do not try to access an instance of `memcached_st` from multiple threads at the
-same time. If you want to access memcached from multiple threads you should
-either clone the `memcached_st`, or use the memcached pool implementation. See
-`memcached_pool`.
-
-SEE ALSO
---------
-
-.. only:: man
-
-    :manpage:`libmemcached(3)`
-    :manpage:`memcached_pool(3)`
-    :manpage:`memcached_pool_destroy(3)`
-    :manpage:`memcached_pool_pop(3)`
-    :manpage:`memcached_pool_push(3)`
-
-.. only:: html
-
-    * :doc:`../libmemcached`
-    * :doc:`libmemcachedutil/memcached_pool`
index e16691ecd97cff43fdc82a25ec7ab49602db3d49..0d8f65c81271360fb073655103d8a3edf240f815 100644 (file)
@@ -1,8 +1,46 @@
-libmemcachedutil API
-====================
+libmemcachedutil - C/C++ utilities extending libmemcached
+=========================================================
+
+Utility library for libmemcached
+
+SYNOPSIS
+--------
+
+#include <libmemcachedutil-|libmemcached_version|/util.h>
+  Compile and link with -lmemcachedutil -lmemcached
+
+DESCRIPTION
+-----------
+
+`libmemcachedutil` is a small and thread-safe client library that provides extra
+functionality built on top of `libmemcached`.
+
+THREADS AND PROCESSES
+---------------------
+
+Do not try to access an instance of `memcached_st` from multiple threads at the
+same time. If you want to access memcached from multiple threads you should
+either clone the `memcached_st`, or use the memcached pool implementation. See
+`memcached_pool`.
 
 .. toctree::
     :titlesonly:
     :caption: Additional Utilities
 
     memcached_pool
+
+SEE ALSO
+--------
+
+.. only:: man
+
+    :manpage:`libmemcached(3)`
+    :manpage:`memcached_pool(3)`
+    :manpage:`memcached_pool_destroy(3)`
+    :manpage:`memcached_pool_pop(3)`
+    :manpage:`memcached_pool_push(3)`
+
+.. only:: html
+
+    * :doc:`../libmemcached`
+