github.com/uber-go/fx
v1.9.0
#436 most downloaded on Go modules
uber-go/fx
What this package is like to depend on
Last release 7 years ago
no release in 18 months
Release timing varies
gaps range from 9 days to 8 months
Nearly every release is documented
notes for 11 of 11 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
19 releases · first in 2017
0 releases in the last 12 months
see the full history below
Release timeline
19 releases · Feb 2017 to Sep 2019Releases
latest 19-
v1.9.1-0.20190910214031-821a8a6fa8e910 Sep 2019 pre-releaseNothing published for this version
-
v1.9.022 Jan 2019Release notes
Open source →Added
- Add the ability to shutdown Fx applications from inside the container. See the Shutdowner documentation for details.
- Add
fx.Annotatedto allow users to provide named values without creating a new constructor.
-
v1.8.006 Nov 2018 -
v1.7.126 Sep 2018Release notes
Open source →Fixed
- Make
fxtest.Newensure that the app was created successfully. Previously, it would return the app (similar tofx.New, which expects the user to verify the error). - Update dig container to defer acyclic validation until after Invoke. Application startup time should improve proportional to the size of the dependency graph.
- Fix a goroutine leak in
fxtest.Lifecycle.
- Make
-
v1.7.017 Aug 2018Release notes
Open source →Added
- Add
fx.ErrorHookoption to allow users to provideErrorHandlers on invoke failures. VisualizeErrorreturns the visualization wrapped in the error if available.
- Add
-
v1.6.012 Jun 2018 -
v1.5.011 Apr 2018Release notes
Open source →Added
- Add
fx.StartTimeoutandfx.StopTimeoutto make configuring application start and stop timeouts easier. - Export the default start and stop timeout as
fx.DefaultTimeout.
Fixed
- Make
fxtestrespect the application's start and stop timeouts.
- Add
-
v1.4.008 Dec 2017Release notes
Open source →Added
- Add
fx.Populateto populate variables with values from the dependency injection container without requiring intermediate structs.
- Add
-
v1.3.028 Nov 2017Release notes
Open source →Changed
- Improve readability of hook logging in addition to provide and invoke.
Fixed
- Fix bug which caused the OnStop for a lifecycle hook to be called even if it failed to start.
-
v1.2.006 Sep 2017 -
v1.1.022 Aug 2017 -
v1.0.031 Jul 2017Release notes
Open source →First stable release: no breaking changes will be made in the 1.x series.
Added
fx.Extractnow supportsfx.Intags on target structs.
Changed
- [Breaking] Rename
fx.Injecttofx.Extract. - [Breaking] Rename
fxtest.Must*tofxtest.Require*.
Removed
- [Breaking] Remove
fx.Timeoutandfx.DefaultTimeout.
-
v1.0.0-rc221 Jul 2017 pre-releaseRelease notes
Open source →- [Breaking] Lifecycle hooks now take a context.
- Add
fx.Inandfx.Outwhich exposes optional and named types. Modules should embed these types instead of relying ondig.Inanddig.Out. - Add an
Errmethod to retrieve the underlying errors during the dependency graph construction. The same error is also returned fromStart. - Graph resolution now happens as part of
fx.New, rather than at the beginning ofapp.Start. This allows inspection of the graph errors throughapp.Err()before the decision to start the app. - Add a
Loggeroption, which allows users to send Fx's logs to different sink. - Add
fxtest.App, which redirects log output to the user'stesting.TBand provides some lifecycle helpers.
-
v1.0.0-rc121 Jun 2017 pre-releaseRelease notes
Open source →- [Breaking] Providing types into
fx.Appand invoking functions are now options passed during application construction. This makes users' interactions with modules and collections of modules identical. - [Breaking]
TestLifecycleis now in a separatefxtestsubpackage. - Add
fx.Inject()to pull values from the container into a struct.
- [Breaking] Providing types into
-
v1.0.0-beta412 Jun 2017 pre-releaseRelease notes
Open source →- [Breaking] Monolithic framework, as released in initial betas, has been
broken into smaller pieces as a result of recent advances in
diglibrary. This is a radical departure from the previous direction, but it needed to be done for the long-term good of the project. - [Breaking]
Module interfacehas been scoped all the way down to being a single dig constructor. This allows for very sophisticated module compositions. Seego.uber.org/digfor more information on the constructors. - [Breaking]
package confighas been moved to its own repository. seego.uber.org/configfor more information. fx.Lifecyclehas been added for modules to hook into the framework lifecycle events.service.Hostinterface which composed a number of primitives together (configuration, metrics, tracing) has been deprecated in favor offx.App.
- [Breaking] Monolithic framework, as released in initial betas, has been
broken into smaller pieces as a result of recent advances in
-
v1.0.0-beta3.105 Jul 2017 pre-releaseNothing published for this version
-
v1.0.0-beta328 Mar 2017 pre-releaseRelease notes
Open source →- [Breaking] Environment config provider was removed. If you were using environment variables to override YAML values, see config documentation for more information.
- [Breaking] Simplify Provider interface: remove
Scopemethod from theconfig.Providerinterface, one can use either ScopedProvider and Value.Get() to access sub fields. - Add
task.MustRegisterconvenience function which fails fast by panicking Note that this should only be used during app initialization, and is provided to avoid repetetive error checking for services which register many tasks. - Expose options on task module to disable execution. This will allow users to enqueue and consume tasks on different clusters.
- [Breaking] Rename Backend interface
PublishtoEnqueue. Created a newExecuteAsyncmethod that will kick off workers to consume tasks and this is subsumed by module Start. - [Breaking] Rename package
uhttp/clienttouhttp/uhttpclientfor clarity. - [Breaking] Rename
PopulateStructmethod in value toPopulate. The method can now populate not only structs, but anything: slices, maps, builtin types and maps. - [Breaking]
package dighas moved fromgo.uber.org/fx/digto a new home atgo.uber.org/dig. - [Breaking] Pass a tracer the
uhttp/uhttpclientconstructor explicitly, instead of using a global tracer. This will allow to use http client in parallel tests.
Release notes
Open source →- [Breaking] Environment config provider was removed. If you were using environment variables to override YAML values, see config documentation for more information.
- [Breaking] Simplify Provider interface: remove
Scopemethod from theconfig.Providerinterface, one can use either ScopedProvider and Value.Get() to access sub fields. - Add
task.MustRegisterconvenience function which fails fast by panicking Note that this should only be used during app initialization, and is provided to avoid repetetive error checking for services which register many tasks. - Expose options on task module to disable execution. This will allow users to enqueue and consume tasks on different clusters.
- [Breaking] Rename Backend interface
PublishtoEnqueue. Created a newExecuteAsyncmethod that will kick off workers to consume tasks and this is subsumed by module Start. - [Breaking] Rename package
uhttp/clienttouhttp/uhttpclientfor clarity. - [Breaking] Rename
PopulateStructmethod in value toPopulate. The method can now populate not only structs, but anything: slices, maps, builtin types and maps. - [Breaking]
package dighas moved fromgo.uber.org/fx/digto a new home atgo.uber.org/dig. - [Breaking] Pass a tracer the
uhttp/uhttpclientconstructor explicitly, instead of using a global tracer. This will allow to use http client in parallel tests.
-
v1.0.0-beta210 Mar 2017 pre-releaseRelease notes
Open source →- [Breaking] Remove
ulog.Loggerinterface and expose*zap.Loggerdirectly. - [Breaking] Rename config and module from
modules.rpctomodules.yarpc - [Breaking] Rename config key from
modules.httptomodules.uhttpto match the module name - [Breaking] Upgrade
zaptov1.0.0-rc.3(now go.uber.org/zap, was github.com/uber-go/zap) - Remove now-unused
config.IsDevelopmentEnv()helper to encourage better testing practices. Not a breaking change as nobody is using this func themselves according to our code search tool. - Log
traceIDandspanIDin hex format to match Jaeger UI. Upgrade Jaeger to min version 2.1.0 and use jaeger's adapters for jaeger and tally initialization. - Tally now supports reporting histogram samples for a bucket. Upgrade Tally to 2.1.0
- [Breaking] Make new module naming consistent
yarpc.ThriftModuletoyarpc.New,task.NewModuletotask.New - [Breaking] Rename
yarpc.CreateThriftServiceFunctoyarpc.ServiceCreateFuncas it is not thrift-specific. - Report version metrics for company-wide version usage information.
- Allow configurable service name and module name via service options.
- DIG constructors now support returning a tuple with the second argument being an error.
- [Breaking] Remove
-
v1.0.0-beta122 Feb 2017 pre-releaseRelease notes
Open source →This is the first beta release of the framework, where we invite users to start building services on it and provide us feedback. Warning we are not promising API compatibility between beta releases and the final 1.0.0 release. In fact, we expect our beta user feedback to require some changes to the way things work. Once we reach 1.0, we will provider proper version compatibility.
Release notes
Open source →This is the first beta release of the framework, where we invite users to start building services on it and provide us feedback. Warning we are not promising API compatibility between beta releases and the final 1.0.0 release. In fact, we expect our beta user feedback to require some changes to the way things work. Once we reach 1.0, we will provider proper version compatibility.