Skip to content

better_effect 0.4.0

Choose a tag to compare

@github-actions github-actions released this 21 Aug 13:34
· 38 commits to main since this release

Published on pub.dev: https://pub.dev/packages/better_effect/versions/0.4.0

  • Added the repository-level normative semantic contract and an independent
    cross-package conformance suite mapping stable lifecycle/outcome rules to
    executable rule IDs.
  • Semantic compatibility changes now require the matching conformance scenario,
    affected package changelog entries, and a semantic migration ledger entry.
  • Added Runtime.fork for feature-length child environments with local-first
    resolution and parent fallback.
  • Child Module resources survive multiple executions, close exactly once with
    the child Runtime, and are coordinated before parent resources during parent
    shutdown.
  • Runtime observer contexts now expose runtimeId, parentRuntimeId, and
    runtimeLabel so feature and execution boundaries can be correlated.
  • Nested execution overlays preserve the complete parent fallback chain.
  • Added typed-failure Effect.retry with none, fixed, linear, and
    exponential policies, optional full jitter, maximum delays, and
    explicit attempt-count semantics.
  • Each retry attempt owns a child Scope that closes before policy
    evaluation or delay; cleanup defects retain Runtime precedence and
    prevent a broken typed-failure attempt from retrying.
  • Added optional EffectClock and EffectRandom contracts with host,
    seeded, and manual test implementations; no service is installed
    implicitly.
  • Added observable RetryEvent decisions, deterministic tests, package
    and website guides, and a retry benchmark.
  • Added lazy Effect.all and Effect.forEach collection composition with
    sequential-by-default and positive bounded concurrency.
  • Added explicit Effect.allUnbounded and Effect.forEachUnbounded APIs so
    unbounded fan-out cannot happen through an omitted limit.
  • Collection results preserve input order and are returned as unmodifiable
    Lists, while scheduling remains FIFO.
  • Typed failure selection is deterministic by lowest started input index; no new
    work starts after failure or interruption, and already-started operations
    remain physically owned until completion.
  • Collection defects stay defects, worker resources retain normal Scope cleanup
    semantics, and sequential/bounded/unbounded benchmarks are included.