Go configuration with fangs
tl;dr Skip 1.18.0 and 1.18.1 and upgrade to this version instead.
This release fixes a regression that appears in rare circumstances when using Unmarshal
or UnmarshalExact
to decode values onto pointers with multiple indirection (eg. pointer to a pointer, etc). The change was introduced in 1.18.0 as a means to resolve a long-standing bug when decoding environment variables to structs.
The feature is now disabled by default and can be enabled using the viper_bind_struct
build tag. It's also considered experimental at this point, so breaking changes may be introduced in the future.
Full Changelog: https://github.com/spf13/viper/compare/v1.18.1...v1.18.2
Full Changelog: https://github.com/spf13/viper/compare/v1.18.0...v1.18.1
Highlighting some of the changes for better visibility.
Please share your feedback in the Discussion forum. Thanks! ❤️
AutomaticEnv
works with Unmarshal
Previously, environment variables that weren't bound manually or had no defaults could not be mapped by Unmarshal
. (The problem is explained in details in this issue: #761)
#1429 introduced a solution that solves that issue.
Full Changelog: https://github.com/spf13/viper/compare/v1.17.0...v1.18.0
Highlighting some of the changes for better visibility.
Please share your feedback in the Discussion forum. Thanks! ❤️
Viper now requires Go 1.19
This change ensures we can stay up to date with modern practices and dependencies.
log/slog
support [BREAKING]Viper v1.11.0 added an experimental Logger
interface to allow custom implementations (besides jwalterweatherman).
In addition, it also exposed an experimental WithLogger
function allowing to set a custom logger.
This release deprecates that interface in favor of log/slog released in Go 1.21.
[!WARNING]
WithLogger
accepts an *slog.Logger from now on.
To preserve backwards compatibility with older Go versions, prior to Go 1.21 Viper accepts a *golang.org/x/exp/slog.Logger.
The experimental flag is removed.
As of this release, Viper uses a new library to look for files, called locafero.
The new library is better covered by tests and has been built from scratch as a general purpose file finder library.
The implementation is experimental and is hidden behind a finder
build tag.
[!WARNING] The
io/fs
based implementation (that used to be hidden behind afinder
build tag) has been removed.
strings.Cut
by @scop in https://github.com/spf13/viper/pull/1650
Full Changelog: https://github.com/spf13/viper/compare/v1.16.0...v1.17.0
Full Changelog: https://github.com/spf13/viper/compare/v1.15.0...v1.16.0
Full Changelog: https://github.com/spf13/viper/compare/v1.14.0...v1.15.0
Full Changelog: https://github.com/spf13/viper/compare/v1.13.0...v1.14.0
Important: This is the last release supporting Go 1.15.
GetUint16
by @oxisto in https://github.com/spf13/viper/pull/1405
Full Changelog: https://github.com/spf13/viper/compare/v1.12.0...v1.13.0
This release makes YAML v3 and TOML v2 the default versions used for encoding.
You can switch back to the old versions by adding viper_yaml2
and viper_toml1
to the build tags.
Please note that YAML v2 and TOML v1 are considered deprecated from this release and may be removed in a future release.
Please provide feedback in discussions and report bugs on the issue tracker. Thanks!
Full Changelog: https://github.com/spf13/viper/compare/v1.11.0...v1.12.0
Full Changelog: https://github.com/spf13/viper/compare/v1.10.1...v1.11.0