# Changelog for polysemy ## 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