Fix ConcurrentLfu time-based expiry policy failing to update the entry's expiry on read. Prior to this fix, expiry is only updated when the read buffer is processed (following a cache write, or when the read buffer is full).
Fix ConcurrentLru torn writes for large structs using SeqLock.
Fix torn writes for 64-bit current time on 32-bit platforms for ConcurrentLruAfterAccessPolicy and DiscretePolicy.
P/Invoke TickCount64 to evaluate current time for .NET Standard on Windows, Duration.SinceEpoch is 5x faster resulting in lower latency lookups for ConcurrentTLru/ConcurrentTLfu.
Use Stopwatch.GetTimestamp to evaluate current time on MacOS, Duration.SinceEpoch is about 20% faster resulting in slightly lower latency lookups for ConcurrentTLru/ConcurrentTLfu.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency
- `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
Bumps the all group with 2 updates in the / directory: BitFaster.Caching and Penumbra.Api.
Updates
BitFaster.Caching
from 2.5.0 to 2.5.1Release notes
Sourced from BitFaster.Caching's releases.
Commits
fb787c1
bump 2.5.1 (#608)a8a4b0c
Tune throughput test parameters (#607)85a14e4
LFU after access fails to update expiry when read buffer is not full (#603)07f8a1c
Bump CsvHelper from 31.0.3 to 32.0.3 (#600)847deca
Bump Microsoft.NET.Test.Sdk from 17.9.0 to 17.10.0 (#599)cdbf8bc
Bump xunit from 2.8.0 to 2.8.1 (#598)4c0e26a
Mitigate LRU struct tearing using SeqLock (#593)8934324
Add missing key not null constraints (#594)5483cbf
Annotate throughput with OS/Arch/Fwk (#589)df9eb53
Mitigate torn writes for current time on 32-bit platforms (#592)Updates
Penumbra.Api
from 5.0.0 to 5.1.0Commits
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show