Introduce BenchmarkDotNet.Diagnostics.dotMemory#2549: memory allocation profile of your benchmarks using dotMemory, see @BenchmarkDotNet.Samples.IntroDotMemoryDiagnoser
Introduce BenchmarkDotNet.Exporters.Plotting#2560: plotting via ScottPlot (initial version)
Multiple bugfixes
The default build toolchains have been updated to pass IntermediateOutputPath, OutputPath, and OutDir properties to the dotnet build command. This change forces all build outputs to be placed in a new directory generated by BenchmarkDotNet, and fixes many issues that have been reported with builds. You can also access these paths in your own .csproj and .props from those properties if you need to copy custom files to the output.
Bug fixes
Fixed multiple build-related bugs including passing MsBuildArguments and .Net 8's UseArtifactsOutput.
DotNetCliCommand removed RetryFailedBuildWithNoDeps property and BuildNoRestoreNoDependencies() and PublishNoBuildAndNoRestore() methods (replaced with PublishNoRestore()).
In general is never a good idea to mutate data retrieved from the cache: it should always be considered immutable/readonly.
To see why, read more in the docs.
Not all the scenarios where mutating a piece of data we got from the cache are necessarily wrong though, as users may have a particular use case where that may be needed, and ideally they should be abe to do that in an easy (and optimized!) way, by following the tried and true "it just works" mindset.
With Auto-Clone this is now possible.
A couple of details:
it just works, out of the box
is easy to use
doesn't require extra coding/setup (it's just a new EnableAutoClone option)
Currently the way to activate fail-safe is for a factory to throw an exception.
This makes sense, since the whole point of fail-safe is to protect us when an error occurs while executing a factory.
But there may be other ways to do it, for example by using a variation of the Result Pattern or similar approaches, in which throwing an exception is not necessary.
This is now possible thanks to the new Fail(...) method on the FusionCacheFactoryExecutionContext<TValue> type, which we can access when executing a factory.
A quick example:
var productResult = await cache.GetOrSetAsync<Result<Product>>(
$"product:{id}",
async (ctx, ct) =>
{
var productResult = GetProductFromDb(id);
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
coverage: 91.41% (+0.09%) from 91.323%
when pulling 60d583c3a61fc1500ac0a8981de8099ab8a67761 on dependabot/nuget/nuget-8c9a6f6516
into 9d9f2620c437cac67d35217a8f08cb24bec3eccd on main.
Bumps the nuget group with 2 updates in the / directory: BenchmarkDotNet and ZiggyCreatures.FusionCache.
Updates
BenchmarkDotNet
from 0.13.12 to 0.14.0Release notes
Sourced from BenchmarkDotNet's releases.
Commits
cf882d3
Add macOS Sequoia in OsBrandStringHelper17cf3b0
[docs] Prepare v0.14.0 changelogb3fbe7c
Set next BenchmarkDotNet version: 0.14.023e6c52
Fix InvalidOperationException in DotMemoryDiagnoser3d34edb
Bump JetBrains.Profiler.SelfApi: 2.5.2->2.5.9bf0a49d
fix(CI): Deprecation issues (#2605)0275649
Fixed crash from TaskbarProgress when BuiltInComInteropSupport is disabled. ...15200d4
[build] Add BenchmarkDotNet.Exporters.Plotting.Tests to unit-tests834417a
Improve logging in ScottPlotExporterTestsf8082a2
Fix IntroSummaryStyle compilationUpdates
ZiggyCreatures.FusionCache
from 1.2.0 to 1.3.0Release notes
Sourced from ZiggyCreatures.FusionCache's releases.
... (truncated)
Commits
d8aaf1c
Update packages refsc2b418f
Update packages refs2ab4734
v1.3.080e9839
Docsb0a05d6
Docs4635731
Docsb3d5e95
Docs390421f
Better testsa048d72
Tests for fail-safe without exceptions6aa78ea
Better testsDependabot 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