Avg Release Cycle
1012 days ago
v1.0.7 ChangesJune 19, 2020
v1.0.6 ChangesJune 11, 2020
- 👍 Possibility to associate dependencies to one or more platforms in order to support multi platform compilation (#148).
- Possibility to exclude or include modules to import in generated files (#148).
🐛 Bug fixes
v1.0.5 ChangesMay 18, 2020
v1.0.4 ChangesMay 11, 2020
v1.0.3 ChangesFebruary 24, 2020
v1.0.2 ChangesJanuary 27, 2020
v1.0.1 ChangesDecember 20, 2019
v1.0.0 ChangesDecember 15, 2019
🍱 First stable version of Weaver 🎉
- Dependency Graph: The dependency graph representation has been entirely reworked in order to allow for more flexibility at use. Basically, it is now linked using hash keys rather than direct object references.
- 🔗 Linker/Inspector: Since the dependency graph changed, the linker & Inspector naturally changed as well. Accessing to data through the graph can now throw, giving a more precise error handling. The visitor algorithm for resolving and building remains fairly the same, but now supports new features, which I will describe a bit below.
- 👍 Generator: The generator has been entirely rewritten using Meta. It also supports new features which I will describe below.
- ⚡️ Lexer: A cache (
LexerCache) has been added in order to avoid SourceKitten to parse the source files every time (~1s for ~30 files). This cache stores one token list per file. A token list is invalidated once its file has changed after it was stored. The format for storing is an optimized JSON where every key is only one or two characters.
- 👍 Generator: The generated Swift code is now relying a lot more on runtime, which brings more flexibility for supporting new features, but also allows Weaver to generate one single dependency container per project instead of one per injectable type
- Misc optimizations as a result of profiling the binary (~0.5s instead of ~2s for ~30 files when cache is complete).
🆕 New Features
- 👍 Property wrapper support. With Swift 5.1, Weaver is now able to detect property wrappers named
- Dependencies can now be resolved by name and/or by type.
- Abstract types can be composite (eg.
A & B) and still be resolved correctly as soon as a registration is declared up the tree with a super set abstract type (eg.
A & B & C).
- Some new (more specific) errors are now thrown. Eg. type mismatch, ambiguous type, ambiguous dependency name, etc...
- ➕ Added generation of a stub implementation of the main dependency resolver to facilitate testing. The code is generated in a separated file
- ➕ Added scope
lazywhich activates a lazy loading mechanism for a given dependency.
- ➕ Added configuration attribute
setterwhich makes Weaver generate a setter for a given dependency.
- An injectable type can now reference itself. The stored reference is weak, avoiding retain cycles. The optionality of that reference is abstracted away by Weaver though.
💥 Breaking changes
- ✅ Only one unique file per target (app/tests) can be generated while Weaver used to offer an option to generate multiple files.
- 🚚 Naturally, the
xcfilelistcommand has been removed since its necessity was very limited by the fact that only one file is generated now.
- Detailed resolvers are always on, which means the option doesn't exist anymore.
- 👍 Custom stencil templates aren't supported anymore, since Stencil has been replaced by Meta.
v0.12.3 ChangesApril 12, 2019
v0.12.2 ChangesFebruary 21, 2019
- 🛠 Fixed
- 🛠 Fixed
- 🛠 Fixed