All notable changes to this project will be documented in this file. See Keep a Changelog for formatting guidelines.
1.1.0 - 2024-09-19
- Added a
setSynchronizer
method toFactory
, and a correspondingSynchronizer
protocol, for controlling how dependency resolution is synchronized.
- Singleton registrations no longer hold onto the closure after the instance is created.
1.0.0 - 2022-12-13
- Dropped support for CocoaPods < 1.11.3.
- Dropped support for Swift < 5.5 (Xcode < 13.2).
- Hosting the documentation locally no longer emits a warning about build order.
- Extraneous arguments in Service callbacks will now be properly diagnosed.
- The
@Store
property wrapper now follows Swift's concurrency rules.
- MultitypeService now supports named dependencies.
Resolver
now has a new requirement,resolveAll(_:)
, which gives a mapping of name -> instance for all dependencies of a given type.- The factory now has a
clearDependencies()
method intended for testing. - Singletons which depend on weak services now trigger an assertion failure by default.
- Switching over
Scope
now requires adefault:
branch. MultitypeService.Iterator
is now an alias forAnyIterator<Registration>
, notIndexingIterator<[Registration]>
.- The factory's options cannot be accessed directly; instead, use the static methods
getOptions()
andupdateOptions(mutation:)
. @Store
now publishes changes onDispatchQueue.main
by default, rather thanRunLoop.main
.- The default options are now reflected in the initializer for
ResolutionOptions
. - The test and documentation scripts now use
xcpretty
to clean upxcodebuild
output. - The
name
argument toService.init
is now a labeled argument, to better matchresolve
.
0.3.0 - 2022-10-03
- The factory is now thread-safe: its functions may be simultaneously called on different threads.
- The example projects now look the same when run on iOS 16 as on earlier versions.
- Added a way to register existing instances as dependencies.
- Added a script to run all tests, including for the example projects.
- Added automated tests for
@Store
.
0.2.0 - 2022-09-14
- The documentation can be run on any port when hosted locally, rather than always using port 3000.
MultitypeService
no longer exposes the implementation type by default. It may still be exposed explicitly.@Store
now publishes changes onRunLoop.main
by default, rather than immediately.
- The factory can now check for circular dependencies. This is enabled by default in debug builds.
- The podspec now includes a documentation URL.
- Added documentation for
@Store
. - Examples for testing
AnyObservableObject
in both example projects. - Added automated tests.
- Created a changelog, contributing guidelines, and issue templates.
0.1.0 - 2022-05-02
Initial release.