aboutsummaryrefslogtreecommitdiff
path: root/CHANGELOG.md
diff options
context:
space:
mode:
Diffstat (limited to 'CHANGELOG.md')
-rw-r--r--CHANGELOG.md283
1 files changed, 283 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..917ec00
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,283 @@
+# Change Log
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](http://keepachangelog.com/)
+and this project adheres to [Semantic Versioning](http://semver.org/).
+
+## Unreleased
+
+## 0.13.3 - 2022-12-04
+
+Please note that we had to update the MSRV for this crate from 1.56.0 to 1.59.0
+for this patch release being possible, because a transitive dependency did
+update its MSRV.
+
+ - Backport of commit [d54986c54091e4620c199d3dfadde80b82958bb3] from [#362] for
+ using float_cmp for testing floats
+ - Backport of [#379] adding `Clone` trait derive to builder states
+
+[d54986c54091e4620c199d3dfadde80b82958bb3]: https://github.com/mehcode/config-rs/commit/d54986c54091e4620c199d3dfadde80b82958bb3
+[#362]: https://github.com/mehcode/config-rs/pull/362
+[#379]: https://github.com/mehcode/config-rs/pull/379
+
+## 0.13.2 - 2022-08-02
+
+ - Backport of [#316] to be testing with temp_env. The backport was necessary to
+ be able to backport the next change. This change shouldn't be user-visible.
+ - Backport of [#353] to use TryInto for more permissive deserialization of
+ integers
+ - Backport of commit [518a3cafa1e62ba7405709e5c508247e328e0a18] from [#362] to
+ fix tests
+
+[#316]: https://github.com/mehcode/config-rs/pull/316
+[#353]: https://github.com/mehcode/config-rs/pull/353
+[518a3cafa1e62ba7405709e5c508247e328e0a18]: https://github.com/mehcode/config-rs/commit/518a3cafa1e62ba7405709e5c508247e328e0a18
+[#362]: https://github.com/mehcode/config-rs/pull/362
+
+## 0.13.1 - 2022-04-13
+
+ - typo in doc comment for ConfigBuilder [#299]
+ - dot in config file name handling fixed [#306]
+
+[#299]: https://github.com/mehcode/config-rs/pull/299
+[#306]: https://github.com/mehcode/config-rs/pull/306
+
+## 0.13.0 - 2022-04-03
+
+ - Prefix-Seperator support was added [#292]
+ - Environment lists can now be parsed [#255]
+ - Setting an overwrite from an Option was added [#303]
+ - Option to keep the prefix from an environment variable was added [#298]
+ - Some small doc/CI fixes [#307], [#309]
+ - MSRV was updated to 1.56.0 [#304]
+ - Dependencies were updated [#289], [#301]
+
+[#292]: https://github.com/mehcode/config-rs/pull/292
+[#255]: https://github.com/mehcode/config-rs/pull/255
+[#303]: https://github.com/mehcode/config-rs/pull/303
+[#298]: https://github.com/mehcode/config-rs/pull/298
+[#307]: https://github.com/mehcode/config-rs/pull/307
+[#309]: https://github.com/mehcode/config-rs/pull/309
+[#304]: https://github.com/mehcode/config-rs/pull/304
+[#289]: https://github.com/mehcode/config-rs/pull/289
+[#301]: https://github.com/mehcode/config-rs/pull/301
+
+## 0.12.0 - 2022-02-10
+
+### Format support changes in this version
+
+ - HJSON support was removed [#230]
+ - JSON5 format support [#206]
+ - RON format support [#202]
+
+### Other noteworthy changes
+
+ - A new ConfigBuilder interface for building configuration objects [#196]
+ - Asynchronous sources [#207]
+ - Custom ENV separators are now supported [#185]
+ - Loads of dependency updates and bugfixes of course
+ - Preserved map order [#217]
+ - Support for parsing numbers from the environment [#137]
+ - Support for unsigned integers [#178]
+ - `Format` trait for (custom) file formats [#219]
+
+### Deprecated
+
+ - `Environment::new()` - see [#235]
+ - Large parts of the `Config` interface - see [#196]
+ - `Config::merge()`
+ - `Config::with_merged()`
+ - `Config::refresh()`
+ - `Config::set_default()`
+ - `Config::set()`
+ - `Config::set_once()`
+ - `Config::deserialize()`
+
+[#137]: https://github.com/mehcode/config-rs/pull/137
+[#178]: https://github.com/mehcode/config-rs/pull/178
+[#185]: https://github.com/mehcode/config-rs/pull/185
+[#196]: https://github.com/mehcode/config-rs/pull/196
+[#202]: https://github.com/mehcode/config-rs/pull/202
+[#206]: https://github.com/mehcode/config-rs/pull/206
+[#207]: https://github.com/mehcode/config-rs/pull/207
+[#217]: https://github.com/mehcode/config-rs/pull/217
+[#219]: https://github.com/mehcode/config-rs/pull/219
+[#230]: https://github.com/mehcode/config-rs/pull/230
+[#235]: https://github.com/mehcode/config-rs/pull/235
+
+## 0.11.0 - 2021-03-17
+ - The `Config` type got a builder-pattern `with_merged()` method [#166].
+ - A `Config::set_once()` function was added, to set an value that can be
+ overwritten by `Config::merge`ing another configuration [#172]
+ - serde_hjson is, if enabled, pulled in without default features.
+ This is due to a bug in serde_hjson, see [#169] for more information.
+ - Testing is done on github actions [#175]
+
+[#166]: https://github.com/mehcode/config-rs/pull/166
+[#172]: https://github.com/mehcode/config-rs/pull/172
+[#169]: https://github.com/mehcode/config-rs/pull/169
+[#175]: https://github.com/mehcode/config-rs/pull/169
+
+## 0.10.1 - 2019-12-07
+ - Allow enums as configuration keys [#119]
+
+[#119]: https://github.com/mehcode/config-rs/pull/119
+
+## 0.10.0 - 2019-12-07
+ - Remove lowercasing of keys (unless the key is coming from an environment variable).
+ - Update nom to 5.x
+
+## 0.9.3 - 2019-05-09
+ - Support deserializing to a struct with `#[serde(default)]` [#106]
+
+[#106]: https://github.com/mehcode/config-rs/pull/106
+
+## 0.9.2 - 2019-01-03
+ - Support reading `enum`s from configuration. [#85]
+ - Improvements to error path (attempting to propagate path). [#89]
+ - Fix UB in monomorphic expansion. We weren't re-exporting dependent types. [#91]
+
+[#85]: https://github.com/mehcode/config-rs/pull/85
+[#89]: https://github.com/mehcode/config-rs/pull/89
+[#91]: https://github.com/mehcode/config-rs/issues/91
+
+## 0.9.1 - 2018-09-25
+ - Allow Environment variable collection to ignore empty values. [#78]
+ ```rust
+ // Empty env variables will not be collected
+ Environment::with_prefix("APP").ignore_empty(true)
+ ```
+
+[#78]: https://github.com/mehcode/config-rs/pull/78
+
+## 0.9.0 - 2018-07-02
+ - **Breaking Change:** Environment does not declare a separator by default.
+ ```rust
+ // 0.8.0
+ Environment::with_prefix("APP")
+
+ // 0.9.0
+ Environment::with_prefix("APP").separator("_")
+ ```
+
+ - Add support for INI. [#72]
+ - Add support for newtype structs. [#71]
+ - Fix bug with array set by path. [#69]
+ - Update to nom 4. [#63]
+
+[#72]: https://github.com/mehcode/config-rs/pull/72
+[#71]: https://github.com/mehcode/config-rs/pull/71
+[#69]: https://github.com/mehcode/config-rs/pull/69
+[#63]: https://github.com/mehcode/config-rs/pull/63
+
+## 0.8.0 - 2018-01-26
+ - Update lazy_static and yaml_rust
+
+## 0.7.1 - 2018-01-26
+ - Be compatible with nom's verbose_errors feature (#50)[https://github.com/mehcode/config-rs/pull/50]
+ - Add `derive(PartialEq)` for Value (#54)[https://github.com/mehcode/config-rs/pull/54]
+
+## 0.7.0 - 2017-08-05
+ - Fix conflict with `serde_yaml`. [#39]
+
+[#39]: https://github.com/mehcode/config-rs/issues/39
+
+ - Implement `Source` for `Config`.
+ - Implement `serde::de::Deserializer` for `Config`. `my_config.deserialize` may now be called as either `Deserialize::deserialize(my_config)` or `my_config.try_into()`.
+ - Remove `ConfigResult`. The builder pattern requires either `.try_into` as the final step _or_ the initial `Config::new()` to be bound to a slot. Errors must also be handled on each call instead of at the end of the chain.
+
+
+ ```rust
+ let mut c = Config::new();
+ c
+ .merge(File::with_name("Settings")).unwrap()
+ .merge(Environment::with_prefix("APP")).unwrap();
+ ```
+
+ ```rust
+ let c = Config::new()
+ .merge(File::with_name("Settings")).unwrap()
+ .merge(Environment::with_prefix("APP")).unwrap()
+ // LLVM should be smart enough to remove the actual clone operation
+ // as you are cloning a temporary that is dropped at the same time
+ .clone();
+ ```
+
+ ```rust
+ let mut s: Settings = Config::new()
+ .merge(File::with_name("Settings")).unwrap()
+ .merge(Environment::with_prefix("APP")).unwrap()
+ .try_into();
+ ```
+
+## 0.6.0 – 2017-06-22
+ - Implement `Source` for `Vec<T: Source>` and `Vec<Box<Source>>`
+
+ ```rust
+ Config::new()
+ .merge(vec![
+ File::with_name("config/default"),
+ File::with_name(&format!("config/{}", run_mode)),
+ ])
+ ```
+
+ - Implement `From<&Path>` and `From<PathBuf>` for `File`
+
+ - Remove `namespace` option for File
+ - Add builder pattern to condense configuration
+
+ ```rust
+ Config::new()
+ .merge(File::with_name("Settings"))
+ .merge(Environment::with_prefix("APP"))
+ .unwrap()
+ ```
+
+ - Parsing errors even for non required files – [@Anthony25] ( [#33] )
+
+[@Anthony25]: https://github.com/Anthony25
+[#33]: https://github.com/mehcode/config-rs/pull/33
+
+## 0.5.1 – 2017-06-16
+ - Added config category to Cargo.toml
+
+## 0.5.0 – 2017-06-16
+ - `config.get` has been changed to take a type parameter and to deserialize into that type using serde. Old behavior (get a value variant) can be used by passing `config::Value` as the type parameter: `my_config.get::<config::Value>("..")`. Some great help here from [@impowski] in [#25].
+ - Propagate parse and type errors through the deep merge (remembering filename, line, etc.)
+ - Remove directory traversal on `File`. This is likely temporary. I do _want_ this behavior but I can see how it should be optional. See [#35]
+ - Add `File::with_name` to get automatic file format detection instead of manual `FileFormat::*` – [@JordiPolo]
+ - Case normalization [#26]
+ - Remove many possible panics [#8]
+ - `my_config.refresh()` will do a full re-read from the source so live configuration is possible with some work to watch the file
+
+[#8]: https://github.com/mehcode/config-rs/issues/8
+[#35]: https://github.com/mehcode/config-rs/pull/35
+[#26]: https://github.com/mehcode/config-rs/pull/26
+[#25]: https://github.com/mehcode/config-rs/pull/25
+
+[@impowski]: https://github.com/impowski
+[@JordiPolo]: https://github.com/JordiPolo
+
+## 0.4.0 - 2017-02-12
+ - Remove global ( `config::get` ) API — It's now required to create a local configuration instance with `config::Config::new()` first.
+
+ If you'd like to have a global configuration instance, use `lazy_static!` as follows:
+
+ ```rust
+ use std::sync::RwLock;
+ use config::Config;
+
+ lazy_static! {
+ static ref CONFIG: RwLock<Config> = Default::default();
+ }
+ ```
+
+## 0.3.0 - 2017-02-08
+ - YAML from [@tmccombs](https://github.com/tmccombs)
+ - Nested field retrieval
+ - Deep merging of sources (was shallow)
+ - `config::File::from_str` to parse and merge a file from a string
+ - Support for retrieval of maps and slices — `config::get_table` and `config::get_array`
+
+## 0.2.0 - 2017-01-29
+Initial release.