- Support Variadic types/generics: https://github.com/apple/swift-evolution/blob/main/proposals/0398-variadic-types.md Now register and injection have infinity paramaters.
- Improve changes from 4.3.4 release. Now your can simplify use two modificators:
Old:
container.register { Cat(name: arg($0), owner: many($1), home: $2) }
New:container.register(Cat.init) { (arg($0), many($1)) }
- Add
unused
for components. Need for disable warning for optional components.
- Add
root
components. For more information seeregistration_and_service.md
- Increase minimal version iOS 11.0, tvOS 11.0, macOS 10.13, watchOS 4.0
- Remove SpinLock
- fix makeGraph while use container hierarchy
- Add simple one modificator injection into initialize method. For example:
Old:
container.register { Cat(name: arg($0), owner: $1, home: $2) }
New:container.register(Cat.init) { arg($0) }
- Fix argument injection for Tag and named resolve.
- Fix arguments resolve if for resolve used none base type. for example:
let a: T? = container.resolve(args: ...)
. In current exampleT
isOptional
. Also fix ifT
use many or tag.
- Improve new extensions feature. But it's new API - I can change in future.
Warning! This version change public API!
- Update arguments. Now inject arguments it's thread save operation. Also change syntax - remove extensions, and now inject arguments use resolve method in container. see #159
- Fix potential crash into FastLock. For more information saw: ivlevAstef/SwiftLazy#6
- Improve thread safe for public scopes. Actually only if you use custom lifetime.
- Fix thread safe for methods
initializeSingletonObjects
andinitializeObjectsForScope
- Fix memory leak ParsedType. About bug in comments #159 issue
- Add new settings - enable disable multithread support. Default enable.
- Improve resolve speed - fix small performance bug.
- Fix multithread crash - logger tabulation can crashed on multithread.
- Small fix log bugs - if your use many in logs can shown incorrect warning.
- Add new feature: initialize objects for scope. This feature equals to
initializeSingletonObjects
but for your custom lifetime/scope.
- Fix library bug - potencial memory leaks. This bug manifested if your use Provider/Lazy and call get object until initialize other dependency (for example inside init method).
- Add
test
- it's a more powerful analogdefault
needed for tests. - Small improve Graph API - fix access scope and fix getted type for unknown and arg.
- Add Graph API - now your get dependency graph.
- Change graph validation - change syntax, add validation cases, improve validation cycles speed x1000-10000
- Fix small bugs and full synchronize validation graph and real usage.
- update documentation and README
- update structure
- restore code coverage and travis
- support linux
- fix carthage app store - remove copy shell scripts from build phase
- fix graph validate - now validation not checked arguments
- fix xcode 11.2.1 bug with Weak generic
- DANGER! changed logic for Provider and Lazy - now objectGraph object not retained for Provider and Lazy. It's remove potencial memory leak, but can changed your logic.
- Fix support swiftPM
- Now
initializeSingletonObjects
always resolved in the same order.
- Support Lazy with tags, many and other combinations. for example:
let services: [Lazy<ServiceProtocol>] = many(by(tag: FooService.self, on: *container))
- Support Many<Lazy>. For example:
let objects: [Lazy<Service>] = many(*container)
- remove bundle from DIFramework - now support found dependencies for static libralies
- fix carthage compilation
- Fix "swift build" command compillation error
- Support order for many
- Fully support optional register.
c.register { optionalValue }
now can correct resolve. - Improve logs for optional register if optional is nil.
- Fix
register1
- now onlyregister
- Sorry. Stop support swift 3.x
- Fix IBDesignable crash
- Support Swift 5
- Remove scan
- Support custom/user scopes.
- Improve description for Component
- more improve speed
- Support arguments for providers
- Add empty Lazy/Provider initialization with fatalError
- Support container Hierarchy
- Fix swift 4.2 support
- Support Carthage
- Support Swift 4.2
- New feature
Arguments for initialization
: #123
- Add extension to container. for example
container.extension(for: Home.self)
- Support arguments into extensions
container.extension(for: Home.self).setArgs("arg1", arg2, ...)
- Add modificator
arg
-container.register{ YourClass(p1: $0, p2: arg($1)) }
- Support static library for cocoapods. Needs cocoapods version 1.5.0 up
- Support static library for cocoapods. Needs cocoapods version 1.4.0 up
- Up code coverage to 90%
- Fix postInit - now method call after executed cycle injection
- Fix hard cycle potensial bug.
- fix crash when using Lazy/Provider with Optional types.
- fix swizzling bug.
- New feature: inject into subviews, cells, items. Thanks 'Nekitosss'
- Support delayed injection. Now have Lazy and Provider injection.
- support swift4.1 Thanks 'Nekitosss'
- rename lifetimes: single, perRun(weak/strong), perContainer(weak/strong), objectGraph, prototype.
- small improve internal code
- support injection by keyPath for swift4
- small improve logging - add new log level
.verbose
- Support multiply using tag and many
- Add new lifetime
perContainer
- Improved speed by optimizing logging
- Support change bundle for DIFramework. Needed for static library
- feature: You can now pass the bundle from which to retrieve the object
- bugfix: When created ViewController, library didn't consider storyboard bundle
- swift4 support
- bugfix: Improve validate graph cycle, and logs.
- bugfix: Support recursive inject into ViewControllers.
- bugfix: Fix component bundle source.
- bugfix: Fix valid method, for hard dependency graph.
- Rename
valid
tovalidate(checkGraphCycles:)
- Changed hierarchy/default logic. Now component inside framework a upper priority than 'default'
- Small improve code documentantion
- Added generated documentation for the code
- Now thread safe supported for
append(framework:)
,append(part:)
,import()
- Now
append(framework:)
also callimport()
- Added migration documentation.
- Added code documentation.
- Accelerated library work 30 times. Now twice as fast swinject.
- Reduced library size by 40%, but number of parameters is increased.
- Supported StoryboardReference. Even with many containers.
- Removed very old manual syntax. Now the library knows entire dependency graph.
- Improved graph validation. Removed exceptions.
- Changed concept - container builder removed. Now only container.
- The library itself understands what you need - nor any
try?
and.optional
- Changed lifetimes on:
single
,lazySingle
,weakSingle
,objectGraph
,prototype
- A single syntax for creating a hierarchy. Now it is
Framework
andPart
- Logging as part of the library.
- Single cocoapods spec without subspecs.
- fixed API. No more global syntax changes.
- But:
- Removed runtime args - there will be a new more powerful concept.
- Fix bug (issue98) into methods initial(useStoryboard:identifier:) and initial(nib:).
- Fix modularity bug - reorganization internal work with modularity and access levels
- Supported settings for set default behavior
- Improve injection into ViewControllers. Now app crash if found injections for VC but can’t injection into VC
- Fix modularity access level for complex dependencies
- Move logger into default subspec and change realization
- Fix 'as' short style operation - add @discardableResult
- Improve intersectionNames error - now this error contains only incorrect types
- Fix scan components for Modular - now scan component is an public component
- Add tags
- Add logs
- Removed supported errors
- Simplified error names
- Improved separate project for
module
- Separation
injection
method on:injection(.manual)
,injection(.optional)
,injection
,postInit
- Add documentation for migration
- A full update documentation
- Remove Lazy
- Remove DynamicAssembly. Now there are late binding
- Rename DIModule -> DIComponent and DIAssembly -> DIModule
- Support area of vision for the components using modules
- Add weak single
- Add error description
- Greatly improve old syntax
- Separate library on modules:
Core
,Description
,Component
,Module
,Storyboard
,Scan
,RuntimeArgs
- Support auto inject properties for Obj-C types
- Much more
- Support Lazy
DILazy
- Add documentation for lazy
- Improved typing - now
DIType
it'sAny.Type
for a placeAny
- Update documentation
- Update README
- Remove lifetime: .perRequest
- Change arrangement works with ViewControllers
- Fix critical bug (issue-69): App Crash if call DIStoryboard get ViewController methods after short period of time
- Write Test by issue-69
- Update documentation
- Added base types: DIType, DIMethodSignature, DIComponent
- Improved DIError - changed names, and added additional parameters
- Change lifetime syntax - now it's method
lifetime(enum)
- Fix scan bug: not supported recursive check superclass.
- Improved internal code style
- Change scan syntax: replace ScannedModule and ScannedAssembly to Scanned + Module and Scanned + Assembly
- Update documentation page scan
- Added Scan (ScannedModule, ScannedAssembly, ScanModule, ScanAssembly)
- Update documentation - added scan page
- Supported macOS
- Added tvOS
- Added short registration syntax for types
- Added short registration syntax for UIViewController
- Renamed resolve functions with parameter 'Name:' to 'name:'
- Added tests
- Supported Carthage
- Added Travis
- Supported SwiftPM