Changelog for toolshed-0.15.0.1
2010-11-18 Dr. Alistair Ward <toolshed at functionalley dot eu>
0.9.0.0
* First version of the package.
0.10.0.0
* Created "src/ToolShed/" sub-directory & then modified module-names accordingly.
* Removed the module "Pair", & relocated its only function to the sole caller in the package "Bridge".
* Added a makefile.
* Qualified identifiers used in error-messages.
0.10.0.1
* Tested with ghc-7.0.1, & conditionally replaced use of the package 'parallel' with 'deepseq', in the module "TimePure".
0.10.1.0
* Added 'ToolShed.Arithmetic.nCr', "ToolShed.Options" & "ToolShed.Package".
0.10.2.0
* Renamed package from 'ToolShed' to 'toolshed', for compatibility with Debian's ".deb"-format.
0.11.0.0
* Added manually controlled "llvm" flag to "toolshed.cabal".
* Removed the module "ToolShed.Package", for which 'Distribution.Package.PackageIdentifier' is a suitable alternative.
* Added 'NOINLINE' pragma to each function in module "Unsafe".
* Relocated 'mean' & 'nCr' from "ToolShed.Arithmetic", to the package "factory".
* Added function 'ListPlus.groupComparing'.
* Changed identifier for type-parameters, to better reflect its role.
* Relocated the remaining rather pointless functions from the module "ToolShed.Arithmetic" & deleted it.
* Added module "ToolShed.Defaultable", & derived class 'ToolShed.Options.Options' from it.
0.11.1.0
* Added functions 'merge' & 'mergeBy' to module "ToolShed.ListPlus" & exported a new type-synonym 'ToolShed.ListPlus.ChunkLength'.
* Uploaded to <http://hackage.haskell.org/packages/hackage.html>.
0.12.0.0
* Added modules "ToolShed.TimeAction" to measure the CPU-seconds required for an IO-action, & "Pair".
0.12.0.1
* Removed unnecessary type-context 'Ord' from 'ToolShed.ListPus.mergeBy' & reimplemented 'ToolShed.ListPus.merge' in terms of 'ToolShed.ListPus.mergeBy'.
* Added 'ToolShed.ListPlus.runLengthEncode' & 'ToolShed.ListPlus.runLengthDecode'.
0.13.0.0
* Removed module "ToolShed.Unsafe".
* Renamed:
"ToolShed.ListPlus" to "ToolShed.Data.List"
"ToolShed.Pair" to "ToolShed.Data.Pair"
"ToolShed.TimeAction" to "ToolShed.System.TimeAction"
"ToolShed.TimePure" to "ToolShed.System.TimePure"
* Migrated 'ToolShed.Data.List.RunLengthCode' & associated functions, into a new module "ToolShed.Data.List.Runlength".
* Migrated 'ToolShed.Data.List.Splits' & associated functions, into a new module "ToolShed.Data.List.Splits".
* Replaced function 'ToolShed.Data.List.groupComparing' with the more useful 'ToolShed.Data.List.equalityBy', which can be used with either 'Data.List.groupBy' or 'Data.List.nubBy'.
* Added instances of 'ToolShed.SelfValidate.SelfValidator' for 'Data.Maybe.Maybe' '(,)', 'Data.Set.Set', 'Data.Map.Map' & 'Data.Array.IArray.Array'.
* Added instance of 'ToolShed.Defaultable.Defaultable' for '(,)'.
* Added functions 'ToolShed.Data.List.showListWith', 'ToolShed.Data.List.permutations', 'ToolShed.Data.List.gatherBy', 'ToolShed.Data.List.findConvergenceBy', 'ToolShed.Data.List.findConvergence', 'ToolShed.Data.List.gather'.
* Added modules "ToolShed.System.File" & "ToolShed.System.Random".
* Added method 'ToolShed.SelfValidate.getErrors', & supporting functions 'ToolShed.SelfValidate.getFirstErrors' & 'ToolShed.SelfValidate.extractErrors'.
* Create module "ToolShed.Arbitrary.*".
* Added "Main", "ToolShed.Test.QuickChecks" & "ToolShed.Test.Data.List" to facilitate testing.
* Removed 'ToolShed.Data.Pair.both'.
* Replaced "System" with "System.Environment" & "System.Exit".
* Removed dependency on "haskell98".
0.14.0.0
* Defined package's name using program's name, in "Main.hs".
* Checked package "Base" exports 'Data.Tuple.swap', in "ToolShed.Arbitrary.Array".
* Relocated "ToolShed.Arbitrary" to "ToolShed.Test.QuickCheck.Arbitrary".
* Added "ToolShed.Test.ReversibleBoundedEnum", "ToolShed.Test.ReversibleEnum", "ToolShed.Test.ReversibleIO", & "ToolShed.Test.SelfValidate".
* Amended 'ToolShed.System.File.locate' to deal with absolute file-paths.
* Replaced legacy calls to 'Data.Map.fold' & 'Data.Set.fold', with more expicit calls to 'Data.Map.foldr' & 'Data.Set.foldr' from a more recent version of the "containers" package.
* Added instance of 'ToolShed.SelfValidate.SelfValidator' for '(,,)'.
* Trapped null list in 'ToolShed.System.Random.select'.
* Added functions "ToolShed.Data.List.nub'" & 'ToolShed.Data.List.hasDuplicates'.
* Migrated functions 'gather', 'gatherBy', 'hasDuplicates' which merely operate on 'Data.Foldable.Foldable' types from module "ToolShed.Data.List", into new module "ToolShed.Data.Foldable".
0.15.0.0
* Refactored 'ToolShed.Test.QuickChecks'.
* Added type 'ToolShed.Data.List.Matches' & function 'ToolShed.Data.List.permutationsBy'.
* Trapped the case of a null list supplied to 'ToolShed.Data.List.permutationsBy'.
* Re-implemented 'ToolShed.System.Random.shuffle', using the Fisher-Yates algorithm; which also improved the efficiency.
* Trapped special cases in 'ToolShed.System.Random.generateSelection'.
* Added modules "ToolShed.Test.System.Random", "ToolShed.Data.Triple", "ToolShed.Data.Quadruple", "ToolShed.Test.Data.Triple", & "ToolShed.Test.Data.Quadruple".
* Explicitly closed standard-input in the executable.
* Replaced calls to 'error' from inside the IO-monad, with 'Control.Monad.fail'.
* Added an instance for '(,,)', to "ToolShed.Defaultable.Defaultable".
* Corrected version-string in "Main" used in '--version' option.
* Corrected the output of 'Main.main.optDescrList.printVersion'.
0.15.0.1
* Tested with 'haskell-platform-2013.2.0.0'.
* Replaced preprocessor-directives with 'build-depends' constraints in 'toolshed.cabal'.
* In module "ToolShed.System.File", replaced 'Control.Exception.throw' with 'Control.Exception.throwIO'.
* Replaced all instances of '(<$>)' with 'fmap' to avoid ambiguity between "Control.Applicative" & "Prelude" which (from 'base-4.8') also exports this symbol.