All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- No changes yet.
1.17.1 - 2023-10-19
- Suggestions for value vs. pointer elements for slice and array types.
- An issue where value group values were not getting decorated by decorators within the same module when using dig.Export(true).
- A typo in docs.
- An issue where false positives in cycle detection were occurring when providing to a child scope.
Thanks to @paullen and @lcarilla for their contributions to this release.
1.17.0 - 2023-05-02
- Allow using
dig.As
withdig.Group
. - Add
FillInvokeInfo
Option andInvokeInfo
struct to help extract the types requested by anInvoke
statement. - To get visibility into constructor and decorator calls, introduce
WithProviderCallback
andWithDecoratorCallback
Options to provide callback functions.
1.16.1 - 2023-01-10
- A panic when
DryRun
was used withDecorate
.
1.16.0 - 2023-01-03
- Add
RecoverFromPanics
option, which provides panic-recovery mechanism for Container. - Add
Error
interface which enables distinguishing errors from Dig using standarderrors
package.
Thanks to @mie998 for their contribution(s) to this release.
1.15.0 - 2022-08-02
- Support for
soft
value groups, which specify a value group that only gets populated with values from already-executed constructors.
- Fix an issue with invoke order affecting results provided by private provides
Thanks to @hbdf for their contributions to this release.
1.14.1 - 2022-03-22
- Fix an issue where a dependency for a decoration supplied by another decorator in the same scope is ignored.
- Fix a panic when submitting a single value as a value group in
Scope.Decorate
. - Upon a provide error, make the error message contain the function named specified by LocationForPC Option.
1.14.0 - 2022-02-23
- Introduce
dig.Scope
which creates a scoped dependency injection container to scope dependencies. - Introduce
Scope.Decorate
andContainer.Decorate
which allows a decorator to modify a dependency already provided in the dependency graph. - Add
FillDecorateInfo
Option andDecorateInfo
struct which exposes information on what Dig was able to understand from the decorator provided withScope.Decorate
orContainer.Decorate
.
- The error message that appears when a cycle is detected in the dependency graph has been changed slightly.
- A stack overflow bug that happens when cycles are introduced via self-pointing dependencies with DeferAcyclicVerification.
1.13.0 - 2021-09-21
- Introduce
As
option which supports providing a type as interface(s) it implements to the container. - Add
LocationForPC
option which overrides the function inspection for a program counter address to a provided function info.
1.12.0 - 2021-07-29
- Support for ProvideInfo and FillProvideInfo that allow the caller of
Provide
to get info about what dig understood from the constructor.
1.11.0 - 2021-06-09
- Support unexported fields on
dig.In
structs with theignore-unexported:"true
struct tag.
1.10.0 - 2020-06-16
- Introduce
DryRun
Option which, when set to true, disables invocation of functions supplied toProvide
andInvoke
. This option will be used to build no-op containers, for example forfx.ValidateApp
method.
1.9.0 - 2020-03-31
- GraphViz visualization of the graph now includes names of packages next to constructors.
- Added a
flatten
modifier to group tags for slices to allow providing individual elements instead of the slice for a group value. See package doucmentation for more information.
- Drop library dependency on
golang.org/x/lint
. - Support printing multi-line error messages with
%+v
.
1.8.0 - 2019-11-14
- Migrated to Go modules.
1.7.0 - 2019-01-04
- Added
Group
option forProvide
to add value groups to the container without rewriting constructors. See package doucmentation for more information.
1.6.0 - 2018-11-06
- When an error graph is visualized, the graph is pruned so that the graph only contains failure nodes.
- Container visualization is now oriented from right to left.
1.5.1 - 2018-11-01
- Fixed a test that was causing Dig to be unusable with Go Modules.
1.5.0 - 2018-09-19
- Added a
DeferAcyclicVerification
container option that defers graph cycle detection until the next Invoke.
- Improved cycle-detection performance by 50x in certain degenerative cases.
1.4.0 - 2018-08-16
- Added
Visualize
function to visualize the state of the container in the GraphViz DOT format. This allows visualization of error types and the dependency relationships of types in the container. - Added
CanVisualizeError
function to determine if an error can be visualized in the graph. - Added
Name
option forProvide
to add named values to the container without rewriting constructors. See package documentation for more information.
name:"..."
tags on nested Result Objects will now cause errors instead of being ignored.
1.3.0 - 2017-12-04
- Improved messages for errors thrown by Dig under a many scenarios to be more informative.
1.2.0 - 2017-11-07
dig.In
anddig.Out
now support value groups, making it possible to produce many values of the same type from different constructors. See package documentation for more information.
1.1.0 - 2017-09-15
- Added the
dig.RootCause
function which allows retrieving the original constructor error that caused anInvoke
failure.
- Errors from
Invoke
now attempt to hint to the user a presence of a similar type, for example a pointer to the requested type and vice versa.
1.0.0 - 2017-07-31
First stable release: no breaking changes will be made in the 1.x series.
Provide
andInvoke
will now fail ifdig.In
ordig.Out
structs contain unexported fields. Previously these fields were ignored which often led to confusion.
1.0.0-rc2 - 2017-07-21
- Exported
dig.IsIn
anddig.IsOut
so that consuming libraries can check if a params or return struct embeds thedig.In
anddig.Out
types, respectively.
- Added variadic options to all public APIS so that new functionality can be introduced post v1.0.0 without introducing breaking changes.
- Functions with variadic arguments can now be passed to
dig.Provide
anddig.Invoke
. Previously this caused an error, whereas now the args will be ignored.
1.0.0-rc1 - 2017-06-21
First release candidate.
0.5.0 - 2017-06-19
-
dig.In
anddig.Out
now support named instances, i.e.:type param struct { dig.In DB1 DB.Connection `name:"primary"` DB2 DB.Connection `name:"secondary"` }
- Structs compatible with
dig.In
anddig.Out
may now be generated usingreflect.StructOf
.
0.4.0 - 2017-06-12
- Add
dig.In
embeddable type for advanced use-cases of specifying dependencies. - Add
dig.Out
embeddable type for advanced use-cases of constructors inserting types in the container. - Add support for optional parameters through
optional:"true"
tag ondig.In
objects. - Add support for value types and many built-ins (maps, slices, channels).
- [Breaking] Restrict the API surface to only
Provide
andInvoke
. - [Breaking] Update
Provide
method to accept variadic arguments.
- [Breaking] Remove
Must*
funcs to greatly reduce API surface area. - Providing constructors with common returned types results in an error.
0.3 - 2017-05-02
- Add functionality to
Provide
to support constructor withn
return objects to be resolved into thedig.Graph
- Add
Invoke
function to invoke provided function and insert return objects into thedig.Graph
- Rename
RegisterAll
andMustRegisterAll
toProvideAll
andMustProvideAll
.
0.2 - 2017-03-27
- Rename
Register
toProvide
for clarity and to recude clash with other Register functions. - Rename
dig.Graph
todig.Container
.
- Remove the package-level functions and the
DefaultGraph
.
Initial release.