Skip to content

Releases: ben-manes/caffeine

2.8.2

27 Apr 07:34

Choose a tag to compare

Cache

  • Added optimistic fast path for putIfAbsent to avoid locking (apache/openwhisk#2797)
  • Fixed race causing an incorrect removal cause (#412)
  • Fixed SCM connection URLs (#394)

JCache

  • Prefer the thread context classloader (#387)

2.8.1

15 Jan 23:30

Choose a tag to compare

JCache

  • Allow for using a custom config source (#312)

2.8.0

06 Aug 05:16

Choose a tag to compare

Cache

  • Included the license file in the jar (#325)
  • Added RemovalCause to StatsCounter (#304)
  • Added getAll support to manual caches (#310)
  • Fixed long overflow in statistics (google/guava#3503)
  • Added Scheduler for prompt eviction of expired entries (#195)

JCache

  • Fixed assigning ticker to cache builder (#313)

2.7.0

24 Feb 18:41

Choose a tag to compare

Cache

  • Added async asMap() view (#156)
  • Introduced AsyncCache for manual async cache (#246)
  • Fixed async expiration when create races with reads (#298)
  • Improved hit rates by using an adaptive eviction policy (#106)
  • Fixed refresh to use the stats ticker for recording the load time (#240)
  • Rescheduled async maintenance immediately if pending work remains (#225)
  • Migrated from JSR-305 annotations to CheckerFramework & ErrorProne (#242)

JCache

  • Added config file setting for the executor (#276)

This release includes improvements to the eviction policy by using a hill climber to optimize for frequency or recency. For more details, see the HighScalability article and our paper Adaptive Software Cache Management.

2.6.2

22 Feb 03:18

Choose a tag to compare

Cache

  • Changed the default initialCapacity to match ConcurrentHashMap's from 0 to 16 (#218)
  • Fixed variable expiration's duration calculation overflowing due to timestamp race (#217)
  • Avoiding method handles due to memory leak caused by JDK-8174749 (#222)
  • Promote using java.time.Duration instead of long, TimeUnit pair (#221)
  • Improved Guava compatibility for bulk get iteration order (#220)

2.6.1

28 Dec 02:27

Choose a tag to compare

Cache

  • Fixed null value being propagated to callbacks on null result of a CompletableFuture (#206)
  • Improved emulation of synchronous computations in AsyncLoadingCache asMap() view
  • Added Automatic-Module-Name manifest entry for Java 9 modularity (#211)
  • Significantly reduced the jar size due to code generation bloat (#110)
  • Fixed futures not expiring due to stale read of the time (#212)

JCache

  • Fixed Cache invoke() not notifying the writer when the entry was loaded and modified (#210)
  • Upgraded to specification version 1.1.0

ACM's Transaction on Storage has published our paper on TinyLFU! To download the paper legally without the paywall, please use the authorizer link in the project's readme.

2.6.0

01 Nov 08:37

Choose a tag to compare

Cache

  • Added put methods to Policy.VarExpiration that specify the entry's expiration time (#163)
  • Fixed early expiration due to long computations and a stale read of the time (#191)

JCache

  • Fixed cache not being created from the external configuration properly (#194)
  • Passes 1.1 preview TCK except for backwards incompatible 1.0 TCK tests

2.5.6

23 Sep 00:08

Choose a tag to compare

JCache

  • Fixed invoke on an expired entry when a CacheLoader is used (#187)

2.5.5

16 Aug 21:16

Choose a tag to compare

2.5.4

04 Aug 22:22

Choose a tag to compare

  • Disallow subsequent refreshing of an entry when waiting for a slow reload (#175)