Skip to content

Releases

v0.11.0

Choose a tag to compare

@github-actions github-actions released this 07 Nov 22:54
87c4b75

What's Changed

⚠️ Breaking changes

  • feat!: replace IAsyncInitializable with async initializer conventions by @vbreuss in #287

📖 Documentation

  • docs: list releases without user-facing changes in the changelog by @vbreuss in #301

🧰 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

Choose a tag to compare

@github-actions github-actions released this 06 Nov 18:36
02dfe2f

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

Choose a tag to compare

@github-actions github-actions released this 04 Nov 19:11
0d10add

What's Changed

📖 Documentation

  • docs: publish the documentation on GitHub Pages from this repository by @vbreuss in #241

🧰 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

Choose a tag to compare

@github-actions github-actions released this 30 Oct 18:12
dc13792

What's Changed

🚀 New features

  • feat: answer IServiceProviderIsService from 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

  • fix: resolve IEnumerable of an unregistered element type as an empty sequence by @vbreuss in #137

📖 Documentation

🧰 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 AwaitenLifetime and IExternalResolverHost by @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
    ...
Read more

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 21 Jul 11:07
5d8990f

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

  • fix: honor InternalsVisibleTo when checking constructor accessibility by @vbreuss in #116

🧰 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

Choose a tag to compare

@github-actions github-actions released this 17 Jul 05:40
a9ecf93

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

Choose a tag to compare

@github-actions github-actions released this 15 Jul 18:51
7266d2d

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.MatchingInterface and 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 MatchingInterface contracts by @vbreuss in #109

Full Changelog: v0.4.0...v0.5.0

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 08 Jul 17:25
6657202

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

Choose a tag to compare

@github-actions github-actions released this 06 Jul 14:33
e6c8637

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 WhenInjectedInto by @vbreuss in #76
  • refactor!: rename ScanAs.ImplementedInterfaces to Marker by @vbreuss in #77
  • refactor!: replace Default/TryAdd bool flags with the Fallback enum 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

Choose a tag to compare

@github-actions github-actions released this 04 Jul 07:54
f7ae7c9

What's Changed

  • chore: Bump SimpleInjector from 5.5.2 to 5.6.0 by @dependabot[bot] in #32
  • feat: add async initialization via IAsyncInitializable with 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> or Task<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 AddAwaitenInitialization by @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

Full Changelog: v0.1.0...v0.2.0