Skip to content

Releases: TurnerSoftware/CacheTower

0.10.0

07 Aug 08:06
a5718c4
Compare
Choose a tag to compare
0.10.0 Pre-release
Pre-release

Note: This version is has package referencing issues that prevent it working properly. Please use 0.11.0 instead!

Breaking Change

  • StaleAfter no longer defaults to 0 when unspecified by @vp89 (#162)

If you want the old behaviour, you must specify a StaleAfter time of 0 yourself with the other constructor.

Other Changes

  • upgrade test sdk by @vp89 (#155)
  • Workaround for leading dash in GitHub markdown rendering by @Turnerj (#154)
  • Switch to TurnerSoftware.BuildVersioning by @Turnerj (#156)

🚀 Features

👨🏼‍💻 Contributors

@Turnerj, @mgoodfellow and @vp89

0.9.0

04 Mar 12:43
Compare
Choose a tag to compare
0.9.0 Pre-release
Pre-release

Changes

  • Performance improvements (#58, #152)
  • Added nullable reference types support (#153)
  • Changes to the behaviour of cache refreshes (#147)

0.8.0

28 Jan 05:48
Compare
Choose a tag to compare
0.8.0 Pre-release
Pre-release

Changes

🚀 Features

🐛 Bug Fixes

  • Upgrading extension support for better set/eviction triggers by @Turnerj (#138)

🧰 Maintenance

👨🏼‍💻 Contributors

@Turnerj, @dependabot-preview and @dependabot-preview[bot]

0.7.1

17 Nov 05:23
Compare
Choose a tag to compare
0.7.1 Pre-release
Pre-release

Reverting dependency updates that reference .NET 5.0-based libraries.
See #117 for more information.

Dependencies Affected

  • Downgrading Microsoft.Extensions.DependencyInjection.Abstractions from 5.0.0 to 3.1.10
  • Downgrading System.Runtime.CompilerServices.Unsafe from 5.0.0 to 4.7.1

If you are using .NET 5 and have these higher dependencies being used, you won't have an issue. It is only an issue if you were running previous versions of the runtime with these libraries under particular conditions.

In the future, these dependencies will be upgraded again.

0.7.0

17 Nov 01:58
c6d60ac
Compare
Choose a tag to compare
0.7.0 Pre-release
Pre-release

Changes

🚀 Features

🐛 Bug Fixes

🧰 Maintenance

👨🏼‍💻 Contributors

@Turnerj, @dependabot-preview and @dependabot-preview[bot]

0.6.1

17 Aug 12:37
Compare
Choose a tag to compare
0.6.1 Pre-release
Pre-release

Maintenance update - various dependencies have been updated to latest versions.

0.6.0

22 Mar 07:09
6bfb3fa
Compare
Choose a tag to compare
0.6.0 Pre-release
Pre-release

Breaking Changes

  • ICacheContext has been removed (#19 & #21)
  • TContext for CacheStack<TContext> is now provided by a factory method (with support via Dependency Injection) (#20 & #21)

Noteworthy Changes

  • Support for new context-less CacheStack with GetOrSetAsync method (#21)

0.5.0

12 Nov 00:31
Compare
Choose a tag to compare
0.5.0 Pre-release
Pre-release

Noteworthy Changes

  • Waiting tasks are given the refreshed value (492158c)
  • Avoid waiting on refresh and back populating cache in GetOrSetAsync (bb9031f)
  • More accurate connection available checking for Redis (1c28388)
  • MemoryCacheLayer now uses ConcurrentDictionary again (3beacac)
  • CacheSettings constructor logic has changed - when no StaleAfter is given, the default value is zero rather than being the same value as TimeToLive. (6dd6b15)

Performance Improvements

  • CacheStack, when multiple threads are waiting on a refreshed result, performs about 5% faster
  • CacheStack, in the caching alternative memory benchmarks, performs significantly better with memory allocations as well as a 6% performance improvement.

Notes
There are some minor memory allocation increases, primarily around going back to using ConcurrentDictionary for MemoryCacheLayer. However, these changes are somewhat offset from the overall performance increase under heavy load that wasn't possible with the custom locking solution.

With the CacheStack improvements in the caching alternative memory benchmarks, the allocation bonuses primarily come from not using Task.Run (bb9031f). Even though those were not called in the benchmark, their presence must have introduced more work in either the state machine or the final IL that made it perform slower.

0.4.0

03 Nov 05:52
Compare
Choose a tag to compare
0.4.0 Pre-release
Pre-release

Major Changes

  • CacheStack to require generic type for ICacheContext (#16)

While this might seem to make certain ways of using CacheStack more difficult in terms of DI now always needing to specify the context type, it makes using the context inside the value getter far easier as it no longer needs to be cast.

With this in mind, this completely breaks any previous usage.

There didn't seem to be any measurable difference in performance from this change.

0.3.0

28 Oct 08:17
d4135e3
Compare
Choose a tag to compare
0.3.0 Pre-release
Pre-release

Major Changes

  • Switched to ValueTask for CacheStack and extensions (15726f1)
  • Partial custom JSON serialization for JsonFileCacheLayer (5374264)
  • Dropped Request ID field from CacheStack and extensions (ccc67d1)
  • Dropped CachedAt and TimeToLive on CacheEntry for a single Expiry field (#13)
  • Added Dependency Injection helper (#8)

Performance Changes

  • CacheStack allocates ~29% less
  • MemoryCacheLayer allocates ~2% less
  • RedisCacheLayer is ~2% faster while allocating ~2% less
  • JsonFileCacheLayer allocates ~2% less
  • MongoDbCacheLayer allocates ~9% less