cauldron-0.6.0.0: CHANGELOG.md
# Revision history for cauldron
## 0.6.0.0
* Remove sop-core dependency, incorporate just the needed functionality into the library.
Also make the internals of the library less dependent on n-ary tuples. Now
they are more of an added layer for convenience.
* The `cook` family of functions don't return a `DependencyGraph` anymore. Instead, the
graph can be obtained at any moment using `getDependencyGraph`, even for non-wireable `Cauldron`s.
* `BoiledBeans` is now just `Beans` and has its own module.
* A new `Cauldron.Args` module which defines the `Args` applicative.
* The way of creating `Constructor`s has been overhauled.
`Packer` and `pack` are gone, along with `value`, `eff` and similar functions. The old `Regs` type is gone.
To create `Constructor`s, now we should use `val` and `eff` along with `wire`.
* The `Bean` record is now called `Recipe`. There's also a `SomeRecipe` that hides the bean type parameter.
* New `ToRecipe` typeclass that helps treating single `Constructor`s as recipes-without-decos.
* The `Decos` type is now just a `Seq` of constructors of the same type.
* New `allowDepCycles` `Fire`.
* Now `DependencyGraph` renders all the dependencies, even those that are ignored during plan construction to allow for dependency cycles.
* New `Monoid` instance for `DependencyGraph`.
* `BadBeans` is now `RecipeError`. It has now an `Exception` instance and a pretty function.
* `exportToDot` is now `writeAsDot` and accepts a `RecipeError` to highlight problematic nodes.
* Now `Constructor`s and `Recipe`s keep track of the `CallStack` of when they were created. This is used
by errors to print the relevant code locations.
Because now we have code locations, `PathToCauldron` is no longer useful and has been removed.
## 0.4.0.0
* `exportToDot` takes a new parameter to configure how to print the steps. Before, only the TyCon was printed. Now, the full type is printed by default.
## 0.3.1.0
* Now the `MissingDependencies` only includes keys with actual missing dependencies.
## 0.3.0.0
* Add `cookNonEmpty` and `cookTree` for cooking hierarchies of 'Cauldron's.
* Rename `addLast` to `addOuter` and `addFirst` to `addInner`.
* Add a copy of the `Managed` type from ["managed"](https://hackage.haskell.org/package/managed).
* Change the nomenclature of the `pack-` related functions.
* Add the `Packer` type.
* Add `Fire` type to customize the handling of dependency cycles.
## 0.2.0.0
* Decorators are no longer `Endo`s. They just take the decorated entity as a
regular parameter.
* Remove the applicative wrappers.
* Allow effectful constructors.
## 0.1.0.0 -- YYYY-mm-dd
* First version. Released on an unsuspecting world.