Skip to content

Releases: neon-sunset/fast-cache

1.8.2

16 Jan 16:29
7eb35dd
Compare
Choose a tag to compare

Changes

🐛 Bug Fixes

  • Refactor trim against unhandled exceptions, high write traffic and make it more robust to concurrent changes (PR #90)

🧰 Misc

  • Add FusionCache to comparison (PR #69) by @rstm-sf
  • Drop legacy and EOL targets and update project files (PR #81)
  • tests: try smaller delay for unreliable expiration test that gets preempted and fails to call assert in time (4aeff0b)
  • tests: drop cursed test case which keeps failing (most likely an interaction between high/low-freq timer on Task.Delay and GH action runner being oversubscribed to death) (254fcce)

📦 Dependencies

  • Bump Microsoft.NET.Test.Sdk from 17.7.2 to 17.8.0 (PR #73) by @dependabot (bot)
  • Bump ZiggyCreatures.FusionCache from 0.23.0 to 0.24.0 (PR #74) by @dependabot (bot)
  • Bump Microsoft.Extensions.Caching.Memory from 7.0.0 to 8.0.0 (PR #75) by @dependabot (bot)
  • Bump xunit.runner.visualstudio from 2.5.5 to 2.5.6 (PR #84) by @dependabot (bot)
  • Bump BenchmarkDotNet from 0.13.11 to 0.13.12 (PR #87) by @dependabot (bot)
  • Bump xunit from 2.6.5 to 2.6.6 (PR #88) by @dependabot (bot)

Full Changelog: 1.8.1...1.8.2

Published with dotnet-releaser

1.8.1

09 Jul 04:07
Compare
Choose a tag to compare

Changes

📦 Dependencies

  • Bump Microsoft.NET.Test.Sdk from 17.6.0 to 17.6.1 (PR #47) by @dependabot (bot)
  • Bump Microsoft.NET.Test.Sdk from 17.6.1 to 17.6.2 (PR #49) by @dependabot (bot)
  • Bump Microsoft.NET.Test.Sdk from 17.6.2 to 17.6.3 (PR #51) by @dependabot (bot)
  • Bump xunit.runner.visualstudio from 2.4.5 to 2.5.0 (PR #54) by @dependabot (bot)
  • Bump xunit from 2.4.2 to 2.5.0 (PR #53) by @dependabot (bot)
  • Bump NonBlocking from 2.1.1 to 2.1.2 (PR #55) by @dependabot (bot)

🧰 Misc

  • Help compiler with cctor checks in AOT mode (PR #48)
  • Reduce contention in parallel eviction by counting opportunistically/inaccurately which is acceptable... (c436740)
  • Forceinline timestamp properties, especially the non-core fallback one (a81e942)
  • Minor fixes: (04756b6)

Full Changelog: 1.8.0...1.8.1

Published with dotnet-releaser

1.8.0

27 May 01:37
0ab994d
Compare
Choose a tag to compare

Changes

✨ New Features

  • Add CacheManager.ExecuteFullClear (PR #45) by @troepolik
  • Add CacheManager.ExecuteFullEviction (PR #46)

📦 Dependencies

  • Bump PolySharp from 1.12.1 to 1.13.1 (PR #40) by @dependabot (bot)
  • Bump Microsoft.NET.Test.Sdk from 17.5.0 to 17.6.0 (PR #42) by @dependabot (bot)
  • Bump PolySharp from 1.13.1 to 1.13.2 (PR #41) by @dependabot (bot)
  • Bump coverlet.collector from 3.2.0 to 6.0.0 (PR #43) by @dependabot (bot)

🧰 Misc

Full Changelog: 1.7.0...1.8.0

Published with dotnet-releaser

1.7.0

18 Mar 22:53
Compare
Choose a tag to compare

Changes

✨ New Features

  • Add Cached<V>.Save(K1..K7, V, TimeSpan) (PR #39)

🐛 Bug Fixes

  • Fix presence of static initialization checks with TypeInfo.IsManaged, count total evictions regardless of key type (4cafa12)

🏭 Tests

  • Improve tests stability (1324af1)

📦 Dependencies

  • Bump coverlet.collector from 3.1.2 to 3.2.0 (PR #18) by @dependabot (bot)
  • Bump Microsoft.NET.Test.Sdk from 17.3.2 to 17.4.0 (PR #21) by @dependabot (bot)
  • Bump System.Runtime.Caching from 6.0.0 to 7.0.0 (PR #22) by @dependabot (bot)
  • Bump Microsoft.Extensions.Caching.Memory from 6.0.1 to 7.0.0 (PR #20) by @dependabot (bot)
  • Bump Microsoft.NET.Test.Sdk from 17.4.0 to 17.4.1 (PR #23) by @dependabot (bot)
  • Bump RangeExtensions from 1.2.2 to 2.0.0 (PR #24) by @dependabot (bot)
  • Bump NonBlocking from 2.1.0 to 2.1.1 (PR #26) by @dependabot (bot)
  • Bump BenchmarkDotNet from 0.13.2 to 0.13.3 (PR #25) by @dependabot (bot)
  • Bump RangeExtensions from 2.0.0 to 2.1.0 (PR #27) by @dependabot (bot)
  • Bump PolySharp from 1.8.1 to 1.8.3 (PR #29) by @dependabot (bot)
  • Bump RangeExtensions from 2.1.0 to 2.1.1 (PR #30) by @dependabot (bot)
  • Bump BenchmarkDotNet from 0.13.3 to 0.13.4 (PR #32) by @dependabot (bot)
  • Bump PolySharp from 1.8.3 to 1.10.0 (PR #31) by @dependabot (bot)
  • Bump PolySharp from 1.10.0 to 1.11.0 (PR #33) by @dependabot (bot)
  • Bump PolySharp from 1.11.0 to 1.12.1 (PR #34) by @dependabot (bot)
  • Bump MinVer from 4.2.0 to 4.3.0 (PR #35) by @dependabot (bot)
  • Bump BenchmarkDotNet from 0.13.4 to 0.13.5 (PR #36) by @dependabot (bot)
  • Bump Microsoft.NET.Test.Sdk from 17.4.1 to 17.5.0 (PR #37) by @dependabot (bot)

🧰 Misc

  • Add PackageProjetUrl to make github happy, add dockerfile for benchmarks (4e54d1c)
  • CachedRange<V> performance audit (PR #19)
  • Replace Enumerable.Range with RangeExtensions in benchmarks (0561394)
  • Revert R2R on tests (91445f5)
  • Replace QueueUserWorkItem with Task.Run where applicable for hardening (684898f)

Full Changelog: 1.6.1...1.7.0

Published with dotnet-releaser

1.6.1

07 Oct 12:04
Compare
Choose a tag to compare

Changes

Description

This release fixes a long-standing issue where in net48 the Gen2 GC callback and queued cache eviction attached to it were not performing correctly potentially causing issues/deadlocks on application shutdown, specifically, when there is special instrumentation around it e.g. dotnet test. Since net48/netstandard2.0 is not a primary target and having finalizer resurrection may also be undesirable for platforms like Unity, cache eviction on Gen2 GC callback has been disabled for netstandard2.0 TFM. This does not affect netstandard2.1 and netcoreapp3.1+ TFMs.

🐛 Bug Fixes

  • Fix net48 target by disabling Gen2 GC callback which was not working correctly (b493e0a)
  • Fix flaky tests that were sensitive to sub-millisecond latency variations in Environment.TickCount64 (dc24be0)

🧰 Misc

  • Make Cached<K, V> implicitly convertible to V (b88a278)

Full Changelog: 1.6.0...1.6.1

Published with dotnet-releaser

1.6.0

04 Oct 09:07
f2e8db6
Compare
Choose a tag to compare

Changes

✨ New Features

  • Add CacheManager.TotalCount and CacheManager.EnumerateEntries, expose Cached<K, V>.Key (PR #17)

🐛 Bug Fixes

  • Fix publishing XML documentation (PR #17)

📦 Dependencies

  • Bump Microsoft.NET.Test.Sdk from 17.3.1 to 17.3.2 (PR #15) by @dependabot (bot)

🧰 Misc

Full Changelog: 1.5.5...1.6.0

Published with dotnet-releaser

1.5.5

10 Sep 15:58
15b0ac0
Compare
Choose a tag to compare

Changes

The main purpose of this release is to update the package description on nuget and upstream minor fixes outlined below.

🐛 Bug Fixes

  • Fix CacheManager_AllExpired test flakiness, now also tests that SuspendEviction suspends (97ee497)

📦 Dependencies

  • Bump xunit from 2.4.1 to 2.4.2 (PR #9) by @dependabot (bot)
  • Bump Microsoft.NET.Test.Sdk from 17.2.0 to 17.3.0 (PR #11) by @dependabot (bot)
  • Bump MinVer from 4.1.0 to 4.2.0 (PR #12) by @dependabot (bot)
  • Bump BenchmarkDotNet from 0.13.1 to 0.13.2 (PR #13) by @dependabot (bot)
  • Bump Microsoft.NET.Test.Sdk from 17.3.0 to 17.3.1 (PR #14) by @dependabot (bot)

🧰 Misc

  • Adjust EvictionQuickList.Add atomic guarantees, update README (41b0f6f)
  • Re-enable Coveralls publishing because it has been fixed (99da58a)

Full Changelog: 1.5.4...1.5.5

Published with dotnet-releaser

1.5.4

03 Jul 20:56
Compare
Choose a tag to compare

Changes

🐛 Bug Fixes

  • Fix (minor) 'Random' non-thread-safe access in 'Constants' for TFMs <NET6 (481245b)

🏭 Tests

🧰 Misc

  • Tests - add netcoreapp3.1 and net7.0 TFMs (8e6911b)
  • Amend exception message on incorrect expiration, throw on double.Nan passed to Trim() and test for that case (cfd1d47)
  • Tests - GetOrCompute full coverage, actual limit handling is tested in another test fixture so here it's just to ensure we validate all overloads (3d0c4ce)
  • Ensure non-inline trim test covers the case where the count to trim is greater than quick list length (969158e)
  • Finish test coverage for CachedExtensions (0841d31)
  • More eviction tests (c770c2c)
  • Account for testing framework side effects when testing eviction (837d578)
  • Adjust/enable feature flags to improve tests coverage (Consider GC and automatic eviction) (16703c2)

Full Changelog: 1.5.3...1.5.4

1.5.3

02 Jul 13:31
Compare
Choose a tag to compare

Changes

🐛 Bug Fixes

  • Fix inline trim count limit to be upper bound inclusive, limit and trimming tests, rename tryget tests (d75ce73)
  • Fix missed remainder handling in CachedRange.Remove, add coverage and use short expiration to additionally stress eviction during tests (29462a7)
  • Fix unbound scheduling of trim work items (b18e403)

🧰 Misc

  • Cover Cached.Remove() (bbe5c64)
  • Cover CachedExtensions (a87adae)
  • Always add 7 to multithreaded cachedrange save in tests to ensure range tail handling code is covered, otherwise tests are flaky and depend on the number of cores of CI node (6f5df0a)
  • Drain quick list in CachedRange tests to improve coverage (6cb6dcc)
  • Reorder steps in trimming - trim quick list first then take its lock, doing so vice versa was causing quick list to not get trimmed (9edf86b)

Full Changelog: 1.5.2...1.5.3

1.5.2

28 Jun 11:32
Compare
Choose a tag to compare

Changes

🐛 Bug Fixes

  • Fix edge case - round up expiration when it's below 1ms but greater than zero, introduce more unit tests (9771ceb)
  • Fix CachedRange.Remove(IEnumerable) singlethreaded definite length branch, add test coverage (7c97ab3)

🏭 Tests

  • Add tests coverage

📦 Dependencies

  • Bump Microsoft.NET.Test.Sdk from 17.1.0 to 17.2.0 (PR #7) by @dependabot (bot)
  • Bump xunit.runner.visualstudio from 2.4.3 to 2.4.5 (PR #6) by @dependabot (bot)
  • Bump MinVer from 4.0.0 to 4.1.0 (PR #8) by @dependabot (bot)

🧰 Misc

  • Make CachedRange.Save(IList<(K, V)>) overload public, add tests (6b5cb4f)
  • Bring CachedRange signature in line with Cached, more tests adjustment (c479a61)
  • Remove Update() that was functionally too close to Save() to avoid ambiguity; Ensure tests are not flaky by using definite keys (ad4f527)

Full Changelog: 1.5.1...1.5.2