Usage:
packdiff diff <package-name> <rev1> <package-name> <rev2>
---------------------------------
API Annotations
---------------------------------
[A] : Added
[R] : Removed
[C] : Changed
[O] : Old definition
[N] : New definition
[D] : Deprecated
---------------------------------
API diff
---------------------------------
[C] Streamly.Data.Stream.Prelude
[A] useAcquire :: AcquireIO -> Config -> Config
[D] parEval :: MonadAsync m => (Config -> Config) -> Stream m a -> Stream m a
[C] Streamly.Data.Fold.Prelude
[C] toHashMapIO
[O] toHashMapIO :: (MonadIO m, Hashable k, Ord k) => (a -> k) -> Fold m a b -> Fold m a (HashMap k b)
[N] toHashMapIO :: (MonadIO m, Hashable k) => (a -> k) -> Fold m a b -> Fold m a (HashMap k b)
For CI integration check out packdiff github CI in the streamly repo: https://github.com/composewell/streamly.
Packdiff uses the hoogle file created by haddock to generate and compare the difference between multiple versions of a package
- The API for modules in the
other-modulessections is not generated or compared. - The re-exported module is just considered a re-exported module. The API of the re-exported module isn't merged with the module that re-exports it.
The 2nd limitation might end up falsely reporting a diff even if the diff does not exist. In our use-case where we have manual intervention this isn't a problem and does the job well.