Revision history for Cache

1.08 2015-01-22
 - try to avoid some race conditions (thanks, Petr Písař)
 - typo fixes (thanks, David Steinbrunner)

1.07 2014-09-17
 - fix a bug where we checked @$ instead of $@ after eval

1.06 2009-02-28
 - updated the project homepage and added notes about the CHI project
 - fixed extra "use vars" in CacheUtils

1.05 2006-05-26
 - fixed infinite loop with auto_purge_on_get
 - fixed directory paths on Windows partitions
 - NullCache uses BaseCache

1.04 2005-03-17-11-23
 - release version 1.04
 - repair permissions on temp cache files

1.03 2004-10-04-11-23
 - release version 1.03
 - modified the FileBackend to use the more robust File::Temp
 - "officially" recommend FileCache over SharedMemoryCache
 - added more robust error checking for shared memory caches
 - added a check for invalid frozen data
 - added $1 to all error messages

1.02 2003-04-15-10-41
 - released version 1.02
 - require Digest::SHA1 2.02, optionally IPC::ShareLite 0.09
 - use Storable's "nfreeze" instead of "freeze"
 - added notes on locking and Storable to the README
 - updated documentation on expiration units
 - modified the quoting of the untainted path regex
 - fixed the duplicated get_keys in NullCache
 - applied patch to ensure consistent state if the filesystem fills up
 - applied patch to ensure initialization of the memory cache hash

1.01 2002-04-14-01-30
 - released version 1.01
 - switched to Digest::SHA1
 - updated copyright dates

1.0 2002-04-06-18-51
 - released version 1.0
 - localized scope of global file and directory handles (FILE and DIR)
 - applied Jonathan Swartz's patch for a much better untainting regex
 - changed _Untaint_String to throw an exception on a taint
 - further improved the fix to prevent race conditions that caused the
   tests to fail
 - exposed the get_namespaces method on Cache
 - fixed the failing Win32 tests caused by fileglobs in Makefile.PL
 - applied Yves Orton's patch in _Make_Path to fix warnings on Win32

0.99 2001-12-09-18-45
 - released version 0.99
 - major refactoring of code
 - replaced non-standard usage of SUCCESS and FAILURE with
 - replaced non-standard usage of TRUE and FALSE with 1 and 0
 - migrated from the term "identifier" to the more standard term "key"
   and marked the old public methods with identifier as deprecated
 - broke out the MemoryBackend, FileBackend, SharedMemoryBackend into
   distinct and reusable classes
 - fixed a long outstanding bug in the unit tests that made working
   caches appear to fail
 - changed the meaning of object and cache size for file system based
   caches to consistently reflect the total size of the objects on disk,
   but not including the directory overhead
 - changed format of persisted data in the FileBackend
 - major rewrite of documentation

0.09 2001-09-10-12-10
 - released version 0.09
 - applied Axel Beckert patch to fix the expiration units
 - applied Ken Williams's directory creation patch to pass all tests
 - changed the license to be either the GPL or the Artistic license
 - added Jay Sachs' implementation of NullCache
 - modified the remove methods to avoid croaking if two cache
   instances are both purging or limiting at the same time
 - migrated to a factory-like model with private constructors
   to fix the auto_purge_interval functionality
 - updated the documentation to better reflect that size means
   size in bytes
 - started version 0.09

0.08 2001-04-26-08-53
 - released version 0.08
 - renamed the auto_purge option to auto_purge_interval
 - added the auto_purge_on_set and auto_purge_on_get options
 - moved the Auto_Purge and Reset_Auto_Purge methods to BaseCache
   as the instance methods _auto_purge and _reset_auto_purge
 - added the auto_purge option and property to the base cache interface
   and implementations.  This option will call the purge method on
   the cache after the specified interval expires
 - renamed _set_namespace to set_namespace (i.e., made it public)
 - added the set_object method to the cache interface
 - updated the test scripts and CREDITS file
 - updated the perldoc formatting to look better in HTML
 - removed the $VERSION from SizeAwareCache
 - started version 0.08

0.07 2001-03-27-08-55
 - released version 0.07
 - prepared for initial CPAN release
 - improved Cache::Cache documentation
 - removed last "use IPC::Shareable"
 - added support in the Makefile.PL to conditionally build the
   SharedMemoryCache, which requires IPC::ShareLite, and thus runs only
   on certain architectures.  Also broke out the IPC related routines
   into the SharedCacheUtils package.
 - started version 0.07

0.06 2001-03-23-08-36
 - release version 0.06
 - added the get_identifiers method to the Cache interface, implemented
   the method for all classes, added a new test, and updated the test
 - added the size property to Object
 - added the _freeze and _thaw methods to the BaseCache class and
   modified all children classes to use them
 - revert to separate freeze and thaws on the memory based caches to
   ensure that cached data isn't modified at any time
 - major rewrite of the size aware cache logic
 - added the CacheMetaData class, which is used to efficiently keep track
   of a size aware cache state
 - refactored the instance specific limit_size routines into the
   generic Limit_Size method in CacheUtils
 - updated the size aware cache implementations to use the CacheMetaData
   and Limit_Size methods
 - improved the SizeAwareCacheTester and updated the test scripts
 - removed unnecessary clone call from the SharedMemoryCache and the
 - added exclusive locking on the shared cache for operations that
   will both read and write to the cache
 - replaced the cache_hash_ref instance property in MemoryCache with
   a class property and updated the SharedMemoryCache and
   SizeAwareSharedMemoryCache modules accordingly
 - started version 0.06

0.05 2001-03-20-10-25
 - released version 0.05
 - updated Storable dependency to 1.011
 - replaced the IPC::Shareable backend with IPC::ShareLite
 - started version 0.05

0.04 2001-03-17-10-43
 - released version 0.04
 - replaced Data::Dumper with Storable, which is now a requirement
 - implemented the SizeAwareMemoryCache and associated tests
 - implemented the SizeAwareSharedMemoryCache and associated tests
 - added the SizeAwareCache interface
 - moved max_size logic from the _store method to the set method
 - started version 0.04

0.03 2001-03-10-12-40
 - released version 0.03
 - made the FileCache more multi-user friendly by allowing a more
   permissive default directory umask, which can also be optionally
 - updated documentation and code style
 - completely rewrote and improved the limit_size method for a major
   performance gain
 - updated the syntax for expiration times to include the [number] [unit]
   format, e.g. "10 seconds"
 - added the get_object method to the Cache interface, which allows
   access to the underlying cache object (without potentially expiring
   the object)
 - added the get_namespace and get_default_expires_in methods to the
   Cache interface definition
 - updated the MANIFEST
 - checked in preliminary cache benchmarking code
 - fixed bug fixed bug #406030 -- default_expires_in never invoked
 - refactored common code into BaseCache
 - use Static_Params method
 - fixed default_expires_in bug
 - added coding guidelines to STYLE
 - started version 0.03

0.02 2001-02-15-21-12
 - released version 0.02
 - added perldoc to SizeAwareFileCache
 - created SizeAwareFileCache
 - added the SizeAwareCacheTester module
 - refactored common test code into the AbstractCacheTester module
 - added the Recursively_List_Files_With_Paths routine to CacheUtils
 - marked the FileCache and MemoryCache as ISA Cache::Cache
 - updated the MANIFEST
 - started version 0.02

0.01 2001-02-13-16-16
 - released version 0.01
 - implemented Get_Temp_Dir to make the FileCache root more OS
 - started version 0.01