All Versions
Latest Version
Avg Release Cycle
67 days
Latest Release
129 days ago

Changelog History
Page 2

  • v0.11.0 Changes

    May 09, 2019

    ๐Ÿ‘Œ Support for Scala 2.13 (RC1) was introduced.

    • ๐Ÿ’ฅ Breaking changes

      • The default transformation in FieldCoproductHint changed from converting class names to lower case to converting them to kebab case (e.g. ConfigOption is converted to config-option). The old behavior can be retained by putting in scope an implicit def coproductHint[T] = new FieldCoproductHint[T]("type") { override def fieldValue(name: String): String = name.toLowerCase }.
    • ๐Ÿ†• New features

      • Added deriveEnumerationReader, deriveEnumerationWriter and deriveEnumerationConvert to the pureconfig.generic.semiauto package, allowing the derivation of readers and writers for enumerations encoded as sealed traits of case objects. As a consequence, the EnumCoproductHint is now deprecated in favor of these new methods;
      • CoproductHint now exposes a noOptionFound method allowing implementations to configure the failure reasons given when no option for a sealed family was able to be read.
  • v0.10.2 Changes

    February 05, 2019
    • ๐Ÿ†• New features
      • Added ConfigReader.Result[A] as an alias for Either[ConfigReaderFailures, A];
      • Introduced FluentConfigCursor, an alternative API to ConfigCursor focused on config navigation over error handling.
  • v0.10.1 Changes

    November 30, 2018
    • ๐Ÿ†• New features

      • loadConfigFromFiles now accepts a namespace parameter like the other loadConfig* varieties. (#437)
    • ๐Ÿ› Bug fixes

      • scala-compiler and scala-reflect dependencies are now provided, rather than regular, dependencies. (#434)
  • v0.10.0 Changes

    October 30, 2018

    ๐Ÿ‘Œ Support for Scala 2.10 was dropped.

    • ๐Ÿ’ฅ Breaking changes

      • Auto derivation of readers and writers for case classes and sealed traits is now disabled by default. Now users need to import everywhere a config is loaded or written (e.g. in files with calls to loadConfig);
      • The AllowMissingKeys trait was renamed to ReadsMissingKeys.
    • ๐Ÿ†• New features

      • The auto-derivation features of PureConfig, powered by shapeless, were extracted to a separate pureconfig-generic module, while pureconfig-core was left with only the absolute minimum for PureConfig to be useful. pureconfig will continue to be published as a Maven artifact aggregating the two aforementioned artifacts;
      • Users have now more control over reader and writer derivation. See the docs for more information;
      • New factory methods forProduct1, forProduct2, ..., forProduct22 were added to the companion objects of ConfigReader and ConfigWriter;
      • A new WritesMissingKeys trait enables custom writers to handle missing keys, a feature previously restricted to the built-in Option writer;
      • Cursors now perform the automatic type conversions required by HOCON when as<type> methods are called. Cursors now provide asBoolean, asLong, asInt, asShort, asDouble and asFloat.
  • v0.9.2 Changes

    August 23, 2018
    • ๐Ÿ†• New features

      • Users can now configure whether loadConfigFromFiles ignores or fails on non-existing or unreadable files;
      • Custom ConfigRenderOptions can now be passed to all config writing API methods;
      • PureConfig can now read Period instances written in the human-readable format supported by HOCON;
      • New configurable instances allow reading and writing maps with any key type, provided the respective conversion to/from strings;
      • ConfigCursor has a new atPath method for deep navigation into the config;
      • New pureconfig-yaml module adding support to load configs from YAML files.
    • ๐Ÿ› Bug fixes

      • Fixed a bug where PureConfig was not working when custom preludes were used.
  • v0.9.1 Changes

    March 22, 2018
    • ๐Ÿ†• New features
      • ConfigReader and ConfigWriter for Char;
      • Modules for fs2, hadoop and http4s.
  • v0.9.0 Changes

    January 08, 2018
    • ๐Ÿ†• New features

      • A new ConfigCursor now provides idiomatic, safe methods to navigate through a config. It also holds context for building failures with a more accurate location and path in the config;
      • ConfigReaderFailure was revamped to facilitate the propagation of context on failures. There is now a separation between higher-level ConfigReaderFailures and concrete, location-agnostic FailureReasons.
    • ๐Ÿ’ฅ Breaking changes

      • ConfigReader, as well as many related methods and classes, now reads configs from ConfigCursor instances instead of from direct ConfigValues. Code can be migrated simply by accessing the value field of ConfigCursor whenever a ConfigValue is needed. However, rewriting the code to use the new ConfigCursor methods is heavily recommended as it provides safer config handling and much better error handling;
      • Code for handling and raising failures may not work due to the revamp of the failure model. Inside ConfigReader instances users should now use the failed method of the new ConfigCursor instead of manually creating instances of ConfigReaderFailures;
      • The CannotConvertNull failure was removed, being superseeded by KeyNotFound;
      • Methods deprecated in previous versions were removed.
    • ๐Ÿ› Bug fixes

      • Fixed a bug where some or all Derivation cases outside the pureconfig package were not showing the full error description.
  • v0.8.0 Changes

    August 27, 2017
    • ๐Ÿ†• New features

      • loadConfig methods now allow loading any type from a config when using a namespace, and not only types represented by config objects;
      • ConfigFieldMapping now has a withOverrides method that allows users to easily define exceptional cases to an existing mapping;
      • ConfigReader and ConfigWriter for java.math.BigDecimal and java.math.BigInteger;
      • ConfigReader for Booleans allows reading them from "yes", "no", "on" and "off" strings;
      • ConfigReader and ConfigWriter for shapeless.HList;
      • ConfigReader for Scala tuples can now read from ConfigListss;
      • Added an experimental way to debug when a converter fails to be derived because an implicit is not found. See the documentation for more information on how to enable it.
    • ๐Ÿ’ฅ Breaking changes

      • ConfigWriter for tuples now writes them as ConfigLists, instead of a ConfigObject with keys _1, _2, and so on.
    • ๐Ÿ› Bug fixes

      • A breaking change introduced in v0.7.1 where loadConfigFromFiles stopped allowing missing files was reverted;
      • loadConfig methods no longer throw an exception when passed a namespace where one of the keys is not a config object;
      • The xmap of ConfigConvert and the map method of ConfigReader now wrap exceptions that the functions used to map might throw in a ConfigReaderFailure;
      • FieldCoproductHint now removes the disambiguating key from the config object before passing it to the reader of a coproduct option.
  • v0.7.2 Changes

    May 29, 2017
    • ๐Ÿ› Bug fixes
      • Fix value class ConfigReader and ConfigWriter derivation [#253].
  • v0.7.1 Changes

    May 28, 2017
    • ๐Ÿ†• New features
      • ConfigReader, ConfigWriter and ConfigConvert now have combinators such as map, flatMap and contramap, making them easier to compose;
      • New mechanism to read and write value classes. The readers and writers of the inner type are used instead of the ones for products;
      • New EnumCoproductHint for sealed families of case objects where objects are written and read as strings with their type names;
      • ConfigReader and ConfigWriter instances for Pattern and Regex;
      • ConfigReader and ConfigWriter instances for java.time.Duration;
      • ConfigReader and ConfigWriter for;
      • ConfigReader and ConfigWriter for arbitrary Java enums;
      • Improved error messages when a failure occurs reading a config;
    • ๐Ÿ› Bug fixes
      • Duration.Undefined is correctly handled when reading and writing configurations [#184];
      • loadConfig method now handles properly cases where a requested config file cannot be read and when a provided namespace doesn't exist.