Releases: Testably/Awaiten
Releases · Testably/Awaiten
Release list
v0.4.0
What's Changed
- test: cover runtime types and registration attributes by @vbreuss in #91
- test: dedicated concurrent-resolution suite with no-double-dispose guarantees by @vbreuss in #92
- feat!: replace
[FromServices]with container-side[ImportService<T>]by @vbreuss in #94 - feat: add container-side
[InjectProperty<T>]property injection by @vbreuss in #93 - docs: container-side DI idioms as the clean-domain path; pin factory-
[FromKey]/[Arg]idioms by @vbreuss in #96 - feat: add suppressible boundary analyzers AWT134 and AWT135 by @vbreuss in #98
- docs: teach the composition root and DI anti-patterns by @vbreuss in #97
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's Changed
- test: add a comprehensive coffee-shop example container by @vbreuss in #62
- feat: warn (AWT156) when a service is IAsyncDisposable but not IDisposable by @vbreuss in #61
- fix: AWT156 per-owner filtering, precise report locations and cross-assembly bail-out by @vbreuss in #64
- feat: inject keyed registrations as
IReadOnlyDictionary<string, TService>by @vbreuss in #60 - feat:
[Inject(Optional = true)]leaves a property unset when its dependency is unregistered by @vbreuss in #63 - refactor: group generated Root/Scope members into #region sections by @vbreuss in #66
- feat: construct
[Singleton(Eager = true)]services at container build time by @vbreuss in #68 - feat: inject keyed registrations as awaited
Task<IReadOnlyDictionary<string, TService>>by @vbreuss in #65 - feat: pass the requesting type into a factory via
[RequestingType]by @vbreuss in #67 - test: add a native-AOT console sample for the MS.DI bridge by @vbreuss in #69
- fix: dispose partially-built instances when async wiring or init fails by @vbreuss in #71
- feat: make the MS.DI bridge's async projection reflection-free and native-AOT clean by @vbreuss in #72
- feat: run OnActivated/OnRelease lifecycle hooks around a registration's lifetime (AWT162) by @vbreuss in #70
- feat: diagnose conflicting coalesced lifecycle/eager directives (AWT166) by @vbreuss in #74
- docs: trim comments to WHY-only and make XML docs concise by @vbreuss in #73
- feat: replace logo with the async-first Awaiten mark by @vbreuss in #75
- feat: Contextual binding via
WhenInjectedIntoby @vbreuss in #76 - refactor!: rename ScanAs.ImplementedInterfaces to Marker by @vbreuss in #77
- refactor!: replace
Default/TryAddbool flags with theFallbackenum by @vbreuss in #84 - docs: add the Awaiten documentation site by @vbreuss in #78
- feat: support open-generic decorators and composites (#79) by @vbreuss in #85
- chore: Bump Microsoft.CodeAnalysis.CSharp from 5.3.0 to 5.6.0 by @dependabot[bot] in #88
- chore: Bump Microsoft.CodeAnalysis.Analyzers and Microsoft.CodeAnalysis.CSharp by @dependabot[bot] in #87
- feat!: support non-string service keys (enum, Type) by @vbreuss in #86
- feat!: imperative keyed resolution and IKeyedServiceProvider interop by @vbreuss in #89
- feat: add name, namespace and exclusion filters to
[Scan]by @vbreuss in #90
Full Changelog: v0.2.0...v0.3.0
v0.2.0
What's Changed
- chore: Bump SimpleInjector from 5.5.2 to 5.6.0 by @dependabot[bot] in #32
- feat: add async initialization via
IAsyncInitializablewith compile-time taint safety (AWT119/AWT120) by @vbreuss in #31 - fix: dispose factory outputs hidden behind a non-disposable return type by @vbreuss in #33
- feat: add async factory methods as a Task async-init registration channel by @vbreuss in #34
- feat: warn (AWT106) when a factory body hides an IAsyncInitializable/IDisposable capability behind its declared return type by @vbreuss in #35
- feat: Async relationship types and async/owned disposal by @vbreuss in #37
- fix: report AWT102 for a dependency cycle closed only through a bare
Owned<T>orTask<T>by @vbreuss in #38 - feat: resolve collection dependencies to every registration of a service by @vbreuss in #39
- feat: wrap registered services in decorator chains via
[Decorate<TDecorator, TService>]by @vbreuss in #40 - feat: support open generic registration by @vbreuss in #41
- perf: data-driven bucket-hash dispatch for by-type resolution by @vbreuss in #42
- feat: bridge a generated container to Microsoft.Extensions.DependencyInjection by @vbreuss in #43
- docs: add ASP.NET Core and standalone examples for the MS.DI bridge by @vbreuss in #45
- feat: front a service's registrations with a single fan-out façade via
[Composite<TComposite, TService>]by @vbreuss in #46 - feat: resolve async-initialized collection members through
IAsyncEnumerable<T>by @vbreuss in #44 - feat: resolve external dependencies across the MS.DI seam via
[FromServices]/[ImportServices]by @vbreuss in #47 - feat: resolve awaited collection dependencies through
Task<C>by @vbreuss in #49 - feat: satisfy a differently-closed generic interface request through declared variance by @vbreuss in #48
- feat: fill opt-in [Inject] properties after construction by @vbreuss in #50
- refactor: restructure the source generator into partial files and document the generated code by @vbreuss in #53
- feat: assembly scanning via
[Scan]by @vbreuss in #52 - feat: initialize Awaiten containers on host startup via
AddAwaitenInitializationby @vbreuss in #54 - feat: add VerifyAgainst startup safety check for external dependencies by @vbreuss in #55
- feat: break mutual constructor cycles with
[Inject(Deferred = true)]property injection by @vbreuss in #51 - refactor: hide generated container plumbing from the consumer surface by @vbreuss in #57
- coverage: cover property-injected awaited collections by @vbreuss in #58
- feat: Modules:
[Module]/[Import]with overridable defaults by @vbreuss in #56 - refactor: emit per-type resolvers as static methods, hiding them from the container surface by @vbreuss in #59
New Contributors
- @dependabot[bot] made their first contribution in #32
Full Changelog: v0.1.0...v0.2.0
v0.1.0
What's Changed
- feat: add scopes and disposal with thread-safe singletons by @vbreuss in #12
- feat: annotate resolver
TryResolvewith[NotNullWhen]and cover extensions by @vbreuss in #13 - feat: add lifetime-safety diagnostics (AWT105 captive, AWT106 disposable transient, AWT107 conflicting lifetime) by @vbreuss in #14
- chore: add GitHub Sponsors funding config by @vbreuss in #15
- feat: move AWT106 to a DiagnosticAnalyzer so it is suppressible in-source by @vbreuss in #17
- feat: add resolution/build benchmarks vs other DI containers and report them in CI by @vbreuss in #16
- fix: resolve benchmark marker types and guard report publishing by @vbreuss in #19
- perf: dispatch resolution through a static Type table instead of a linear if-chain by @vbreuss in #20
- refactor: make benchmark classes self-contained and add DryIoc + Simple Injector by @vbreuss in #22
- feat: add
Func<T>andLazy<T>relationship types by @vbreuss in #21 - feat: add realistic end-to-end resolution benchmark across DI containers by @vbreuss in #23
- feat: add factory-method and pre-built instance registrations by @vbreuss in #24
- refactor(generator): restructure generated container into a facade + Scope/RootScope hierarchy by @vbreuss in #25
- feat: add runtime arguments via
[Arg]andFunc<TArg…,T>by @vbreuss in #26 - refactor: Static
[Container]definition with aRootinstance by @vbreuss in #27 - feat: add keyed registration via
Keyand[FromKey](AWT116) by @vbreuss in #28 - feat: leak-free disposal —
Owned<T>, flow-based AWT117, and strict-by-defaultLifetimeSafetyby @vbreuss in #29 - feat: allow scope-bound resolution of disposable transients under strict lifetime safety by @vbreuss in #30
Full Changelog: v0.0.1...v0.1.0
v0.0.1
What's Changed
- feat: add MS.DI companion package, generator test harness, and analyzer wiring by @vbreuss in #7
- coverage: collect coverage from DI and source-generator test projects by @vbreuss in #8
- feat: implement core resolution (Container, Singleton/Transient/Scoped, AWT101/AWT102) by @vbreuss in #9
- chore: use NuGet trusted publishing (OIDC) instead of long-lived API key by @vbreuss in #10
- chore: include DI package in Pack output by @vbreuss in #11
New Contributors
Full Changelog: https://github.com/Testably/Awaiten/commits/v0.0.1