better_effect 0.3.0
better_effect 0.3.0
- Added
Runtime.executeWith,runWith, andrunExitWithfor temporary
execution-scoped Modules. - Execution Modules resolve local providers first and fall back to the root
Runtime without mutating root registrations. - Local constructor injection can combine execution-local and root services,
including typedServiceKeyregistrations. - Execution Module resources share the managed execution Scope and remain owned
until physical completion after timeout or interruption. - Partial local startup failures release previously acquired resources before
publishing an execution defect. - Added the optional
ResolverBackendOverlayFactorycapability for custom
backends;AutoInjectorBackendsupports isolated overlays by default. - Added synchronous, SDK-neutral
RuntimeObservercallbacks for execution,
service resolution, resource acquisition/release, interruption, and cleanup
failures. - Runtime observer failures are isolated and can be reported through a
best-effortRuntimeObserverErrorHandlerwithout changing Effect outcomes. - Execution events now expose labels, physical duration, opaque Scope identity,
logical outcomes, and selected local metadata. - Added
EffectLocal.metadata, typedEffectLocal.bind, andEffect.withLocals
for heterogeneous batch context composition. - Added service resolution paths, execution-scoped Module event propagation,
Flutter Command label verification, observer-ordering tests, and a standalone
no-observer overhead benchmark. - Added
package:better_effect/testing.dartwithTestRuntime, typed Exit
matchers/extractors, deterministic gates and signals, ordered event recording,
Runtime event waits, and active-execution leak assertions. - Added a public
ResolverBackendcompatibility kit covering lifetimes, keys,
constructor resolution, missing/circular dependencies, duplicate and
post-commit registration, startup cleanup, close semantics, overlays, and
optional native disposal probes.
Full changelog: better_effect-v0.2.0...better_effect-v0.3.0