polysemy-1.1.0.0: ChangeLog.md
# Changelog for polysemy
## 1.1.0.0 (2019-08-15)
### Breaking Changes
- `MonadFail` is now implemented in terms of `Fail`, instead of `NonDet`(thanks to @KingoftheHomeless)
- `State` and `Writer` now have better strictness semantics
### Other Changes
- Added `AtomicState` effect (thanks to @KingoftheHomeless)
- Added `Fail` effect (thanks to @KingoftheHomeless)
- Added `runOutputSem` (thanks to @cnr)
- Added right-associative variants of `runOutputMonoid` and `runWriter` (thanks to @KingoftheHomeless)
- Improved `Fixpoint` so it won't always diverge (thanks to @KingoftheHomeless)
- `makeSem` will now complain if `DataKinds` isn't enabled (thanks to @pepegar)
## 1.0.0.0 (2019-07-24)
### Breaking Changes
- Renamed `Lift` to `Embed` (thanks to @googleson78)
- Renamed `runAsyncInIO` to `lowerAsync`
- Renamed `runAsync` to `asyncToIO`
- Renamed `runBatchOutput` to `runOutputBatched`
- Renamed `runConstInput` to `runInputConst`
- Renamed `runEmbed` to `runEmbedded` (thanks to @googleson78)
- Renamed `runEmbedded` to `lowerEmbedded`
- Renamed `runErrorAsAnother` to `mapError`
- Renamed `runErrorInIO` to `lowerError`
- Renamed `runFoldMapOutput` to `runOutputMonoid`
- Renamed `runIO` to `embedToMonadIO`
- Renamed `runIgnoringOutput` to `ignoreOutput`
- Renamed `runIgnoringTrace` to `ignoreTrace`
- Renamed `runInputAsReader` to `inputToReader`
- Renamed `runListInput` to `runInputList`
- Renamed `runMonadicInput` to `runInputSem`
- Renamed `runOutputAsList` to `runOutputList`
- Renamed `runOutputAsTrace` to `outputToTrace`
- Renamed `runOutputAsWriter` to `outputToWriter`
- Renamed `runResourceBase` to `resourceToIO`
- Renamed `runResourceInIO` to `lowerResource`
- Renamed `runStateInIORef` to `runStateIORef`
- Renamed `runTraceAsList` to `runTraceList`
- Renamed `runTraceAsOutput` to `traceToOutput`
- Renamed `runTraceIO` to `traceToIO`
- Renamed `sendM` to `embed` (thanks to @googleson78)
- The `NonDet` effect is now higher-order (thanks to @KingoftheHomeless)
### Other Changes
- Added `evalState` and `evalLazyState`
- Added `runNonDetMaybe` (thanks to @KingoftheHomeless)
- Added `nonDetToError` (thanks to @KingoftheHomeless)
- Haddock documentation for smart constructors generated via `makeSem` will no
longer have weird variable names (thanks to @TheMatten)
## 0.7.0.0 (2019-07-08)
### Breaking Changes
- Added a `Pass` constructor to `Writer` (thanks to @KingoftheHomeless)
- Fixed a bug in `runWriter` where the MTL semantics wouldn't be respected (thanks to @KingoftheHomeless)
- Removed the `Censor` constructor of `Writer` (thanks to @KingoftheHomeless)
- Renamed `Yo` to `Weaving`
- Changed the visible type applications for `asks`, `gets`, and `runErrorAsAnother`
### Other Changes
- Fixed haddock generation
## 0.6.0.0 (2019-07-04)
### Breaking Changes
- Changed the type of `runBatchOutput` to be more useful (thanks to @Infinisil)
### Other Changes
- **THE ERROR MESSAGES ARE SO MUCH BETTER** :party: :party: :party:
- Added `runEmbedded` to `Polysemy.IO`
- Added `runOutputAsList` to `Polysemy.Output` (thanks to @googleson78)
- Asymptotically improved the performance of `runTraceAsList` (thanks to
@googleson78)
## 0.5.1.0 (2019-06-28)
- New combinators for `Polysemy.Error`: `fromEither` and `fromEitherM`
## 0.5.0.1 (2019-06-27)
- Fixed a bug where `intercept` and `interceptH` wouldn't correctly handle
higher-order effects
## 0.5.0.0 (2019-06-26)
### Breaking Changes
- Removed the internal `Effect` machinery
### New Effects and Interpretations
- New effect; `Async`, for describing asynchronous computations
- New interpretation for `Resource`: `runResourceBase`, which can lower
`Resource` effects without giving a lowering natural transformation
- New interpretation for `Trace`: `runTraceAsList`
- New combinator: `withLowerToIO`, which is capable of transforming
`IO`-invariant functions as effects.
### Other Changes
- Lots of hard work on the package and CI infrastructure to make it green on
GHC 8.4.4 (thanks to @jkachmar)
- Changed the order of the types for `runMonadicInput` to be more helpful
(thanks to @tempname11)
- Improved the error machinery to be more selective about when it runs
- Factored out the TH into a common library for third-party consumers
## 0.4.0.0 (2019-06-12)
### Breaking Changes
- Renamed `runResource` to `runResourceInIO`
### Other Changes
- Added `runResource`, which runs a `Resource` purely
- Added `onException`, `finally` and `bracketOnError` to `Resource`
- Added a new function, `runResource` which performs bracketing for pure code
## 0.3.0.1 (2019-06-09)
- Fixed a type error in the benchmark caused by deprecation of `Semantic`
## 0.3.0.0 (2019-06-01)
### Breaking Changes
- Removed all deprecated names
- Moved `Random` effect to `polysemy-zoo`
### Other Changes
- `makeSem` can now be used to create term-level operators (thanks to
@TheMatten)
## 0.2.2.0 (2019-05-30)
- Added `getInspectorT` to the `Tactical` functions, which allows polysemy code
to be run in external callbacks
- A complete rewrite of `Polysemy.Internal.TH.Effect` (thanks to @TheMatten)
- Fixed a bug in the TH generation of effects where the splices could contain
usages of effects that were ambiguous
## 0.2.1.0 (2019-05-27)
- Fixed a bug in the `Alternative` instance for `Sem`, where it would choose the
*last* success instead of the first
- Added `MonadPlus` and `MonadFail` instances for `Sem`
## 0.2.0.0 (2019-05-23)
### Breaking Changes
- Lower precedence of `.@` and `.@@` to 8, from 9
### Other Changes
- Fixed a serious bug in `interpretH` and friends, where higher-order effects
would always be run with the current interpreter.
- Users need no longer require `inlineRecursiveCalls` --- the
`polysemy-plugin-0.2.0.0` will do it automatically when compiling with `-O`
- Deprecated `inlineRecursiveCalls`; slated for removal in the next version
## 0.1.2.1 (2019-05-18)
- Give explicit package bounds for dependencies
- Haddock improvements
- Remove `Typeable` machinery from `Polysemy.Internal.Union` (thanks to
@googleson78)
## 0.1.2.0 (2019-04-26)
- `runInputAsReader`, `runTraceAsOutput` and `runOutputAsWriter` have more
generalized types
- Added `runStateInIO`
- Added `runOutputAsTrace`
- Added `Members` (thanks to @TheMatten)
## 0.1.1.0 (2019-04-14)
- Added `runIO` interpretation (thanks to @adamConnerSax)
- Minor documentation fixes
## 0.1.0.0 (2019-04-11)
- Initial release
## Unreleased changes
- Changed the tyvars of `fromEitherM`, `runErrorAsAnother`, `runEmbedded`,
`asks` and `gets`