Changelog for squeeze-1.0.4.18
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
usingfoldr
rather thanfoldl
. - 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 aPair
to a record-style data-type with selective strictness-annotation. - Renamed
Squeeze.FileCombination.concatenate
to(Squeeze.FileCombination.<+>)
andSqueeze.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
toSqueeze.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
withSystem.IO.withFile
, inSqueeze.Data.File.findSize
. - Replaced
System
withSystem.Environment
andSystem.Exit
. - Removed dependency on haskell98.
1.0.2.3
- Added class
Show
to context forSqueeze.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
& renamedSqueeze.Squeeze.findBestFitM
toSqueeze.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, withControl.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 aDouble
, rather than aRational
. - 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
fromMain.runQuickChecks
; since the command-options aren't used. - Added file "changelog.Debian" to the .cabal-file.
- Relocated
Main.distribute
toSqueeze.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 toSqueeze.Squeeze.findBestFit
withSqueeze.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
fromSqueeze.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 adjustData.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 inData.CommandOptions.subtractFile
.
1.0.4.4
- Either replaced instances of
(<$>)
withfmap
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
withSystem.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.