Liking cljdoc? Tell your friends :D

core.cache v0.5.0 Release Notes

core.cache is a new Clojure contrib library providing the following features:

  • An underlying CacheProtocol used as the base abstraction for implementing new synchronous caches

  • A defcache macro for hooking your CacheProtocol implementations into the Clojure associative data capabilities.

  • Immutable implementations of some basic caching strategies

    • First-in-first-out (FIFOCache)
    • Least-recently-used (LRUCache)
    • Least-used (LUCache)
    • Time-to-live (TTLCache)
    • Naive cache (BasicCache)
  • Implementation of an efficient buffer replacement policy based on the low inter-reference recency set algorithm (LIRSCache) described in the LIRS paper

  • Factory functions for each existing cache type

core.cache is based on a library named Clache, found at http://github.com/fogus/clache that is planned for deprecation.

Absorb

You can use core.cache in your Leiningen and Cake projects with the following :dependencies directive in your project.clj file:

[org.clojure/core.cache "0.5.0"]

For Maven-driven projects, use the following slice of XML in your pom.xml's <dependencies> section:

<dependency>
  <groupId>org.clojure</groupId>
  <artifactId>core.cache</artifactId>
  <version>0.5.0</version>
</dependency>

Enjoy!

Places

Changes from Clache

The v0.5.0 version of core.cache is based almost wholly on the final version of Clache, with the following changes:

  • An addition of an evict function on the CacheProtocol used to explicitly remove a value from a cache based on a key. All of the existing cache types implement this function except for LIRSCache.

  • The addition of cache factory functions for all of the existing cache types

  • The associative structure behaviors are defined solely in terms of the underlying CacheProtocol

  • The SoftCache implementation was buggy and removed for now

Plans

The following capabilities are under design, development, or consideration for future versions of core.cache:

  • Asynchronous caching protocol
  • LIRSCache evict
  • Removal of the seed function from the CacheProtocol
  • Reimplementation of a cache based on soft references
  • test.generative usage
  • Deprecation of Clache
  • Documentation and examples

More planning is needed around capabilities not listed nor thought of.

Can you improve this documentation? These fine people already did:
Sean Corfield & fogus
Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close