Repository navigation
Releases
Releases · awaiten-dev/Awaiten
v0.11.0
What's Changed
⚠️ Breaking changes
📖 Documentation
🧰 Maintenance
- fix!: count every declared import as used and wire the host for direct resolves by @vbreuss in #274
- fix!: ask the host whether an imported type is a service in the MS.DI bridge by @vbreuss in #275
- perf: bind the dispatch table's forwarders as method groups to keep the trim analyzer fast by @vbreuss in #276
- fix: wire the root to the host when the provider factory builds it, and explain a missing required service by @vbreuss in #277
- feat!: support private nested implementations of a container or module by @vbreuss in #273
- feat!: register private nested implementations found by a scan by @vbreuss in #278
- fix: self-compile only the module registrations the generated factory supports by @vbreuss in #282
- feat: build a base container's private implementations for an extending container by @vbreuss in #283
- fix: let scans, hooks and modules without factories leave construction to assemblies granted InternalsVisibleTo by @vbreuss in #284
- feat: let an OnActivated hook make a service async-initialized by @vbreuss in #285
- feat: generate factories for more registration shapes by @vbreuss in #286
- fix: stop advising to make a private struct implementation internal by @vbreuss in #290
- feat: let an OnRelease hook return Task or ValueTask by @vbreuss in #288
- fix: judge an internal module's hooks and scan exposures by its real accessibility and wrap the internal hooks of Factory registrations by @vbreuss in #289
- refactor!: move generated members of modules and containers into a nested Internals class by @vbreuss in #291
- fix: skip both factories of a registered and scanned implementation under InternalsVisibleTo by @vbreuss in #292
- fix: name the service in the guidance a synchronous Dispose throws over an asynchronous teardown by @vbreuss in #294
- docs: show an async initializer convention in the quick start by @vbreuss in #296
- docs: link GitHub Sponsors from the documentation header by @vbreuss in #295
- fix: share one instance between a module's scan match and other registrations of its implementation across assemblies by @vbreuss in #297
- chore: resolve open Sonar issues by @vbreuss in #298
- docs: show the benchmark change relative to Awaiten and summarize the realistic request by @vbreuss in #300
- docs: link each benchmark tab to its own source file by @vbreuss in #302
- docs: replace the logo with the Await mark and match the docs theme to it by @vbreuss in #303
- fix: keep same-named types of different assemblies apart when coalescing registrations by @vbreuss in #304
- docs: add a start page and move the documentation under /docs by @vbreuss in #305
- feat!: let a container in another assembly use services a module registers under internal types by @vbreuss in #293
- docs: serve the documentation from awaiten.dev by @vbreuss in #306
- fix: adapt the task of an implementation to the task of its service in async relationships by @vbreuss in #307
Full Changelog: v0.10.0...v0.11.0
v0.10.0
What's Changed
🐞 Bug fixes
- fix: build the decorators of an eager singleton at startup by @vbreuss in #259
- fix: close open generics for factory parameters and every wrapped parameter shape by @vbreuss in #260
🧰 Maintenance
- chore: Bump actions/setup-dotnet from 6.0.0 to 6.1.0 by @dependabot[bot] in #249
- fix: identify a Factory or Instance registration without an implementation type by its member by @vbreuss in #263
- feat: warn when a typed Resolve() on the generated container throws at run time by @vbreuss in #262
- fix: report private nested registrations as AWT216 instead of emitting code that fails with CS0050. by @vbreuss in #261
- feat: let a container extend another container with [Container(Extends = typeof(...))] by @vbreuss in #265
- fix!: identify a lifecycle hook by its declaring type when registrations of one implementation coalesce by @vbreuss in #266
- build: pin the SDK to 10.0.403 so native AOT pulls the patched ILCompiler by @vbreuss in #269
- feat: check keyed and typeof resolves on the generated container for AWT218/AWT219 by @vbreuss in #267
- fix: close open generics for decorator and composite constructor parameters by @vbreuss in #268
- feat!: self-compile module registrations of implementations another assembly cannot construct by @vbreuss in #270
- fix: ask the host when resolving an imported service directly from the container by @vbreuss in #272
- fix!: identify an open generic factory's closing by its member by @vbreuss in #271
Full Changelog: v0.9.0...v0.10.0
v0.9.0
What's Changed
📖 Documentation
🧰 Maintenance
- docs: correct the diagnostic count and explain SyncAfterInit in the complete example by @vbreuss in #231
- docs: illustrate scopes and async taint with diagrams by @vbreuss in #232
- docs: use the shared install section by @vbreuss in #233
- ci: rebuild the documentation site after a release by @vbreuss in #234
- docs: apply the docs style guide by @vbreuss in #235
- chore: update aweXpect to 4.0.0-pre.3 by @vbreuss in #236
- docs: add fixes to the diagnostics and a migration guide from MS.DI by @vbreuss in #237
- ci: fail the static code analysis job when the Sonar quality gate fails on pull requests by @vbreuss in #238
- chore: point the repository, packages and SonarCloud at the awaiten-dev organization by @vbreuss in #242
- build: move the SDK to the 10.0.4xx feature band by @vbreuss in #243
- chore: remove the Jab and Pure.DI benchmarks by @vbreuss in #244
- chore: let Dependabot update the npm packages of the docs site by @vbreuss in #245
- chore: Bump typescript from 6.0.3 to 7.0.2 in /Docs/site by @dependabot[bot] in #246
- chore: Bump TUnit.Engine from 1.76.45 to 1.80.0 by @dependabot[bot] in #239
- docs: remove Jab, Pure.DI and the NuGet link from the docs site by @vbreuss in #247
- ci: summarize the benchmark changes against main in the PR comment by @vbreuss in #248
- chore: Bump SharpCompress from 0.50.7 to 0.50.8 by @dependabot[bot] in #240
Full Changelog: v0.8.0...v0.9.0
v0.8.0
What's Changed
🚀 New features
- feat: answer
IServiceProviderIsServicefrom the container metadata by @vbreuss in #133 - feat: let a caller ask why a service is withheld, without throwing by @vbreuss in #138
🐞 Bug fixes
📖 Documentation
- docs: add an agent guide by @vbreuss in #172
- docs: restructure the documentation sidebar by @vbreuss in #230
🧰 Maintenance
- chore: Bump LibGit2Sharp from 0.31.0 to 0.32.0 by @dependabot[bot] in #129
- chore: Bump Pure.DI from 2.5.1 to 2.5.2 by @dependabot[bot] in #130
- chore: Bump SharpCompress from 0.50.0 to 0.50.1 by @dependabot[bot] in #131
- chore: remove resolved FOLLOWUPS.md by @vbreuss in #132
- test: pin MS.DI conformance of the provider-replacement path by @vbreuss in #134
- test: add an ASP.NET Core sample for the MS.DI bridge by @vbreuss in #135
- chore: stop installing the .NET 8 SDK where nothing runs on it by @vbreuss in #136
- docs: say that a Factory or Instance member lifts AWT103's concrete-type requirement by @vbreuss in #139
- chore: Bump Autofac from 9.3.1 to 9.3.2 by @dependabot[bot] in #140
- chore: Bump SharpCompress from 0.50.1 to 0.50.4 by @dependabot[bot] in #142
- chore: Bump Microsoft.NET.Test.Sdk from 18.8.1 to 18.9.0 by @dependabot[bot] in #147
- chore: Bump Microsoft.Extensions.DependencyInjection and Microsoft.Extensions.Hosting by @dependabot[bot] in #145
- chore: Bump Pure.DI from 2.5.2 to 2.5.3 by @dependabot[bot] in #148
- chore: add mergify auto-merge for dependabot PRs by @vbreuss in #151
- chore: Bump the awexpect group with 2 updates by @dependabot[bot] in #152
- chore: Bump Microsoft.Extensions.DependencyInjection and Microsoft.Extensions.Hosting by @dependabot[bot] in #156
- chore: Bump the awexpect group with 1 update by @dependabot[bot] in #154
- chore: Bump Microsoft.Extensions.Hosting.Abstractions from 10.0.10 to 10.0.12 by @dependabot[bot] in #157
- chore: Bump Autofac from 9.3.2 to 9.3.4 by @dependabot[bot] in #158
- chore: Bump Pure.DI from 2.5.3 to 2.5.4 by @dependabot[bot] in #160
- chore: Bump Microsoft.NET.Test.Sdk from 18.9.0 to 18.10.1 by @dependabot[bot] in #159
- chore: Bump coverlet.collector from 10.0.1 to 10.1.0 by @dependabot[bot] in #161
- chore: Bump the awexpect group with 2 updates by @dependabot[bot] in #163
- chore: Bump SharpCompress from 0.50.4 to 0.50.5 by @dependabot[bot] in #164
- ci: align the build pipeline with aweXpect by @vbreuss in #165
- test: verify the public API with aweXpect.Snapshots.PublicApi by @vbreuss in #166
- build: migrate the build pipeline from Nuke to Fallout by @vbreuss in #167
- ci: harden the pull request analysis by @vbreuss in #168
- chore: align the repository with aweXpect by @vbreuss in #169
- chore: align the IDE settings, sponsoring and release notes by @vbreuss in #171
- test: migrate the tests from xUnit to TUnit by @vbreuss in #173
- chore: Bump Microsoft.Bcl.AsyncInterfaces from 10.0.12 to 10.0.13 by @dependabot[bot] in #175
- chore: Bump Pure.DI from 2.5.4 to 2.5.5 by @dependabot[bot] in #181
- chore: Bump the tunit group with 1 update by @dependabot[bot] in #179
- chore: Bump the awexpect group with 2 updates by @dependabot[bot] in #180
- chore: Bump Microsoft.Extensions.DependencyInjection and Microsoft.Extensions.Hosting by @dependabot[bot] in #177
- chore: clean up the build setup by @vbreuss in #184
- chore: Bump Microsoft.Extensions.Hosting.Abstractions from 10.0.12 to 10.0.13 by @dependabot[bot] in #178
- fix: capitalise the diagnostic messages that start lowercase by @vbreuss in #182
- refactor!: name public types by role and rename
AwaitenLifetimeandIExternalResolverHostby @vbreuss in #183 - chore: Bump the awexpect group with 1 update by @dependabot[bot] in #185
- chore: Bump Microsoft.Bcl.AsyncInterfaces from 10.0.13 to 10.0.14 by @dependabot[bot] in #187
- chore: Bump the tunit group with 1 update by @dependabot[bot] in #186
- chore: Bump Pure.DI from 2.5.5 to 2.5.6 by @dependabot[bot] in #191
- chore: run Dependabot in the night from Thursday to Friday by @vbreuss in #192
- chore: Bump Microsoft.Extensions.DependencyInjection and Microsoft.Extensions.Hosting by @dependabot[bot] in #189
- chore: Bump SharpCompress from 0.50.5 to 0.50.7 by @dependabot[bot] in #193
- chore: Bump Microsoft.Extensions.Hosting.Abstractions from 10.0.13 to 10.0.14 by @dependabot[bot] in #190
- chore: Bump the tunit group with 1 update by @dependabot[bot] in #194
- chore: Bump Pure.DI from 2.5.6 to 2.5.7 by @dependabot[bot] in #196
- chore: Bump Microsoft.Testing.Extensions.TrxReport from 2.5.1 to 2.5.2 by @dependabot[bot] in #195
- build: compile with the latest released C# version instead of preview by @vbreuss in #198
- fix: dispose a half-warmed scope asynchronously when CreateScopeAsync fails by @vbreuss in #199
- docs: base the agent guide on Awaiten's own design goals by @vbreuss in #197
- fix!: keep disposing a scope after a release hook or Dispose throws by @vbreuss in #200
- fix: dispose everything the MS.DI bridge builds with its scope and root by @vbreuss in #201
- feat!: make IAwaitenScope async-disposable and return the concrete scope from CreateScopeAsync by @vbreuss in #202
- feat!: make the external resolver settable without casts and set-once by @vbreuss in #203
- refactor!: merge container metadata into IAwaitenRoot, add GetResolvability and AWT205 by @vbreuss in #204
- feat!: align the MS.DI bridge API around AddAwaitenContainer and a container builder by @vbreuss in #205
- refactor!: reject [Arg] on properties at compile time and document the declaration rules by @vbreuss in #206
- feat: give the typeof registration attributes the options of the generic forms by @vbreuss in #207
- test: pin that an unkeyed decorator leaves keyed registrations undecorated by @vbreuss in #208
- feat: support keyed registrations in [Decorate] and [Composite] by @vbreuss in #209
- feat: dispatch by runtime type through a generated IReadOnlyDictionary<Type, Func> by @vbreuss in #210
- perf: give ResolveAsync a typed fast path with cached singleton tasks by @vbreuss in #211
- test: compile the documentation snippets by @vbreuss in #212
- fix!: align the Lifetime values with MS.DI ServiceLifetime by @vbreuss in #214
- feat: add unkeyed and generic GetResolvability overloads by @vbreuss in #215
- docs: cross-reference SuppressDisposal and ExternallyOwned and fix [Key] wording by @vbreuss in #217
- refactor!: replace SyncResolveAfterInit with an AsyncSafety enum by @vbreuss in #218
- refactor!: rename the MS.DI external resolver and make the resolver assignment explicit by @vbreuss in #219
- refactor: hide the async projection members of AwaitenRegistration from IntelliSense by @vbreuss in #220
...
v0.7.0
What's Changed
🚀 New features
- feat: report scan matches whose type is inaccessible (AWT193) by @vbreuss in #115
- feat: let a
[Module]self-compile its own[Scan]by @vbreuss in #117 - feat: support lifecycle hooks on [Scan], with generic dispatch by @vbreuss in #118
- feat: support lifecycle hooks on a
[Module]'s self-compiled[Scan]by @vbreuss in #127
🐞 Bug fixes
🧰 Maintenance
- refactor: assert diagnostics by wildcard so failures show the actual output by @vbreuss in #114
- chore: Bump actions/setup-dotnet from 5 to 6 by @dependabot[bot] in #119
- chore: Bump Microsoft.NET.Test.Sdk from 18.7.0 to 18.8.1 by @dependabot[bot] in #123
- chore: Bump SharpCompress from 0.49.1 to 0.50.0 by @dependabot[bot] in #125
- chore: Bump Pure.DI from 2.5.0 to 2.5.1 by @dependabot[bot] in #124
- chore: Bump Microsoft.Extensions.DependencyInjection and Microsoft.Extensions.Hosting by @dependabot[bot] in #121
- chore: Bump Microsoft.Extensions.Hosting.Abstractions from 10.0.9 to 10.0.10 by @dependabot[bot] in #122
- chore: group auto-generated release notes by category by @vbreuss in #126
- test: cover lifetime and diagnostic ownership of a
[Module]'s self-compiled[Scan]by @vbreuss in #128
Full Changelog: v0.6.0...v0.7.0
v0.6.0
What's Changed
- feat: allow lifecycle hooks to take graph-resolved parameters by @vbreuss in #110
- feat: add SuppressDisposal to opt out of container disposal by @vbreuss in #111
Full Changelog: v0.5.0...v0.6.0
v0.5.0
What's Changed
- docs: lead benchmarks with the Realistic scenario and drop Size=64 by @vbreuss in #99
- chore: remove mutation testing from pipelines and docs by @vbreuss in #100
- docs: rename principles page to 'Design principles' by @vbreuss in #101
- chore: notify Testably.Site to rebuild after a main build by @vbreuss in #102
- chore: Bump Autofac from 9.3.0 to 9.3.1 by @dependabot[bot] in #103
- chore: Bump Pure.DI from 2.4.3 to 2.5.0 by @dependabot[bot] in #104
- docs: fix links to renamed design-principles page by @vbreuss in #107
- feat: add
ScanAs.MatchingInterfaceand markerless[Scan]by @vbreuss in #106 - feat: reject
Owned<T>over a requesting-type factory (AWT186) by @vbreuss in #108 - feat: report ambiguous and inaccessible
MatchingInterfacecontracts by @vbreuss in #109
Full Changelog: v0.4.0...v0.5.0
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