polysemy/ChangeLog.md
2019-08-15 22:26:57 -07:00

6.8 KiB

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)
  • LastMember has been removed. withLowerToIO and all interpreters that make use of it now only requires Member (Embed IO) r (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 modify', a strict variant of modify (thanks to @KingoftheHomeless)
  • Added right-associative variants of runOutputMonoid and runWriter (thanks to @KingoftheHomeless)
  • Added runOutputMonoidIORef and runOutputMonoidTVar (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