Skip to content

Bump Foundatio from 12.0.0 to 13.0.0#4

Open
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/nuget/src/Jint.Workflows/Foundatio-13.0.0
Open

Bump Foundatio from 12.0.0 to 13.0.0#4
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/nuget/src/Jint.Workflows/Foundatio-13.0.0

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github Apr 26, 2026

Updated Foundatio from 12.0.0 to 13.0.0.

Release notes

Sourced from Foundatio's releases.

13.0.0

v13.0.0

This is a major release with 368 files changed across the entire Foundatio codebase. Here are the themes that define v13:

  • Reliability & Correctness: Dozens of race conditions, deadlocks, and disposal issues have been hunted down and fixed across queues, messaging, caching, and timers. Cancellation tokens are now properly linked to disposal for clean shutdown, and poison messages are gracefully handled instead of crashing consumers.
  • Consistent Error Handling: Every subsystem now has its own exception type (QueueException, MessageBusException, SerializerException) so consumers get predictable, catchable errors regardless of the underlying provider. These feature-specific exceptions are automatically excluded from resilience policy retries.
  • API Normalization: Cache TTL behavior, serializer validation, and expiration return values have been normalized across all implementations -- no more provider-specific quirks.
  • Null Safety: A comprehensive NRT audit eliminated null! suppressions across the codebase, fixing latent null bugs and adding proper nullable attributes. The API surface now accurately communicates nullability contracts.
  • Modern .NET: Dropped netstandard2.0 in favor of net8.0 + net10.0. Replaced DeepCloner with the actively-maintained FastCloner. ScheduledTimer now uses TimeProvider for testability.
  • Documentation Overhaul: Foundatio now has a dedicated documentation site with comprehensive guides, source code links, and real-world examples for every subsystem.

Documentation Site

Foundatio v13 ships with a brand-new documentation site covering every subsystem with guides, configuration examples, and direct source code links. Key additions:

  • New docs site built with VitePress (061bd763)
  • Source code links added to every subsystem: caching (8f6d37c1), queues (bb9af714), messaging (59cc2f57), locks (10241465), jobs (7df97b13), serialization (8819ba09), storage (bf2eb1b9)
  • Comprehensive hybrid caching documentation with RedisHybridCacheClient examples (2fc124df, 0791b496)
  • Cache stampede protection patterns (a6cfd75c)
  • Delayed message delivery and distributed tracing guide (da2c6162)
  • RabbitMQ delayed delivery and delayed-exchange plugin deprecation notes (#​490)
  • Redis read routing and replica support guide (6860a0c1)
  • Redis replication lag risk documentation (98323dbe)
  • Queue names vs. queue IDs explainer (456389ed)
  • Cancellation token behavior clarification (70a63d12)
  • Cache expiration differences across implementations (1853daee)
  • Enhanced XML doc comments across all core interfaces (7fdad859)
  • Updated job samples (3e003a86) and added sample projects + benchmarks to the solution (160dd74f)
  • Added Foundatio.Mediator links to README and docs (b8f0eba1)

Breaking Changes

  • Dropped netstandard2.0 target: Foundatio now targets net8.0 and net10.0 only. Consumers on .NET Framework or older runtimes must stay on v12.x. by @​niemyjski in 4c6aefed, a1089422
  • Normalized ICacheClient.IncrementAsync TTL behavior: Increment operations now consistently apply the TTL parameter across all implementations. Removed ListRemoveAsync ExpiresIn argument to align with all other Remove methods. by @​niemyjski in #​434
  • Normalized ICacheClient return values for expiration: GetExpirationAsync returns consistent values across implementations. by @​niemyjski in #​432
  • Normalized ISerializer argument validation: All serializer implementations now consistently validate arguments and throw ArgumentException / ArgumentNullException. by @​niemyjski in #​440
  • Added QueueException: Queue operations now throw QueueException for queue-specific errors. Guard added against reusing behavior instances. by @​niemyjski in #​448
  • MessageBusId and QueueId changed to init-only properties: These properties can no longer be set after construction. by @​niemyjski in b73bf128
  • Removed obsolete Set/SetAdd/SetRemove methods from cache extensions: These were renamed to List* in v9.0.0 (Nov 2019) and have been [Obsolete] for 6+ years. by @​niemyjski in 150beed5
  • Removed obsolete single-parameter GetFileStreamAsync overload: Deprecated in v10.7.0 (Jan 2024) when StreamMode was added. Use the overload accepting StreamMode and CancellationToken. by @​niemyjski in 037baae5
  • Comprehensive NRT (Nullable Reference Types) null-safety audit: Eliminated null! suppressions, fixed latent null bugs, and added nullable attributes across the codebase. Return types and parameters may have changed nullability. by @​niemyjski in #​484, #​498

Added

  • Upgrade to xUnit v3 with Foundatio.Xunit.v3: Test infrastructure upgraded to xUnit v3. New Foundatio.Xunit.v3 package with retry test attributes (RetryFactAttribute, RetryTheoryAttribute) for automatic retry of flaky tests. The existing Foundatio.Xunit package continues to support xUnit v2. by @​niemyjski in #​431
  • Memory-limited in-memory cache: InMemoryCacheClient now supports MaxMemorySize with per-entry size limits and intelligent eviction when memory budgets are exceeded. by @​niemyjski, @​copilot in #​400
  • Poison message handling for queues and message bus: Deserialization failures in queues and the message bus are now gracefully handled as poison messages instead of crashing consumers. Dead letter logging improved. by @​niemyjski in #​455
  • SerializerException: New exception type for serialization-specific errors, enabling targeted error handling. by @​niemyjski in b314a052
  • MessageBusException: Consistent error handling for messaging operations with improved delayed message delivery. by @​niemyjski in #​443
  • QueueDeleted event on IQueue<T>: Consumers can now subscribe to queue deletion notifications. by @​niemyjski in #​447
    ... (truncated)

13.0.0-beta6

What's Changed

New Contributors

Full Changelog: FoundatioFx/Foundatio@v13.0.0-beta3...v13.0.0-beta6

13.0.0-beta5

What's Changed

New Contributors

Full Changelog: FoundatioFx/Foundatio@v13.0.0-beta3...v13.0.0-beta5

13.0.0-beta4

What's Changed

New Contributors

Full Changelog: FoundatioFx/Foundatio@v13.0.0-beta3...v13.0.0-beta4

13.0.0-beta3

What's Changed

Full Changelog: FoundatioFx/Foundatio@v13.0.0-beta2...v13.0.0-beta3

13.0.0-beta2

What's Changed

Full Changelog: FoundatioFx/Foundatio@v13.0.0-beta1...v13.0.0-beta2

13.0.0-beta1

Breaking Changes

  • [Caching]: Normalized ICacheClient.IncrementAsync TTL behavior to be consistent across all implementations. #​434 by @​niemyjski
  • [Caching]: Removed ExpiresIn argument from ListRemoveAsync to align with all other Remove methods. #​434 by @​niemyjski
  • [Caching]: Ensured consistent return values for ExpiresIn across all cache operations. #​432 by @​niemyjski
  • [Caching]: Removed obsolete Set methods from cache extensions. by @​niemyjski

Added

  • [.NET 10 Support]: Added .NET 10.0 target framework support. by @​niemyjski
  • [Caching]: Added memory-limited in-memory cache with per-entry size limits and intelligent eviction. #​400 by @​Copilot
  • [Caching]: Added GetAllExpirationsAsync and SetAllExpirationsAsync methods to ICacheClient. #​426 by @​niemyjski
  • [Caching]: Added GetExpirationsAsync method to retrieve cache entry expiration information. by @​niemyjski
  • [Testing]: Added Foundatio.Xunit.v3 package with support for xUnit v3. #​431 by @​niemyjski
  • [Caching]: Added scoped cache constructor overload for improved flexibility. by @​niemyjski
  • [Caching]: Added option to dispose underlying scoped cache implementations. #​412 by @​niemyjski
  • [Locks]: Lock providers now receive dependencies for better integration. by @​niemyjski
  • [Documentation]: Added comprehensive documentation site with source code links across all features. by @​niemyjski @​ejsmith

Changed

  • [Caching]: Optimized hybrid cache invalidation for improved performance. by @​niemyjski
  • [Caching]: Improved hybrid cache consistency and double comparison handling. #​433 by @​niemyjski
  • [Caching]: Normalized increment behavior in hybrid cache. by @​niemyjski
  • [Messaging]: Replaced cancellation token source in MessageBusBase for better resource management. by @​niemyjski
  • [Jobs]: Improved ScheduledTimer disposal and scheduling. by @​niemyjski
  • [Queues]: Uses DateTimeOffset for queue stats update for better timezone handling. by @​niemyjski
  • [Testing]: Refactored hosting tests to use HostBuilder due to deprecations. by @​niemyjski
  • [Testing]: Improved test coverage for caching features. #​426 by @​niemyjski
  • [Build]: Enhanced versioning in build workflow. by @​ejsmith
  • [Build]: Fixed build workflow publishing empty.nupkg from EmptyFiles test package. #​428 by @​Copilot

Fixed

  • [Caching]: Guards against DateTime overflow in caching operations. by @​niemyjski
  • [Caching]: Handles zero or negative expiration times correctly. by @​niemyjski
  • [Cancellation]: Ensures proper disposal of cancellation token sources across all components. by @​niemyjski
  • [Cancellation]: Ensures tasks are cancelled on disposal. by @​niemyjski
  • [Cancellation]: Fixed dispose cancellation token usage. by @​niemyjski
  • [Resilience]: Improved asynchronous timeout handling. by @​niemyjski

Dependencies

  • Updated to Microsoft.AspNetCore.TestHost 8.0.20 #​409
  • Updated to BenchmarkDotNet 0.15.3 #​410
  • Updated to Polly 8.6.3 #​406
  • Updated to Aspire.Hosting.Redis 9.4.2 #​407
  • Updated Aspire packages to 9.5.0
  • Updated Microsoft package versions
  • Updated benchmark dependencies
    ... (truncated)

Commits viewable in compare view.

Dependabot compatibility score

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 show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

---
updated-dependencies:
- dependency-name: Foundatio
  dependency-version: 13.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added .NET Pull requests that update .NET code dependencies Pull requests that update a dependency file labels Apr 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants