Changelog of @hackage/squeeze 1.0.4.19

2010-11-18 Dr. Alistair Ward squeeze@functionalley.com

1.0.0.0

  • First version of the package.

1.0.0.1

  • Created sub-directory "src/Squeeze/" & then modified module-names accordingly.
  • Pacified hlint.
  • Added a makefile.

1.0.0.2

  • Tested with ghc-7.0.1.
  • Added .spec-file.

1.0.1.0

  • Improved the basic algorithm, by permitting the file-list to be bisected; each file-combination resulting from the LHS, is then concatenated with each of those resulting from the recursively bisected RHS.
  • Used module "Control.Parallel.Strategies" to parallelize the concatenation of each combination from the LH-list, with each of those from the RH-list.
  • Added default values of command-line flags, to usage-message.
  • Used new module "ToolShed.Package". (1.0.1.1)
  • Replaced Data.List.subsequences with a tailored version which terminates combinations when they've grown too large, providing a better and more predictable performance-gain than recursive list-bisection.
  • Reduced recursive list-bisection to a single bisection, for the sole purpose of facilitating parallelisation.
  • Added module "Squeeze.QC" to define Test.QuickCheck-tests and command-line option "--verbose", to govern level of output.
  • Partitioned into new modules; "Squeeze.File", "Squeeze.FileSizeBounds" and "Squeeze.FileCombination".

1.0.1.2

  • Fixed typo in CPP-statement in module "Squeeze.QC".
  • Fixed negated reference to unparenthesised CPP-macro "MIN_VERSION".
  • Protected reference in module "Main", to Test.QuickCheck.verboseCheck, using CPP-statement.

1.0.1.3

  • Amended .spec-file to define RPM-package, to install under directory "/usr", rather than "/usr/local".
  • Renamed package from "Squeeze" to "squeeze", for compatibility with Debian's .deb-format.
  • Added directory-structure required to build .deb-package.

1.0.1.4

  • Corrected command-line processing of the special file "-", which reads standard-input as requested, but disregarded any other command-line options.
  • Refined man-page to be an "extra-source-file" in the .cabal-file and the .spec-file.
  • Ported to compile against alternative integral definitions of Squeeze.File.FileSize.
  • Added manually controlled flag "llvm" to the .cabal-file.
  • Replaced references to the module "ToolShed.Package" with "Distribution.Package".
  • Reacted to the creation of module "ToolShed.Defaultable".
  • Uploaded to Hackage.

1.0.2.0

  • Reimplemented Squeeze.File.aggregateSize using foldr rather than foldl.
  • Removed use of Control.Parallel.Strategies from Squeeze.Squeeze, which ruined performance on one core and had no obvious benefit on two.
  • Changed the definition of Squeeze.FileCombinations.FileCombinations from a Pair to a record-style data-type with selective strictness-annotation.
  • Renamed Squeeze.FileCombination.concatenate to (Squeeze.FileCombination.<+>) and Squeeze.FileCombination.prepend to (Squeeze.FileCombination.+>).
  • Used new module "ToolShed.TimeAction", to permit measurement of the CPU-time required to find the best fit.
  • Added the number, mean file-size and standard-deviation, to the output, when flag "--verbose" is specified; and as a side-effect, created a dependency on the package "factory".
  • Replaced module "Squeeze.FileSizeBounds" with Factory.Data.Interval, requiring use of toolshed-0.12.0.0.
  • Made the data-type CommandOptions.CommandOptions polymorphic in terms of the ratio-type fields.
  • Inserted new layers Data and Test into the module-hierarchy, and relocated existing modules accordingly.
  • Added module "Squeeze.Test.Performance" to test with randomly generated virtual files.

1.0.2.1

  • Added check for zero file-names when reading from stdin.
  • Corrected the syntax required when specifying ratios, in the man-page.

1.0.2.2

  • Renamed Squeeze.Data.File.order to Squeeze.Data.File.orderBySize.
  • Used Paths_squeeze.version in Main, rather than hard-coding it.
  • Added Squeeze.Data.CommandOptions.getErrors to permit better error-diagnosis.
  • Reacted to new module-hierarchy and addition of method ToolShed.SelfValidate.getErrors, in toolshed-0.13.0.0.
  • Replaced use of Control.Exception.bracket with System.IO.withFile, in Squeeze.Data.File.findSize.
  • Replaced System with System.Environment and System.Exit.
  • Removed dependency on haskell98.

1.0.2.3

  • Added class Show to context for Squeeze.Test.Performance.run, for migration to ghc-7.4.1.

1.0.2.4

  • Added details to any failure to parse the command-line arguments.
  • Defined package's name using program's name & enhanced usage-message, in Main.hs.
  • Re-implemented logging using Control.Monad.Writer.Writer & renamed Squeeze.Squeeze.findBestFitM to Squeeze.Squeeze.findBestFitWriter.
  • Implemented verbose functionality in Squeeze.Test.Performance.
  • Added command-line flag "includeEmpty", to allow one to include empty files & directories in any solution.

1.0.3.0

  • Changed Main to replace calls to error from inside the IO-monad, with Control.Monad.fail.
  • Changed Main; by adding a command-line option to define the seed for the random-generator used for performance-testing; to permit includeEmpty to take an optional Boolean argument, rather than a mandatory one; to read Squeeze.Data.CommandOptions.getMinimumUsageRatio as a Double, rather than a Rational.
  • Renamed the accessors in Squeeze.Data.CommandOptions, & removed bisectionRatio & associated code.
  • Added Squeeze.Control.Concurrent.DivideAndConquer, called from Main to utilise multiple CPU-cores where available.
  • Trapped command-line arguments to which garbage has been appended.
  • Changed Data.CommandOptions to use Distribution.Verbosity.Verbosity.

1.0.4.0

  • Corrected the Copyright-statement in Main.main.optDescrList.printVersion.
  • Renamed Squeeze.Test.QC to Squeeze.Test.QuickChecks; migrating its tests to a new module "Squeeze.Test.Squeeze", & added new tests prop_monotonicFileSize & prop_uniqueFileNames, requiring package "toolshed-0.14.0.0"; added module "Squeeze.Test.Data.FileCombinations".
  • Amended the log-messages printed by Main.
  • Removed the command-line option "graphPerformance", which printed only CPU-seconds rather than elapsed time, & therefore didn't correctly represent the multi-threaded implementation.
  • Removed the printing of CPU-seconds when not testing performance; this is better left to /usr/bin/time.
  • Compensated for the potential rejection of some virtual files after generation of a test-population.
  • Used new class Factory.Math.Probability.Distribution & bumped required version to factory-0.2.1.0.
  • Replaced the command-line option "--testPerformance", with "--testPerformanceContinuous" & "--testPerformanceDiscrete".

1.0.4.1

  • Removed ToolShed.SelfValidate.isValid commandOptions from Main.runQuickChecks; since the command-options aren't used.
  • Added file "changelog.Debian" to the .cabal-file.
  • Relocated Main.distribute to Squeeze.Squeeze.distributeAndFindBestFit & added check on whether maximum size has been exceeded.
  • Added Squeeze.Squeeze.partitionEmptyFilesAndDistributeAndFindBestFit, to efficiently account for empty files, & relocated calculation of file-statistics to this function.
  • Amended Test.Performance.run, replacing call to Squeeze.Squeeze.findBestFit with Squeeze.Squeeze.distributeAndFindBestFit, to permit multi-threaded performance-tests.
  • Added function Squeeze.Data.CommandOptions.mkCommandOptions & modules Squeeze.Test.Data.Verbosity & Squeeze.Test.Data.CommandOptions for future QuickChecks.
  • Extracted Squeeze.Data.File.expandDirectory from Squeeze.Data.File.findSize to clarify the logic. Symlinks are also now permissible input files.
  • Added Squeeze.Data.File.findDuplicates, & trapped duplicate files implicit within those directories specified.

1.0.4.2

  • Improved the syntax of verbosity in the usage-message.
  • Tested with haskell-platform-2013.2.0.0.
  • Added a function Data.CommandOptions.subtractFile to adjust Data.CommandOptions.CommandOptions after removing a file from the problem; previously done incorrectly, causing an error when running with options "+RTS -N2".

1.0.4.3

  • Changed the value of 0/0 to 0 rather than 1 in Data.CommandOptions.subtractFile.

1.0.4.4

  • Either replaced instances of (<$>) with fmap to avoid ambiguity between modules "Control.Applicative" & "Prelude" which (from package "base-4.8") also exports this symbol, or hid the symbol when importing the module "Prelude".
  • In module "Main", redirected version-message to stderr.

1.0.4.5

  • Added the compiler to the output returned for the command-line option "version".
  • Specified compiler-option "context-stack" in module "Main", to account for call to printf.

1.0.4.6

  • Minimised the explicit size of compiler's 'context-stack' in module "Main".
  • In module "Squeeze.Data.File.hs", replaced the use of the package "unix" with the package "directory", for compatibility with Windows.

1.0.4.7

  • Increased the specified value of compiler-option "context-stack" in module "Main", to account for call to printf.

1.0.4.8

  • Changed flag "threaded" in the .cabal-file to manual.
  • Added "Default-language"-specification to the .cabal-file.
  • Added file "README.markdown".
  • Converted this file to markdown-format.
  • Replaced System.Exit.exitWith System.Exit.ExitSuccess with System.Exit.exitSuccess.
  • Moved the entry-point to the test-suite from module Main to module Test, both to integrate with cabal & to minimise the dependencies of the executable.
  • Partitioned the source-files into directories "src-lib", "src-exe", & "src-test", & referenced them individually from the .cabal-file to avoid repeated compilation.
  • Used CPP to control the import of symbols from Control.Applicative.
  • Changed default minimumUsageRatio in module "Squeeze.Data.CommandOptions" from 99% to 90%.

1.0.4.9

  • Amended the help-message for options "testPerformanceContinuous" & "testPerformanceDiscrete".
  • Corrected the markdown-syntax in this file.
  • Reverted to calling "error" rather than "Control.Monad.fail", since the String-argument for the latter is discarded in Monad-implementations other than IO.
  • Uploaded to GitHub.
  • Simplified file src-test/Main.hs.
  • Added file .travis.yml to control testing by https://docs.travis-ci.com.
  • Added file .ghci.
  • Replaced use of module ToolShed.Defaultable with Data.Default.
  • Tested with ghc-8.0.1.

1.0.4.10

  • Amended pre-processor directive MIN_TOOL_VERSION_ghc in Main.hs.

1.0.4.11

  • Checked pre-processor directives are defined.

1.0.4.12

  • Re-factored pre-processor directive in Main.hs.

1.0.4.13

  • Performance-improvements.
  • Added default RTS-options to squeeze.cabal.
  • Replaced 'Data.List.genericLength' with the more efficient @fromIntegral . length@.
  • Removed dependency on Distribution.Package.PackageName

1.0.4.16

1.0.4.17

Changed references to author's domain-name.

1.0.4.18

Updated list of test-compilers.

1.0.4.19

Replaced module Distribution.Verbosity with Squeeze.Data.Verbosity.