All Versions
Latest Version
Avg Release Cycle
41 days
Latest Release
1455 days ago

Changelog History
Page 1

  • v1.0.7 Changes

    June 19, 2020

    Bug fixes

    • ๐Ÿ›  Fixed root dependency container builder function not being accessible when one or more dependencies are resolved by type (6dc670)
    • ๐Ÿ›  Fixed runtime crash caused by dependency references declared with a different name than their resolved registration (f5f52d)
  • v1.0.6 Changes

    June 11, 2020

    New features

    • ๐Ÿ‘ 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

    • Parameter --input_paths was wrongly requiring whitespaces and slashes to be escaped (#148).
    • Cache was unable to save if the containing directory wouldn't exist (#148).
    • Cache was not invalidated when removing paths from the input paths list (#148).
  • v1.0.5 Changes

    May 18, 2020

    New features

    • ๐Ÿ†• New option to disable all SwiftLint warnings / errors (#144). Thanks @happynik!

    ๐Ÿ› Bug fix

    • โœ… Tests file is back to WeaverTests.swift rather than Weaver.swift
  • v1.0.4 Changes

    May 11, 2020

    New features

    ๐Ÿ‘Œ Improvements

    • ๐Ÿ“‡ Renamed proxy resolvers to align their name with other resolvers (#133). Thanks @MontakOleg!

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  Fixed parsing of generic types (#137).
  • v1.0.3 Changes

    February 24, 2020

    Bug Fixes

    • ๐Ÿ›  Fixed a crash which was happening when no Swift file could be found at the input location (#132). Thanks @happynik!
  • v1.0.2 Changes

    January 27, 2020

    Bug Fixes

    • ๐Ÿ›  Fixed a bug preventing to declare registration and references in a public root type (#127, #126).
  • v1.0.1 Changes

    December 20, 2019

    New Features

    • Parameters can use weak or container scopes [#90]
    • ๐Ÿ”ง Closure configuration attribute in order to handle dependency with a closure type [#108]

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fixed input file listing which was blocking Weaver when trying to use (unsupported) wildcards.
    • ๐Ÿ›  Fixed type parser edge cases.
  • v1.0.0 Changes

    December 15, 2019

    ๐Ÿฑ First stable version of Weaver ๐ŸŽ‰

    Foundations rework

    • 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 @Weaver(...) as annotations.
    • 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 WeaverTests.swift.
    • โž• Added scope lazy which activates a lazy loading mechanism for a given dependency.
    • โž• Added configuration attribute setter which 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 xcfilelist command 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 Changes

    April 12, 2019
    • Added detailed resolvers (#103, #104)
    • ๐Ÿ‘ Added Swift 5 support (#105)
  • v0.12.2 Changes

    February 21, 2019
    • ๐Ÿ›  Fixed --single-output option (#101).
    • ๐Ÿ›  Fixed make install command.