Skip to content

Conversation

@dependabot
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Dec 1, 2025

Bumps stillwater from 0.11.0 to 0.13.0.

Changelog

Sourced from stillwater's changelog.

[0.13.0] - 2025-11-28

Added

Error Recovery Combinators for Effect (Spec 040)

  • Selective error recovery - Fine-grained control between total recovery (or_else) and no recovery

    • .recover(predicate, handler) - Recover from specific errors using predicate-based matching with effect handler
    • .recover_with(predicate, handler) - Recover using Result-returning handler for simpler cases
    • .recover_some(handler) - Pattern-matching recovery with Option (returns Some to recover, None to propagate)
    • .fallback(value) - Provide default value on any error
    • .fallback_to(effect) - Try alternative effect on any error
  • Predicate-based error matching - Uses stillwater's Predicate trait for composable error conditions

    • Integrate with existing predicate combinators (.and(), .or(), .not())
    • Build sophisticated error handling logic declaratively
    • Type-safe error inspection without exposing implementation details
  • Common use cases enabled:

    • Cache fallback strategies (recover from cache miss only)
    • Retry on transient errors (network timeouts, rate limits)
    • Graceful degradation for non-critical failures
    • Multi-tier fallback chains (cache → database → default)
    • Conditional recovery based on error severity or type
  • Zero-cost abstraction - All recovery combinators compile to concrete types

    • No heap allocations required
    • Stack-allocated combinator types
    • Property tests verify zero-cost semantics
  • New example - examples/recover_patterns.rs (450+ lines)

    • 11 comprehensive examples covering all recovery patterns
    • Real-world scenarios: multi-tier caching, degraded mode, API fallback
    • Predicate composition patterns
    • Chaining multiple recovery strategies

Bifunctor Interface for Validation (Spec 041)

  • Bimap combinators - Transform both success and error channels simultaneously

    • .bimap(f_err, f_success) - Standard bifunctor operation (error first convention)
    • .bimap_success_first(f_success, f_err) - Ergonomic variant (success first for readability)
    • .bimap_ref(&f_err, &f_success) - Non-consuming reference version for inspection
  • Fold combinators - Catamorphisms to collapse Validation into single values

    • .fold(on_failure, on_success) - Standard fold (error first)
    • .fold_success_first(on_success, on_failure) - Alternative ordering
    • .fold_ref(&on_failure, &on_success) - Non-consuming version
    • .fold_with_seed(seed, f_err, f_success) - Generalized fold with accumulator for complex reductions
  • Unwrap utilities - Safe value extraction with error handling

... (truncated)

Commits
  • eaf8f40 fix: rename enum variants to avoid clippy warnings
  • b079489 update changelog for 0.13.0 release
  • 389c279 increment to 0.13.0
  • fead5d8 refactor: remove dead code from recover_patterns example
  • a3ae568 docs: update README and guide for error recovery combinators
  • 70a2e63 docs: add comprehensive recover patterns example
  • 86adb20 Merge branch 'prodigy-workflow-1764395677698'
  • e0db43b feat: implement spec 042 - free function constructors documentation
  • 5bcf4ab Merge branch 'prodigy-workflow-1764391685262'
  • 77dbb0e style: apply automated formatting and lint fixes
  • Additional 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 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 <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)

@dependabot dependabot bot added dependencies Pull requests that update a dependency file rust Pull requests that update rust code labels Dec 1, 2025
Bumps [stillwater](https://github.com/iepathos/stillwater) from 0.11.0 to 0.13.0.
- [Changelog](https://github.com/iepathos/stillwater/blob/master/CHANGELOG.md)
- [Commits](iepathos/stillwater@v0.11.0...v0.13.0)

---
updated-dependencies:
- dependency-name: stillwater
  dependency-version: 0.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot force-pushed the dependabot/cargo/stillwater-0.13.0 branch from 26a6ec0 to e7d72d6 Compare December 2, 2025 22:42
@iepathos iepathos merged commit 67d5184 into master Dec 3, 2025
2 of 8 checks passed
@iepathos iepathos deleted the dependabot/cargo/stillwater-0.13.0 branch December 3, 2025 21:45
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 rust Pull requests that update rust code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants