3 2.6.0.0 (current development version)
4 * New solver flag: '--reject-unconstrained-dependencies'. (#2568)
6 2.4.0.0 Mikhail Glushenkov <mikhail.glushenkov@gmail.com> September 2018
7 * Bugfix: "cabal new-build --ghc-option '--bogus' --ghc-option '-O1'"
8 no longer ignores all arguments except the last one (#5512).
9 * Add the following option aliases for '-dir'-suffixed options:
10 'storedir', 'logsdir', 'packagedir', 'sourcedir', 'outputdir' (#5484).
11 * 'new-run' now allows the user to run scripts that use a special block
12 to define their requirements (as in the executable stanza) in place
13 of a target. This also allows the use of 'cabal' as an interpreter
15 * Add aliases for the "new-" commands that won't change when they
16 lose their prefix or are eventually replaced by a third UI
17 paradigm in the future. (#5429)
18 * 'outdated' now accepts '--project-file FILE', which will look for bounds
19 from the new-style freeze file named FILE.freeze. This is only
20 available when `--new-freeze-file` has been passed.
21 * 'new-repl' now accepts a '--build-depends' flag which accepts the
22 same syntax as is used in .cabal files to add additional dependencies
23 to the environment when developing in the REPL. It is now usable outside
24 of projects. (#5425, #5454)
25 * 'new-build' now treats Haddock errors non-fatally. In addition,
26 it attempts to avoid trying to generate Haddocks when there is
27 nothing to generate them from. (#5232, #5459)
28 * 'new-run', 'new-test', and 'new-bench' now will attempt to resolve
29 ambiguous selectors by filtering out selectors that would be invalid.
31 * 'new-install' now supports installing libraries and local
33 * Drop support for GHC 7.4, since it is out of our support window
34 (and has been for over a year!).
35 * 'new-update' now works outside of projects. (#5096)
36 * Extend `plan.json` with `pkg-src` provenance information. (#5487)
37 * Add 'new-sdist' command (#5389). Creates stable archives based on
38 cabal projects in '.zip' and '.tar.gz' formats.
39 * Add '--repl-options' flag to 'cabal repl' and 'cabal new-repl'
40 commands. Passes its arguments to the invoked repl, bypassing the
41 new-build's cached configurations. This assures they don't trigger
42 useless rebuilds and are always applied within the repl. (#4247, #5287)
43 * Add 'v1-' prefixes for the commands that will be replaced in the
44 new-build universe, in preparation for it becoming the default.
46 * 'outdated' accepts '--v1-freeze-file' and '--v2-freeze-file'
48 * Completed the 'new-clean' command (#5357). The functionality is
49 equivalent to old-style clean, but for nix-style builds.
50 * Ensure that each package selected for a build-depends dependency
51 contains a library (#5304).
52 * Support packages from local tarballs in the cabal.project file.
53 * Default changelog generated by 'cabal init' is now named
54 'CHANGELOG.md' (#5441).
55 * Align output of 'new-build' command phases (#4040).
57 2.2.0.0 Mikhail Glushenkov <mikhail.glushenkov@gmail.com> March 2018
58 * '--with-PROG' and '--PROG-options' are applied to all packages
59 and not local packages only (#5019).
60 * Completed the 'new-update' command (#4809), which respects nix-style
61 cabal.project(.local) files and allows to update from
62 multiple repositories when using overlays.
63 * Completed the 'new-run' command (#4477). The functionality is the
64 same of the old 'run' command but using nix-style builds.
65 Additionally, it can run executables across packages in a project.
66 Tests and benchmarks are also treated as executables, providing a
67 quick way to pass them arguments.
68 * Completed the 'new-bench' command (#3638). Same as above.
69 * Completed the 'new-exec' command (#3638). Same as above.
70 * Added a preliminary 'new-install' command (#4558, nonlocal exes
71 part) which allows to quickly install executables from Hackage.
72 * Set symlink-bindir (used by new-install) to .cabal/bin by default on
73 .cabal/config initialization (#5188).
74 * 'cabal update' now supports '--index-state' which can be used to
75 roll back the index to an earlier state.
76 * '--allow-{newer,older}' syntax has been enhanced. Dependency
77 relaxation can be now limited to a specific release of a package,
78 plus there's a new syntax for relaxing only caret-style (i.e. '^>=')
79 dependencies (#4575, #4669).
80 * New config file field: 'cxx-options' to specify which options to be
81 passed to the compiler when compiling C++ sources specified by the
82 'cxx-sources' field. (#3700)
83 * New config file field: 'cxx-sources' to specify C++ files to be
84 compiled separately from C source files. Useful in conjunction with the
85 'cxx-options' flag to pass different compiler options to C and C++
87 * Use [lfxtb] letters to differentiate component kind instead of
88 opaque "c" in dist-dir layout.
89 * 'cabal configure' now supports '--enable-static', which can be
90 used to build static libaries with GHC via GHC's `-staticlib`
92 * 'cabal user-config now supports '--augment' which can append
93 additional lines to a new or updated cabal config file.
94 * Added support for '--enable-tests' and '--enable-benchmarks' to
95 'cabal fetch' (#4948).
96 * Misspelled package-names on CLI will no longer be silently
97 case-corrected (#4778).
98 * 'cabal new-configure' now backs up the old 'cabal.project.local'
99 file if it exists (#4460).
100 * On macOS, `new-build` will now place dynamic libraries into
101 `store/lib` and aggressively shorten their names in an effort to
102 stay within the load command size limits of macOSs mach-o linker.
103 * 'new-build' now checks for the existence of executables for
104 build-tools and build-tool-depends dependencies in the solver
106 * Fixed a spurious warning telling the user to run 'cabal update'
107 when it wasn't necessary (#4444).
108 * Packages installed in sandboxes via 'add-source' now have
109 their timestamps updated correctly and so will not be reinstalled
110 unncecessarily if the main install command fails (#1375).
111 * Add Windows device path support for copyFile, renameFile. Allows cabal
112 new-build to use temporary store path of up to 32k length
113 (#3972, #4914, #4515).
114 * When a flag value is specified multiple times on the command
115 line, the last one is now preferred, so e.g. '-f+dev -f-dev' is
116 now equivalent to '-f-dev' (#4452).
117 * Removed support for building cabal-install with GHC < 7.10 (#4870).
118 * New 'package *' section in 'cabal.project' files that applies
119 options to all packages, not just those local to the project.
120 * Paths_ autogen modules now compile when `RebindableSyntax` or
121 `OverloadedStrings` is used in `default-extensions`.
122 [stack#3789](https://github.com/commercialhaskell/stack/issues/3789)
123 * getDataDir` and other `Paths_autogen` functions now work correctly
124 when compiling a custom `Setup.hs` script using `new-build` (#5164).
126 2.0.0.1 Mikhail Glushenkov <mikhail.glushenkov@gmail.com> December 2017
127 * Support for GHC's numeric -g debug levels (#4673).
128 * Demoted 'scope' field version check to a warning (#4714).
129 * Fixed verbosity flags getting removed before being passed to
131 * Added a '--store-dir' option that can be used to configure the
132 location of the build global build store (#4623).
133 * Turned `allow-{newer,older}` in `cabal.project` files into an
134 accumulating field to match CLI flag semantics (#4679).
135 * Improve success message when `cabal upload`ing documentation
137 * Documentation fixes.
139 2.0.0.0 Mikhail Glushenkov <mikhail.glushenkov@gmail.com> August 2017
140 * See http://coldwa.st/e/blog/2017-09-09-Cabal-2-0.html
141 for more detailed release notes.
142 * Removed the '--root-cmd' parameter of the 'install' command
144 * Deprecated 'cabal install --global' (#3356).
145 * Changed 'cabal upload' to upload a package candidate by default
146 (#3419). Same applies to uploading documentation.
147 * Added a new 'cabal upload' flag '--publish' for publishing a
148 package on Hackage instead of uploading a candidate (#3419).
149 * Added optional solver output visualisation support via the
150 tracetree package. Mainly intended for debugging (#3410).
151 * Removed the '--check' option from 'cabal upload'
152 (#1823). It was replaced by package candidates.
153 * Fixed various behaviour differences between network transports
155 * The bootstrap script now works correctly when run from a Git
157 * Removed the top-down solver (#3598).
158 * The '-v/--verbosity' option no longer affects GHC verbosity
159 (except in the case of '-v0'). Use '--ghc-options=-v' to enable
160 verbose GHC output (#3540, #3671).
161 * Changed the default logfile template from
162 '.../$pkgid.log' to '.../$compiler/$libname.log' (#3807).
163 * Added a new command, 'cabal reconfigure', which re-runs 'configure'
164 with the most recently used flags (#2214).
165 * Added the '--index-state' flag for requesting a specific
166 version of the package index (#3893, #4115).
167 * Support for building Backpack packages. See
168 https://github.com/ezyang/ghc-proposals/blob/backpack/proposals/0000-backpack.rst
170 * Support the Nix package manager (#3651).
171 * Made the 'template-haskell' package non-upgradable again (#4185).
172 * Fixed password echoing on MinTTY (#4128).
173 * Added a new solver flag, '--allow-boot-library-installs', that allows
174 any package to be installed or upgraded (#4209).
175 * New 'cabal-install' command: 'outdated', for listing outdated
176 version bounds in a .cabal file or a freeze file (#4207).
177 * Added qualified constraints for setup dependencies. For example,
178 --constraint="setup.bar == 1.0" constrains all setup dependencies on
179 bar, and --constraint="foo:setup.bar == 1.0" constrains foo's setup
180 dependency on bar (part of #3502).
181 * Non-qualified constraints, such as --constraint="bar == 1.0", now
182 only apply to top-level dependencies. They don't constrain setup or
183 build-tool dependencies. The new syntax --constraint="any.bar == 1.0"
184 constrains all uses of bar.
185 * Added a technical preview version of the 'cabal doctest' command
188 1.24.0.2 Mikhail Glushenkov <mikhail.glushenkov@gmail.com> December 2016
189 * Adapted to the revert of a PVP-noncompliant API change in
190 Cabal 1.24.2.0 (#4123).
191 * Bumped the directory upper bound to < 1.4 (#4158).
193 1.24.0.1 Ryan Thomas <ryan@ryant.org> October 2016
194 * Fixed issue with passing '--enable-profiling' when invoking
195 Setup scripts built with older versions of Cabal (#3873).
196 * Fixed various behaviour differences between network transports
198 * Updated to depend on the latest hackage-security that fixes
199 various issues on Windows.
200 * Fixed 'new-build' to exit with a non-zero exit code on failure
202 * Store secure repo index data as 01-index.* (#3862).
203 * Added new hackage-security root keys for distribution with
205 * Fix an issue where 'cabal install' sometimes had to be run twice
206 for packages with build-type: Custom and a custom-setup stanza
208 * 'cabal sdist' no longer ignores '--builddir' when the package's
209 build-type is Custom (#3794).
211 1.24.0.0 Ryan Thomas <ryan@ryant.org> March 2016
212 * If there are multiple remote repos, 'cabal update' now updates
213 them in parallel (#2503).
214 * New 'cabal upload' option '-P'/'--password-command' for reading
215 Hackage password from arbitrary program output (#2506).
216 * Better warning for 'cabal run' (#2510).
217 * 'cabal init' now warns if the chosen package name is already
218 registered in the source package index (#2436).
219 * New 'cabal install' option: '--offline' (#2578).
220 * Accept 'builddir' field in cabal.config (#2484)
221 * Read 'builddir' option from 'CABAL_BUILDDIR' environment variable.
222 * Remote repos may now be configured to use https URLs. This uses
223 either curl or wget or, on Windows, PowerShell, under the hood (#2687).
224 * Install target URLs can now use https e.g. 'cabal install
225 https://example.com/foo-1.0.tar.gz'.
226 * Automatically use https for cabal upload for the main
227 hackage.haskell.org (other repos will use whatever they are
229 * Support for dependencies of custom Setup.hs scripts
230 (see http://www.well-typed.com/blog/2015/07/cabal-setup-deps/).
231 * 'cabal' program itself now can be used as an external setup
232 method. This fixes an issue when Cabal version mismatch caused
233 unnecessary reconfigures (#2633).
234 * Improved error message for unsatisfiable package constraints
236 * Fixed a space leak in 'cabal update' (#2826).
237 * 'cabal exec' and 'sandbox hc-pkg' now use the configured
239 * New 'cabal haddock' option: '--for-hackage' (#2852).
240 * Added a warning when the solver cannot find a dependency (#2853).
241 * New 'cabal upload' option: '--doc': upload documentation to
243 * Improved error handling for 'sandbox delete-source' (#2943).
244 * Solver support for extension and language flavours (#2873).
245 * Support for secure repos using hackage-security (#2983).
246 * Added a log file message similar to one printed by 'make' when
247 building in another directory (#2642).
248 * Added new subcommand 'init' to 'cabal user-config'. This
249 subcommand creates a cabal configuration file in either the
250 default location or as specified by --config-file (#2553).
251 * The man page for 'cabal-install' is now automatically generated
253 * The '--allow-newer' option now works as expected when specified
254 multiple times (#2588).
255 * New config file field: 'extra-framework-dirs' (extra locations
256 to find OS X frameworks in). Can be also specified as an argument
257 for 'install' and 'configure' commands (#3158).
258 * It's now possible to limit the scope of '--allow-newer' to
259 single packages in the install plan (#2756).
260 * Full '--allow-newer' syntax is now supported in the config file
261 (that is, 'allow-newer: base, ghc-prim, some-package:vector')
263 * Improved performance of '--reorder-goals' (#3208).
264 * Fixed space leaks in modular solver (#2916, #2914).
265 * Made the solver aware of pkg-config constraints (#3023).
266 * Added a new command: 'gen-bounds' (#3223). See
267 http://softwaresimply.blogspot.se/2015/08/cabal-gen-bounds-easy-generation-of.html.
268 * Tech preview of new nix-style isolated project-based builds.
269 Currently provides the commands (new-)build/repl/configure.
271 1.22.9.0 Ryan Thomas <ryan@ryant.org> March 2016
272 * Include Cabal-1.22.8.0
274 1.22.8.0 Ryan Thomas <ryan@ryant.org> February 2016
275 * Only Custom setup scripts should be compiled with '-i -i.'.
276 * installedCabalVersion: Don't special-case Cabal anymore.
277 * Bump the HTTP upper bound. See #3069.
279 1.22.7.0 Ryan Thomas <ryan@ryant.org> December 2015
280 * Remove GZipUtils tests
281 * maybeDecompress: bail on all errors at the beginning of the
282 stream with zlib < 0.6
283 * Correct maybeDecompress
285 1.22.6.0 Ryan Thomas <ryan@ryant.org> June 2015
286 * A fix for @ezyang's fix for #2502. (Mikhail Glushenkov)
288 1.22.5.0 Ryan Thomas <ryan@ryant.org> June 2015
289 * Reduce temporary directory name length, fixes #2502. (Edward Z. Yang)
291 1.22.4.0 Ryan Thomas <ryan@ryant.org> May 2015
292 * Force cabal upload to always use digest auth and never basic auth.
293 * Add dependency-graph information to `printPlan` output
294 * bootstrap.sh: fixes linker matching to avoid cases where tested
295 linker names appear unexpectedly in compiler output (fixes #2542)
297 1.22.3.0 Ryan Thomas <ryan@ryant.org> April 2015
298 * Fix bash completion for sandbox subcommands - Fixes #2513
300 * filterConfigureFlags: filter more flags (Mikhail Glushenkov)
302 1.22.2.0 Ryan Thomas <ryan@ryant.org> March 2015
303 * Don't pass '--{en,dis}able-profiling' to old setup exes.
307 1.22.0.0 Johan Tibell <johan.tibell@gmail.com> January 2015
308 * New command: user-config (#2159).
309 * Implement 'cabal repl --only' (#2016).
310 * Fix an issue when 'cabal repl' was doing unnecessary compilation
312 * Prompt the user to specify source directory in 'cabal init'
314 * Remove the self-upgrade check (#2090).
315 * Don't redownload already downloaded packages when bootstrapping
317 * Support sandboxes in 'bootstrap.sh' (#2137).
318 * Install profiling and shared libs by default in 'bootstrap.sh'
321 1.20.2.0 Ryan Thomas <ryan@ryant.org> February 2016
322 * Only Custom setup scripts should be compiled with '-i -i.'.
323 * installedCabalVersion: Don't special-case Cabal anymore.
325 1.20.1.0 Ryan Thomas <ryan@ryant.org> May 2015
326 * Force cabal upload to always use digest auth and never basic auth.
327 * bootstrap.sh: install network-uri before HTTP
329 1.20.0.5 Johan Tibell <johan.tibell@gmail.com> December 2014
330 * Support random 1.1.
331 * Fix bootstrap script after network package split.
332 * Support network-2.6 in test suite.
334 1.20.0.3 Johan Tibell <johan.tibell@gmail.com> June 2014
335 * Don't attempt to rename dist if it is already named correctly
336 * Treat all flags of a package as interdependent.
337 * Allow template-haskell to be upgradable again
339 1.20.0.2 Johan Tibell <johan.tibell@gmail.com> May 2014
340 * Increase max-backjumps to 2000.
341 * Fix solver bug which led to missed install plans.
342 * Fix streaming test output.
343 * Tweak solver heuristics to avoid reinstalls.
345 1.20.0.1 Johan Tibell <johan.tibell@gmail.com> May 2014
346 * Fix cabal repl search path bug on Windows
347 * Include OS and arch in cabal-install user agent
348 * Revert --constraint flag behavior in configure to 1.18 behavior
350 1.20.0.0 Johan Tibell <johan.tibell@gmail.com> April 2014
351 * Build only selected executables
352 * Add -j flag to build/test/bench/run
353 * Improve install log file
354 * Don't symlink executables when in a sandbox
355 * Add --package-db flag to 'list' and 'info'
356 * Make upload more efficient
357 * Add --require-sandbox option
358 * Add experimental Cabal file format command
359 * Add haddock section to config file
360 * Add --main-is flag to init
362 1.18.2.0 Ryan Thomas <ryan@ryant.org> February 2016
363 * Only Custom setup scripts should be compiled with '-i -i.'.
364 * installedCabalVersion: Don't special-case Cabal anymore.
366 1.18.1.0 Ryan Thomas <ryan@ryant.org> May 2015
367 * Force cabal upload to always use digest auth and never basic auth.
368 * Merge pull request #2367 from juhp/patch-2
369 * Fix bootstrap.sh by bumping HTTP to 4000.2.16.1
371 1.18.0.7 Johan Tibell <johan.tibell@gmail.com> December 2014
372 * Support random 1.1.
373 * Fix bootstrap script after network package split.
374 * Support network-2.6 in test suite.
376 1.18.0.5 Johan Tibell <johan.tibell@gmail.com> July 2014
377 * Make solver flag resolution more conservative.
379 1.18.0.4 Johan Tibell <johan.tibell@gmail.com> May 2014
380 * Increase max-backjumps to 2000.
381 * Fix solver bug which led to missed install plans.
382 * Tweak solver heuristics to avoid reinstalls.
384 0.14.0 Andres Loeh <andres@well-typed.com> April 2012
386 * Completely new modular dependency solver (default in most cases)
387 * Some tweaks to old topdown dependency solver
388 * Install plans are now checked for reinstalls that break packages
389 * Flags --constraint and --preference work for nonexisting packages
390 * New constraint forms for source and installed packages
391 * New constraint form for package-specific use flags
392 * New constraint form for package-specific stanza flags
393 * Test suite dependencies are pulled in on demand
394 * No longer install packages on --enable-tests when tests fail
395 * New "cabal bench" command
396 * Various "cabal init" tweaks
398 0.10.0 Duncan Coutts <duncan@community.haskell.org> February 2011
399 * New package targets: local dirs, local and remote tarballs
400 * Initial support for a "world" package target
401 * Partial fix for situation where user packages mask global ones
402 * Removed cabal upgrade, new --upgrade-dependencies flag
403 * New cabal install --only-dependencies flag
404 * New cabal fetch --no-dependencies and --dry-run flags
405 * Improved output for cabal info
406 * Simpler and faster bash command line completion
407 * Fix for broken proxies that decompress wrongly
408 * Fix for cabal unpack to preserve executable permissions
409 * Adjusted the output for the -v verbosity level in a few places
411 0.8.2 Duncan Coutts <duncan@community.haskell.org> March 2010
412 * Fix for cabal update on Windows
413 * On windows switch to per-user installs (rather than global)
414 * Handle intra-package dependencies in dependency planning
415 * Minor tweaks to cabal init feature
416 * Fix various -Wall warnings
417 * Fix for cabal sdist --snapshot
419 0.8.0 Duncan Coutts <duncan@haskell.org> Dec 2009
420 * Works with ghc-6.12
421 * New "cabal init" command for making initial project .cabal file
422 * New feature to maintain an index of haddock documentation
424 0.6.4 Duncan Coutts <duncan@haskell.org> Nov 2009
425 * Improve the algorithm for selecting the base package version
426 * Hackage errors now reported by "cabal upload [--check]"
427 * Improved format of messages from "cabal check"
428 * Config file can now be selected by an env var
429 * Updated tar reading/writing code
430 * Improve instructions in the README and bootstrap output
431 * Fix bootstrap.sh on Solaris 9
432 * Fix bootstrap for systems where network uses parsec 3
433 * Fix building with ghc-6.6
435 0.6.2 Duncan Coutts <duncan@haskell.org> Feb 2009
436 * The upgrade command has been disabled in this release
437 * The configure and install commands now have consistent behaviour
438 * Reduce the tendancy to re-install already existing packages
439 * The --constraint= flag now works for the install command
440 * New --preference= flag for soft constraints / version preferences
441 * Improved bootstrap.sh script, smarter and better error checking
442 * New cabal info command to display detailed info on packages
443 * New cabal unpack command to download and untar a package
444 * HTTP-4000 package required, should fix bugs with http proxies
445 * Now works with authenticated proxies.
446 * On Windows can now override the proxy setting using an env var
447 * Fix compatibility with config files generated by older versions
448 * Warn if the hackage package list is very old
449 * More helpful --help output, mention config file and examples
450 * Better documentation in ~/.cabal/config file
451 * Improved command line interface for logging and build reporting
452 * Minor improvements to some messages
454 0.6.0 Duncan Coutts <duncan@haskell.org> Oct 2008
455 * Constraint solver can now cope with base 3 and base 4
456 * Allow use of package version preferences from hackage index
457 * More detailed output from cabal install --dry-run -v
458 * Improved bootstrap.sh
460 0.5.2 Duncan Coutts <duncan@haskell.org> Aug 2008
461 * Suport building haddock documentaion
462 * Self-reinstall now works on Windows
463 * Allow adding symlinks to excutables into a separate bindir
464 * New self-documenting config file
465 * New install --reinstall flag
466 * More helpful status messages in a couple places
467 * Upload failures now report full text error message from the server
468 * Support for local package repositories
469 * New build logging and reporting
470 * New command to upload build reports to (a compatible) server
471 * Allow tilde in hackage server URIs
472 * Internal code improvements
473 * Many other minor improvements and bug fixes
475 0.5.1 Duncan Coutts <duncan@haskell.org> June 2008
476 * Restore minimal hugs support in dependency resolver
477 * Fix for disabled http proxies on Windows
478 * Revert to global installs on Windows by default
480 0.5.0 Duncan Coutts <duncan@haskell.org> June 2008
481 * New package dependency resolver, solving diamond dep problem
482 * Integrate cabal-setup functionality
483 * Integrate cabal-upload functionality
484 * New cabal update and check commands
485 * Improved behavior for install and upgrade commands
486 * Full Windows support
487 * New command line handling
488 * Bash command line completion
489 * Allow case insensitive package names on command line
490 * New --dry-run flag for install, upgrade and fetch commands
491 * New --root-cmd flag to allow installing as root
492 * New --cabal-lib-version flag to select different Cabal lib versions
493 * Support for HTTP proxies
494 * Improved cabal list output
495 * Build other non-dependent packages even when some fail
496 * Report a summary of all build failures at the end
497 * Partial support for hugs
498 * Partial implementation of build reporting and logging
499 * More consistent logging and verbosity
500 * Significant internal code restructuring
502 0.4 Duncan Coutts <duncan@haskell.org> Oct 2007
503 * Renamed executable from 'cabal-install' to 'cabal'
504 * Partial Windows compatibility
505 * Do per-user installs by default
506 * cabal install now installs the package in the current directory
507 * Allow multiple remote servers
508 * Use zlib lib and internal tar code and rather than external tar
509 * Reorganised configuration files
510 * Significant code restructuring
511 * Cope with packages with conditional dependencies
513 0.3 and older versions by Lemmih, Paolo Martini and others 2006-2007
514 * Switch from smart-server, dumb-client model to the reverse
515 * New .tar.gz based index format
516 * New remote and local package archive format