Skip to content

v2.3.3

Compare
Choose a tag to compare
@bitfaster bitfaster released this 11 Nov 21:36
· 153 commits to main since this release
532db75

What's changed

  • Eliminated all races in ConcurrentLru eviction logic, and the transition between the cold cache and warm cache eviction routines. This prevents a variety of rare 'off by one item count' situations that could needlessly evict items when the cache is within bounds.
  • Fix ConcurrentLru.Clear() to always clear the cache when items in the warm queue are marked as accessed.
  • Optimize ConcurrentLfu drain buffers logic to give ~5% better throughput (measured by the eviction throughput test).
  • Cache the ConcurrentLfu drain buffers delegate to prevent allocating a closure when scheduling maintenance.
  • BackgroundThreadScheduler and ThreadPoolScheduler now use TaskScheduler.Default, instead of implicitly using TaskScheduler.Current (fixes CA2008).
  • ScopedAsyncCache now internally calls ConfigureAwait(false) when awaiting tasks (fixes CA2007).
  • Fix ConcurrentLru debugger display on .NET Standard.

Full changelog: v2.3.2...v2.3.3