From 57f3b0432a23857ccde5da4a9ae75a1cfe84aa3e Mon Sep 17 00:00:00 2001 From: Oleg Grenrus Date: Mon, 13 Jul 2020 14:25:16 +0300 Subject: [PATCH 1/3] Add since 3.4.0.0 annotations --- Cabal/Distribution/Compat/DList.hs | 1 + Cabal/Distribution/Compat/NonEmptySet.hs | 1 + Cabal/Distribution/Simple/GHC.hs | 2 ++ Cabal/Distribution/Types/Dependency.hs | 2 ++ Cabal/Distribution/Types/Mixin.hs | 2 ++ Cabal/Distribution/Types/PackageVersionConstraint.hs | 3 ++- Cabal/Distribution/Types/SourceRepo.hs | 3 ++- Cabal/Distribution/Verbosity.hs | 6 ++++++ Cabal/Distribution/Verbosity/Internal.hs | 2 +- 9 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Cabal/Distribution/Compat/DList.hs b/Cabal/Distribution/Compat/DList.hs index a085840333d..d32642064da 100644 --- a/Cabal/Distribution/Compat/DList.hs +++ b/Cabal/Distribution/Compat/DList.hs @@ -32,6 +32,7 @@ runDList (DList run) = run [] singleton :: a -> DList a singleton a = DList (a:) +-- | @since 3.4.0.0 empty :: DList a empty = DList id diff --git a/Cabal/Distribution/Compat/NonEmptySet.hs b/Cabal/Distribution/Compat/NonEmptySet.hs index 09516d6256f..54a4ecef5f2 100644 --- a/Cabal/Distribution/Compat/NonEmptySet.hs +++ b/Cabal/Distribution/Compat/NonEmptySet.hs @@ -39,6 +39,7 @@ import Control.Applicative (empty) import Control.Monad (fail) #endif +-- | @since 3.4.0.0 newtype NonEmptySet a = NES (Set.Set a) deriving (Eq, Ord, Typeable, Data, Read) diff --git a/Cabal/Distribution/Simple/GHC.hs b/Cabal/Distribution/Simple/GHC.hs index 8927038dd2f..4db29453f93 100644 --- a/Cabal/Distribution/Simple/GHC.hs +++ b/Cabal/Distribution/Simple/GHC.hs @@ -364,6 +364,8 @@ toPackageIndex verbosity pkgss progdb = do ghcProg = fromMaybe (error "GHC.toPackageIndex: no ghc program") $ lookupProgram ghcProgram progdb -- | Return the 'FilePath' to the GHC application data directory. +-- +-- @since 3.4.0.0 getGhcAppDir :: IO FilePath getGhcAppDir = getAppUserDataDirectory "ghc" diff --git a/Cabal/Distribution/Types/Dependency.hs b/Cabal/Distribution/Types/Dependency.hs index e8a3b53853a..c109104741d 100644 --- a/Cabal/Distribution/Types/Dependency.hs +++ b/Cabal/Distribution/Types/Dependency.hs @@ -166,6 +166,8 @@ versionGuardMultilibs = do ] -- | Library set with main library. +-- +-- @since 3.4.0.0 mainLibSet :: NonEmptySet LibraryName mainLibSet = NES.singleton LMainLibName diff --git a/Cabal/Distribution/Types/Mixin.hs b/Cabal/Distribution/Types/Mixin.hs index 2719258086d..2694c580f67 100644 --- a/Cabal/Distribution/Types/Mixin.hs +++ b/Cabal/Distribution/Types/Mixin.hs @@ -79,6 +79,8 @@ versionGuardMultilibs = do ] -- | Smart constructor of 'Mixin', enforces invariant. +-- +-- @since 3.4.0.0 mkMixin :: PackageName -> LibraryName -> IncludeRenaming -> Mixin mkMixin pn (LSubLibName uqn) incl | packageNameToUnqualComponentName pn == uqn diff --git a/Cabal/Distribution/Types/PackageVersionConstraint.hs b/Cabal/Distribution/Types/PackageVersionConstraint.hs index b70e6faf1a6..dc35ad45f6f 100644 --- a/Cabal/Distribution/Types/PackageVersionConstraint.hs +++ b/Cabal/Distribution/Types/PackageVersionConstraint.hs @@ -63,11 +63,12 @@ instance Parsec PackageVersionConstraint where else pure (PackageVersionConstraint name (thisVersion ver)) - +-- | @since 3.4.0.0 thisPackageVersionConstraint :: PackageIdentifier -> PackageVersionConstraint thisPackageVersionConstraint (PackageIdentifier pn vr) = PackageVersionConstraint pn (thisVersion vr) +-- | @since 3.4.0.0 simplifyPackageVersionConstraint :: PackageVersionConstraint -> PackageVersionConstraint simplifyPackageVersionConstraint (PackageVersionConstraint pn vr) = PackageVersionConstraint pn (simplifyVersionRange vr) diff --git a/Cabal/Distribution/Types/SourceRepo.hs b/Cabal/Distribution/Types/SourceRepo.hs index adc64d154aa..12e0cada2b9 100644 --- a/Cabal/Distribution/Types/SourceRepo.hs +++ b/Cabal/Distribution/Types/SourceRepo.hs @@ -125,7 +125,8 @@ instance NFData RepoKind where rnf = genericRnf -- obtain and track the repo depend on the repo type. -- data KnownRepoType = Darcs | Git | SVN | CVS - | Mercurial | GnuArch | Bazaar | Monotone | Pijul + | Mercurial | GnuArch | Bazaar | Monotone + | Pijul -- ^ @since 3.4.0.0 deriving (Eq, Generic, Ord, Read, Show, Typeable, Data, Enum, Bounded) instance Binary KnownRepoType diff --git a/Cabal/Distribution/Verbosity.hs b/Cabal/Distribution/Verbosity.hs index 8edba708b4b..23ffaba1389 100644 --- a/Cabal/Distribution/Verbosity.hs +++ b/Cabal/Distribution/Verbosity.hs @@ -279,10 +279,14 @@ verboseNoTimestamp :: Verbosity -> Verbosity verboseNoTimestamp = verboseNoFlag VTimestamp -- | Turn on timestamps for log messages. +-- +-- @since 3.4.0.0 verboseStderr :: Verbosity -> Verbosity verboseStderr = verboseFlag VStderr -- | Turn off timestamps for log messages. +-- +-- @since 3.4.0.0 verboseNoStderr :: Verbosity -> Verbosity verboseNoStderr = verboseNoFlag VStderr @@ -326,6 +330,8 @@ isVerboseTimestamp :: Verbosity -> Bool isVerboseTimestamp = isVerboseFlag VTimestamp -- | Test if we should output to stderr when we log. +-- +-- @since 3.4.0.0 isVerboseStderr :: Verbosity -> Bool isVerboseStderr = isVerboseFlag VStderr diff --git a/Cabal/Distribution/Verbosity/Internal.hs b/Cabal/Distribution/Verbosity/Internal.hs index b65b4c0838e..ea436825dd4 100644 --- a/Cabal/Distribution/Verbosity/Internal.hs +++ b/Cabal/Distribution/Verbosity/Internal.hs @@ -20,7 +20,7 @@ data VerbosityFlag | VNoWrap | VMarkOutput | VTimestamp - | VStderr + | VStderr -- ^ @since 3.4.0.0 deriving (Generic, Show, Read, Eq, Ord, Enum, Bounded, Typeable) instance Binary VerbosityFlag From 09cdab254de753020ba82ca18bfb8e17e7e141b4 Mon Sep 17 00:00:00 2001 From: Oleg Grenrus Date: Thu, 9 Jul 2020 16:18:29 +0300 Subject: [PATCH 2/3] Update changelog for 3.4 --- changelog.d/Cabal-QuickCheck | 4 ++ changelog.d/Cabal-tree-diff | 3 ++ changelog.d/PerCompilerFlavor-functor | 3 ++ changelog.d/active-repositories | 13 +++++- changelog.d/added-tests | 11 +++++ changelog.d/backported | 43 +++++++++++++++++++ changelog.d/build-reports | 3 ++ changelog.d/cabal-init | 9 +++- changelog.d/cabal-list | 5 +++ changelog.d/cabal-project-local-tilde | 3 ++ changelog.d/{issue-5813 => cabal-sdist} | 16 +++++-- changelog.d/cabal-spec-3.4 | 9 ++++ changelog.d/cabal-testsuite | 8 ++++ changelog.d/cabalInstallVersion | 3 ++ changelog.d/changelog | 3 ++ changelog.d/ci | 24 +++++++++++ changelog.d/code-organization | 16 +++++++ changelog.d/copyright | 2 + changelog.d/dependency | 16 +++++++ changelog.d/described | 8 ++++ changelog.d/documentation | 6 ++- changelog.d/expose-all-unfoldings | 9 ++++ changelog.d/flag-assignment | 3 ++ changelog.d/ghc-8.12 | 18 ++++++++ changelog.d/ghci-fix | 8 ++++ changelog.d/help-remove-new-aliases | 3 ++ changelog.d/index-state | 4 +- changelog.d/install-prints-destination | 3 ++ changelog.d/issue-4267 | 4 -- changelog.d/issue-4746 | 1 + changelog.d/issue-5224 | 1 + changelog.d/issue-5586 | 12 ++++++ changelog.d/issue-5973 | 14 ++++++ changelog.d/issue-6083 | 23 ++++++++++ changelog.d/issue-6210 | 1 + changelog.d/issue-6281 | 3 ++ changelog.d/issue-6288 | 3 ++ changelog.d/issue-6485 | 3 ++ changelog.d/issue-6565 | 13 ++++++ changelog.d/issue-6589 | 1 + changelog.d/issue-6610 | 11 +++++ changelog.d/issue-6622 | 4 ++ changelog.d/issue-6635 | 3 -- changelog.d/issue-6691 | 13 ++++++ changelog.d/issue-6710 | 14 ++++++ changelog.d/issue-6729 | 11 +++++ changelog.d/issue-6804 | 4 ++ changelog.d/issue-6805 | 3 ++ changelog.d/issue-6807 | 11 +++++ changelog.d/issue-6869 | 1 + changelog.d/linux-androideabi | 9 ++++ changelog.d/man-command | 3 ++ changelog.d/others | 9 ++++ changelog.d/parser-benchmark | 2 + changelog.d/pr-6301 | 2 - changelog.d/pr-6878 | 3 ++ changelog.d/pr-6929 | 2 + changelog.d/public-libs-solver | 4 +- .../refactor-packagedescription-module | 9 ++++ changelog.d/remove-sandbox | 11 +++++ changelog.d/remove-text | 11 +++++ changelog.d/rewriteFileLBS | 3 ++ changelog.d/spdx | 3 ++ changelog.d/specVersion-type | 3 ++ changelog.d/symlinking-windows | 11 +++++ changelog.d/use-process-jobs | 23 ++++++++++ changelog.d/utf8 | 2 +- changelog.d/version-range-parser | 2 + changelog.d/version-type | 10 +++++ changelog.d/versions-exact | 2 + changelog.d/weeder | 2 + 71 files changed, 515 insertions(+), 21 deletions(-) create mode 100644 changelog.d/Cabal-QuickCheck create mode 100644 changelog.d/Cabal-tree-diff create mode 100644 changelog.d/PerCompilerFlavor-functor create mode 100644 changelog.d/added-tests create mode 100644 changelog.d/backported create mode 100644 changelog.d/build-reports create mode 100644 changelog.d/cabal-list create mode 100644 changelog.d/cabal-project-local-tilde rename changelog.d/{issue-5813 => cabal-sdist} (70%) create mode 100644 changelog.d/cabal-spec-3.4 create mode 100644 changelog.d/cabal-testsuite create mode 100644 changelog.d/cabalInstallVersion create mode 100644 changelog.d/changelog create mode 100644 changelog.d/ci create mode 100644 changelog.d/code-organization create mode 100644 changelog.d/copyright create mode 100644 changelog.d/dependency create mode 100644 changelog.d/described create mode 100644 changelog.d/expose-all-unfoldings create mode 100644 changelog.d/flag-assignment create mode 100644 changelog.d/ghc-8.12 create mode 100644 changelog.d/ghci-fix create mode 100644 changelog.d/help-remove-new-aliases create mode 100644 changelog.d/install-prints-destination delete mode 100644 changelog.d/issue-4267 create mode 100644 changelog.d/issue-5586 create mode 100644 changelog.d/issue-5973 create mode 100644 changelog.d/issue-6083 create mode 100644 changelog.d/issue-6281 create mode 100644 changelog.d/issue-6288 create mode 100644 changelog.d/issue-6485 create mode 100644 changelog.d/issue-6565 create mode 100644 changelog.d/issue-6610 create mode 100644 changelog.d/issue-6622 delete mode 100644 changelog.d/issue-6635 create mode 100644 changelog.d/issue-6691 create mode 100644 changelog.d/issue-6729 create mode 100644 changelog.d/issue-6804 create mode 100644 changelog.d/issue-6805 create mode 100644 changelog.d/issue-6807 create mode 100644 changelog.d/linux-androideabi create mode 100644 changelog.d/man-command create mode 100644 changelog.d/parser-benchmark delete mode 100644 changelog.d/pr-6301 create mode 100644 changelog.d/pr-6878 create mode 100644 changelog.d/pr-6929 create mode 100644 changelog.d/refactor-packagedescription-module create mode 100644 changelog.d/remove-sandbox create mode 100644 changelog.d/remove-text create mode 100644 changelog.d/rewriteFileLBS create mode 100644 changelog.d/spdx create mode 100644 changelog.d/specVersion-type create mode 100644 changelog.d/symlinking-windows create mode 100644 changelog.d/use-process-jobs create mode 100644 changelog.d/version-range-parser create mode 100644 changelog.d/version-type create mode 100644 changelog.d/versions-exact create mode 100644 changelog.d/weeder diff --git a/changelog.d/Cabal-QuickCheck b/changelog.d/Cabal-QuickCheck new file mode 100644 index 00000000000..e1ab7cc47ea --- /dev/null +++ b/changelog.d/Cabal-QuickCheck @@ -0,0 +1,4 @@ +synopsis: Cabal-QuickCheck package with `Arbirary` instances +prs: #6557 #6891 +issues: #6882 +packages: Cabal diff --git a/changelog.d/Cabal-tree-diff b/changelog.d/Cabal-tree-diff new file mode 100644 index 00000000000..5795cfdd888 --- /dev/null +++ b/changelog.d/Cabal-tree-diff @@ -0,0 +1,3 @@ +synopsis: Create Cabal-tree-diff package with `ToExpr` instances +prs: #6789 +packages: Cabal diff --git a/changelog.d/PerCompilerFlavor-functor b/changelog.d/PerCompilerFlavor-functor new file mode 100644 index 00000000000..5190474ea2c --- /dev/null +++ b/changelog.d/PerCompilerFlavor-functor @@ -0,0 +1,3 @@ +synopsis: `Cabal.Distribution.Compiler`: add `Traversable` instance for `PerCompilerFlavor` +prs: #6763 +packages: Cabal diff --git a/changelog.d/active-repositories b/changelog.d/active-repositories index 306bb08082b..f4f3d416b84 100644 --- a/changelog.d/active-repositories +++ b/changelog.d/active-repositories @@ -1,3 +1,14 @@ synopsis: Add active-repositories configuration packages: cabal-install -prs: #6724 +prs: #6724 #6868 +issues: #6819 +significance: significant + +description: { + +New `active-repositories` `cabal.project` fields allows +specifying an order and ways various package repositories are combined. + +The active `active-repositories` is saved in `cabal.project.freeze`. + +} diff --git a/changelog.d/added-tests b/changelog.d/added-tests new file mode 100644 index 00000000000..4142c62b04f --- /dev/null +++ b/changelog.d/added-tests @@ -0,0 +1,11 @@ +synopsis: Tests additions +prs: #6753 #6759 #6802 #6842 #6872 +issues: #6409 + +description: { + +- Add shrinker, so writing big non-generic product shrinkers is easier +- Add `hs-source-dirs: NL .` test-case +- Add public multilib test(s) + +} diff --git a/changelog.d/backported b/changelog.d/backported new file mode 100644 index 00000000000..7a03d3b8809 --- /dev/null +++ b/changelog.d/backported @@ -0,0 +1,43 @@ +synopsis: Backported to 3.2 +packages: Cabal-internal +prs: + -- solver + #5918 #6447 + -- buildinfo generator + #6258 + -- bump version + #6426 + -- cabal install -z + #6428 + -- incomplete-uni-patterns + #6433 + -- packages/optional packages empty + #6436 + -- file+noindex + #6448 + -- documentation + #6450 #6464 #6473 #6546 + -- bounds + #6455 + -- safe functions + #6456 + -- Improve few internalErrors in InstallPlan + #6439 + -- v2-run -z + #6457 + -- test fixes + #6463 #6499 #6518 + -- CI + #6469 + -- show full abi hash + #6498 #6496 #6476 + -- Create distTempDirectory in withTempEnvFile + #6501 + -- cabal_macros.h zinza + -- TODO: check whether it made to 3.2 + -- issue: #6533 + #6502 #6535 + -- disallow spaces around : in dependency + #6538 + -- pkg-config + #6540 #6541 diff --git a/changelog.d/build-reports b/changelog.d/build-reports new file mode 100644 index 00000000000..1d6f4fff06a --- /dev/null +++ b/changelog.d/build-reports @@ -0,0 +1,3 @@ +synopsis: Change `BuildReports` parse/pretty to use FieldGrammar framework +prs: #6783 +packages: cabal-install diff --git a/changelog.d/cabal-init b/changelog.d/cabal-init index 0ab0a349dd2..f985c2400e6 100644 --- a/changelog.d/cabal-init +++ b/changelog.d/cabal-init @@ -1,14 +1,19 @@ synopsis: Various `cabal init` improvements packages: cabal-install -prs: #6619 #6661 #6641 #6650 #6603 #6632 #6607 +prs: #6619 #6661 #6641 #6650 #6603 #6632 #6607 #6678 #6690 #6705 #6723 #6676 #6677 +issues: #6150 #6675 +significance: significant description: { + - Default to `cabal-version: 2.4` - `cabal` doesn't force a default license choice anymore - Licenses are always asked using SPDX expression - Fix an infinite loop when invalid license was passed on command line - `Setup.hs` is not written anymore - Default to --source-dir=src and --application-dir=app +- Add `FileCreators.generateCabalFile` unit tests. +- Default cabal init application-dir to `app`, and source-dir to `src`. +- Default to SPDX.NONE license in cabal init interactive mode. -TODO: complete the description } diff --git a/changelog.d/cabal-list b/changelog.d/cabal-list new file mode 100644 index 00000000000..7340869430c --- /dev/null +++ b/changelog.d/cabal-list @@ -0,0 +1,5 @@ +synopsis: `cabal list` accepts regular expression +packages: cabal-install +prs: #6618 #6806 +issues: #4267 #6683 +significance: significant diff --git a/changelog.d/cabal-project-local-tilde b/changelog.d/cabal-project-local-tilde new file mode 100644 index 00000000000..f820f307680 --- /dev/null +++ b/changelog.d/cabal-project-local-tilde @@ -0,0 +1,3 @@ +synopsis: Tell users about `cabal.project.local~` in `cabal v2-configure` +prs: #6877 +packages: cabal-install diff --git a/changelog.d/issue-5813 b/changelog.d/cabal-sdist similarity index 70% rename from changelog.d/issue-5813 rename to changelog.d/cabal-sdist index 02b3d4a66bb..e0444da875a 100644 --- a/changelog.d/issue-5813 +++ b/changelog.d/cabal-sdist @@ -1,9 +1,14 @@ -synopsis: Fix v2-sdist permissions, they are now always readonly -prs: #6454 -issues: #5813 #2940 #6611 #6514 +synopsis: Rework `v2-sdist` command +packages: cabal-install +issues: #6635 #5813 #2940 #6611 #6514 +prs: #6454 #6637 #6640 #6660 #6666 #6884 #6916 +significance: significant description: { -The #2940 "cabal sdist should touch preprocessed .hs files" issu + +`v2-sdist` marks all files as readonly in resulting tarballs. + +The #2940 "cabal sdist should touch preprocessed .hs files" issue is fixed by virtue of not doing any preprocessing anymore. It's responsibility of packager. @@ -21,4 +26,7 @@ are run with explicit `sh` program. For package internal scripts, maintainers should also use interpreters explicitly as well. Scripts with shebangs are not executable on Windows. +The `v1-sdist` command is removed, as its functionality is completely +superseded by `v2-sdist`. + } diff --git a/changelog.d/cabal-spec-3.4 b/changelog.d/cabal-spec-3.4 new file mode 100644 index 00000000000..9ae7bf8ba63 --- /dev/null +++ b/changelog.d/cabal-spec-3.4 @@ -0,0 +1,9 @@ +synopsis: Add cabal-version: 3.4 +prs: #6663 +significance: significant + +description: { + +See various changes in https://cabal.readthedocs.io/en/latest/file-format-changelog.html#cabal-version-3-4 + +} diff --git a/changelog.d/cabal-testsuite b/changelog.d/cabal-testsuite new file mode 100644 index 00000000000..37d13692913 --- /dev/null +++ b/changelog.d/cabal-testsuite @@ -0,0 +1,8 @@ +synopsis: Improvements to cabal-testsuite framework +prs: #6643 + +desciption: { + +- setupAndCabalTest uses cabal act-as-setup for cabal part + +} diff --git a/changelog.d/cabalInstallVersion b/changelog.d/cabalInstallVersion new file mode 100644 index 00000000000..fa4f92a5035 --- /dev/null +++ b/changelog.d/cabalInstallVersion @@ -0,0 +1,3 @@ +synopsis: Refactor cabalInstallVersions, add make doctest-cli +packages: cabal-install +prs: #6720 diff --git a/changelog.d/changelog b/changelog.d/changelog new file mode 100644 index 00000000000..18d72c2fd8f --- /dev/null +++ b/changelog.d/changelog @@ -0,0 +1,3 @@ +synopsis: Changelog entries +packages: Cabal-internal +prs: #6634 #6950 diff --git a/changelog.d/ci b/changelog.d/ci new file mode 100644 index 00000000000..5903afa728c --- /dev/null +++ b/changelog.d/ci @@ -0,0 +1,24 @@ +synopsis: CI tweaks +packages: Cabal-internal +prs: + #6494 + #6518 + #6559 + #6564 + #6571 + #6577 + #6578 + #6579 + #6585 + #6617 + #6636 + #6709 + #6827 + #6831 + #6900 + #6902 + #6914 + #6946 +issues: + #6500 + #6945 diff --git a/changelog.d/code-organization b/changelog.d/code-organization new file mode 100644 index 00000000000..a3dae264bda --- /dev/null +++ b/changelog.d/code-organization @@ -0,0 +1,16 @@ +synopsis: Code organization +prs: #6599 #6642 #6734 #6745 #6746 #6817 #6818 #6821 #6867 + +description: { + +- Split `Distribution.Client.Types` module +- Move cabal-testsuite code into `src/` +- Add `ProjectFlags` +- Add `NixStyleOptions` +- Internal refactorings to install command. +- Make own modules for `InstallMethod` and `OverwritePolicy` +- Make cabal-install compilable with `NoImplicitPrelude` +- Refactor shared `TargetProblem` data types into their own module. +- Template `cabal-install.cabal` using zinza + +} diff --git a/changelog.d/copyright b/changelog.d/copyright new file mode 100644 index 00000000000..e8961eac212 --- /dev/null +++ b/changelog.d/copyright @@ -0,0 +1,2 @@ +synopsis: Update copyright years to 2020 +prs: #6644 diff --git a/changelog.d/dependency b/changelog.d/dependency new file mode 100644 index 00000000000..93775806a69 --- /dev/null +++ b/changelog.d/dependency @@ -0,0 +1,16 @@ +synopsis: Dependency type refactorings +packages: Cabal +prs: #6798 #6768 #6895 #6896 #6897 #6898 +issues: #5570 #6894 +significance: significant + +description: { + +With additions of (public) sublibraries, `Dependency` type use for multiple needs become painful. +Therefore a new type `PackageVersionConstraint` was added to serve *constraint on package* use-case. +`Dependency` type is *dependency on a library component*, i.e. representing `build-depends` entry. + +- Use PackageVersionConstraint more +- Add NonEmptySet and use it in Dependency + +} diff --git a/changelog.d/described b/changelog.d/described new file mode 100644 index 00000000000..90a10e9e16b --- /dev/null +++ b/changelog.d/described @@ -0,0 +1,8 @@ +synopsis: The grammar of most package description fields is formally documented +prs: #6591 #6593 #6704 #6766 #6778 #6780 #6781 #6791 #6800 + +description: { + +See https://cabal.readthedocs.io/en/latest/buildinfo-fields-reference.html + +} diff --git a/changelog.d/documentation b/changelog.d/documentation index b2d67197eee..5f23a49da12 100644 --- a/changelog.d/documentation +++ b/changelog.d/documentation @@ -1,2 +1,4 @@ -synopsis: Documentation updates -prs: #6613 +synopsis: Documentation updates and typo-fixes +prs: + #6613 #6560 #6660 #6668 #6669 #6697 #6761 #6940 + #6504 #6550 #6686 #6928 #6954 #6953 #6951 diff --git a/changelog.d/expose-all-unfoldings b/changelog.d/expose-all-unfoldings new file mode 100644 index 00000000000..893dae70d5b --- /dev/null +++ b/changelog.d/expose-all-unfoldings @@ -0,0 +1,9 @@ +synopsis: Add -fexpose-all-unfoldings to parsec and Cabal in release project +packages: cabal-install +prs: #6708 + +description: { + +This makes parser faster with acceptable code-size increase. + +} diff --git a/changelog.d/flag-assignment b/changelog.d/flag-assignment new file mode 100644 index 00000000000..c74767727ab --- /dev/null +++ b/changelog.d/flag-assignment @@ -0,0 +1,3 @@ +synopsis: Flag assignment parsing refactorings +prs: #6854 #6858 +issues: #6853 diff --git a/changelog.d/ghc-8.12 b/changelog.d/ghc-8.12 new file mode 100644 index 00000000000..f499f81341a --- /dev/null +++ b/changelog.d/ghc-8.12 @@ -0,0 +1,18 @@ +synopsis: Support GHC-8.12 +prs: + #6735 #6844 #6865 #6848 #6908 #6947 + #6552 #6553 #6563 #6545 +issues: #6903 #6904 #6905 +significance: significant + +description: { + +- Support for `-this-package-key` deprecation +- Use process `createPipe` +- Add support for WINIO to Cabal +- Adopt to simplfied subsumption changes + +There are no magical `IO = WithCallStack Prelude.IO` alias in Cabal, +as it is hard to get working with GHC-8.12's simplified subsumption. + +} diff --git a/changelog.d/ghci-fix b/changelog.d/ghci-fix new file mode 100644 index 00000000000..4b768bd6b9c --- /dev/null +++ b/changelog.d/ghci-fix @@ -0,0 +1,8 @@ +synopsis: Fix ghci being launched before other sources are built. +prs: #6923 + +description: { + +Related to foreign calls to C-sources. + +} diff --git a/changelog.d/help-remove-new-aliases b/changelog.d/help-remove-new-aliases new file mode 100644 index 00000000000..3bb31c4fc40 --- /dev/null +++ b/changelog.d/help-remove-new-aliases @@ -0,0 +1,3 @@ +synopsis: Remove new- command from `--help` output (there are v2-) +prs: #6930 +packages: cabal-install diff --git a/changelog.d/index-state b/changelog.d/index-state index ca6a41ba82c..52252a29ee3 100644 --- a/changelog.d/index-state +++ b/changelog.d/index-state @@ -1,3 +1,5 @@ synopsis: More rich `index-state` syntax. `v2-freeze` saves `index-state`. packages: cabal-install -prs: #6596 #6581 #6597 +prs: #6596 #6581 #6597 #6591 #6682 #6733 +issues: #6728 +significance: significant diff --git a/changelog.d/install-prints-destination b/changelog.d/install-prints-destination new file mode 100644 index 00000000000..ebeb5abf874 --- /dev/null +++ b/changelog.d/install-prints-destination @@ -0,0 +1,3 @@ +synopsis: Installing (copy or symlink) executable message prints destination. +prs: #6590 #6582 +packages: cabal-install diff --git a/changelog.d/issue-4267 b/changelog.d/issue-4267 deleted file mode 100644 index f9d07d10494..00000000000 --- a/changelog.d/issue-4267 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Add --exact flag to the list command -packages: cabal-install -prs: #6618 -issues: #4267 diff --git a/changelog.d/issue-4746 b/changelog.d/issue-4746 index 61c44a0a2a7..577db3dd9d2 100644 --- a/changelog.d/issue-4746 +++ b/changelog.d/issue-4746 @@ -1,3 +1,4 @@ synopsis: all extra-source-files are change-tracked packages: cabal-install issues: #4746 +prs: #6889 diff --git a/changelog.d/issue-5224 b/changelog.d/issue-5224 index 75dfb223916..1fe380cf8cf 100644 --- a/changelog.d/issue-5224 +++ b/changelog.d/issue-5224 @@ -1,3 +1,4 @@ synopsis: `upload --help` now includes `password-command` as a config file option (#5224) +packages: cabal-install issues: #5224 prs: #6609 #6313 #6680 diff --git a/changelog.d/issue-5586 b/changelog.d/issue-5586 new file mode 100644 index 00000000000..deb0432c51d --- /dev/null +++ b/changelog.d/issue-5586 @@ -0,0 +1,12 @@ +synopsis: `source-repository-package` directories aren't local +packages: cabal-install +issues: #5586 +prs: #6917 #6915 +significance: significant + +description: { + +Concretely these means that compiled `source-repository-package` entries +used in different projects are stored in the global nix-style store. + +} diff --git a/changelog.d/issue-5973 b/changelog.d/issue-5973 new file mode 100644 index 00000000000..254ca1c68ef --- /dev/null +++ b/changelog.d/issue-5973 @@ -0,0 +1,14 @@ +synopsis: Use default install directory if not specified +packages: cabal-install +prs: #6624 +issues: #5973 + +description: { + +Cabal 3.0.0.0 added the --installdir option to specify the location that +binaries should be installed in. Running a cabal user-config update would +populate the config file with the default value, but the cabal install program +would error if it wasn't set. This change uses the default value that would be +written to the config if its unset, and outputs a warning. + +} diff --git a/changelog.d/issue-6083 b/changelog.d/issue-6083 new file mode 100644 index 00000000000..2de4ea1bc16 --- /dev/null +++ b/changelog.d/issue-6083 @@ -0,0 +1,23 @@ +synopsis: Treat `pkg:sublib` dependency syntax as is in `cabal-version: 3.4` +issues: #6083 +prs: #6907 #6893 +significance: significant + +description: { + +In `cabal-version: 3.4` cabal files the dependency definition + +```cabal +build-depends: somesublib +``` + +is not using in-package sublibraries. You have to be explicit and write + +```cabal +build-depends: thispkg:somesublib +``` + +This fixes an issue, where it was impossible to refer to extenral +library, if you had sublibrary of the same name. + +} diff --git a/changelog.d/issue-6210 b/changelog.d/issue-6210 index 92e1d92fa0f..c1e969990c4 100644 --- a/changelog.d/issue-6210 +++ b/changelog.d/issue-6210 @@ -1,3 +1,4 @@ synopsis: Default to 'NoReports' for remote build reporting +packages: cabal-install issues: #6210 prs: #6625 diff --git a/changelog.d/issue-6281 b/changelog.d/issue-6281 new file mode 100644 index 00000000000..15b58f97890 --- /dev/null +++ b/changelog.d/issue-6281 @@ -0,0 +1,3 @@ +synopsis: Add foo:bar syntax to mixins +issues: #6281 +prs: #6912 diff --git a/changelog.d/issue-6288 b/changelog.d/issue-6288 new file mode 100644 index 00000000000..c6c2e86a7ef --- /dev/null +++ b/changelog.d/issue-6288 @@ -0,0 +1,3 @@ +synopsis: default-language field is optional in cabal-version: 3.4 +prs: #6926 #6924 +issues: #6288 diff --git a/changelog.d/issue-6485 b/changelog.d/issue-6485 new file mode 100644 index 00000000000..52771c0f5c6 --- /dev/null +++ b/changelog.d/issue-6485 @@ -0,0 +1,3 @@ +synopsis: Include component name in unit-id +issues: #6485 +prs: #6547 diff --git a/changelog.d/issue-6565 b/changelog.d/issue-6565 new file mode 100644 index 00000000000..40a81b4d48e --- /dev/null +++ b/changelog.d/issue-6565 @@ -0,0 +1,13 @@ +synopsis: Update GHC environment location +prs: #6822 +issues: #6565 +packages: cabal-install + +description: { + +cabal-install currently assumes that the GHC environment files are always located in `$HOME/.ghc/`. +However, GHC itself doesn't query the home directory directly. +Instead, it uses `getAppUserDataDirectory "ghc"` which happens to coincide with `$HOME/.ghc`/ on UNIX systems. +On Windows, however, GHC ends up looking in `%APPDATA%/ghc/`. + +} diff --git a/changelog.d/issue-6589 b/changelog.d/issue-6589 index 0ffda542b02..e1532078e4b 100644 --- a/changelog.d/issue-6589 +++ b/changelog.d/issue-6589 @@ -1,5 +1,6 @@ synopsis: Remove `-any` and `-none` syntax for version ranges in cabal-version: 3.4 issues: #6589 +prs: #6786 description: Use `>=0` (or empty in dependencies) and `<0` respectively. diff --git a/changelog.d/issue-6610 b/changelog.d/issue-6610 new file mode 100644 index 00000000000..e3be323c677 --- /dev/null +++ b/changelog.d/issue-6610 @@ -0,0 +1,11 @@ +synopsis: Add pijul to known repository type +issues: #6610 +prs: #6684 + +description: { + +Pijul is now explicitly recognized version control system. +However `cabal-install` isn't yet able to use it in +`source-repository-package`. + +} diff --git a/changelog.d/issue-6622 b/changelog.d/issue-6622 new file mode 100644 index 00000000000..9f6786fee93 --- /dev/null +++ b/changelog.d/issue-6622 @@ -0,0 +1,4 @@ +synopsis: Prepend hs-source-dir to match-component, fixes `cabal repl file` +packages: cabal-install +prs: #6623 #6826 #6875 +issues: #6622 diff --git a/changelog.d/issue-6635 b/changelog.d/issue-6635 deleted file mode 100644 index 51e83f28023..00000000000 --- a/changelog.d/issue-6635 +++ /dev/null @@ -1,3 +0,0 @@ -synopsis: Remove `v1-sdist` command. -issues: #6635 -prs: #6637 diff --git a/changelog.d/issue-6691 b/changelog.d/issue-6691 new file mode 100644 index 00000000000..3f9bbdb806c --- /dev/null +++ b/changelog.d/issue-6691 @@ -0,0 +1,13 @@ +synopsis: Remove upgrade, uninstall and win32selfupgrade commands +packages: cabal-install +issues: #6691 +prs: #6707 + +description: { + +This commands were not implemented or are special purpose. +The removal of `win32selfupgrade` might break self upgrade on windows, +when `cabal-install` tries to rewrite the binary of itself. +This shouldn't be a problem when symlinking is used. + +} diff --git a/changelog.d/issue-6710 b/changelog.d/issue-6710 index 28c3932bcc9..79c81f3c3c9 100644 --- a/changelog.d/issue-6710 +++ b/changelog.d/issue-6710 @@ -1,2 +1,16 @@ synopsis: Rename Flag to CompilerFlag and PackageFlag +packages: Cabal issues: #6710 +prs: #6725 + +description: { + +There was three Flag's. Now they are + +- `Flag` (cli parsing) +- `PackageFlag` +- `CompilerFlag` + +This allows wild-imports without `hiding (Flag)`. + +} diff --git a/changelog.d/issue-6729 b/changelog.d/issue-6729 new file mode 100644 index 00000000000..b78280e4571 --- /dev/null +++ b/changelog.d/issue-6729 @@ -0,0 +1,11 @@ +synopsis: Remove local-repo +packages: cabal-install +issues: #6729 +prs: #6730 + +description: { + +This functionality was mainly used by removed sandboxes. +`file+noindex` repositories are better variant for local package repositories. + +} diff --git a/changelog.d/issue-6804 b/changelog.d/issue-6804 new file mode 100644 index 00000000000..41c3458fc88 --- /dev/null +++ b/changelog.d/issue-6804 @@ -0,0 +1,4 @@ +synopsis: v2-update reports new index-state +packages: cabal-install +issues: #6804 +prs: #6810 diff --git a/changelog.d/issue-6805 b/changelog.d/issue-6805 new file mode 100644 index 00000000000..d31e953457b --- /dev/null +++ b/changelog.d/issue-6805 @@ -0,0 +1,3 @@ +synopsis: Fix rpmvercmp (trailing non-digit characters) +issues: #6805 +prs: #6808 diff --git a/changelog.d/issue-6807 b/changelog.d/issue-6807 new file mode 100644 index 00000000000..0fb950a8905 --- /dev/null +++ b/changelog.d/issue-6807 @@ -0,0 +1,11 @@ +synopsis: Add list-bin command +packages: cabal-install +issues: #6807 +prs: #6931 +significance: significant + +description: { + +`cabal list-bin executable-component` tells the path to the build artifact. + +} diff --git a/changelog.d/issue-6869 b/changelog.d/issue-6869 index 525e476d8cc..428873a9182 100644 --- a/changelog.d/issue-6869 +++ b/changelog.d/issue-6869 @@ -1,3 +1,4 @@ synopsis: cxx-sources, asm-sources and cmm-sources are change-tracked packages: cabal-install issues: #6869 +prs: #6870 diff --git a/changelog.d/linux-androideabi b/changelog.d/linux-androideabi new file mode 100644 index 00000000000..0d859cd8ad4 --- /dev/null +++ b/changelog.d/linux-androideabi @@ -0,0 +1,9 @@ +synopsis: Accept "linux-androideabi" as an alias for Android for determining buildOS +prs: #6949 #6301 +packages: Cabal + +description: { + +`Cabal` will able to parse `linux-androideabi` from the value of `System.Info.os`. + +} diff --git a/changelog.d/man-command b/changelog.d/man-command new file mode 100644 index 00000000000..d7213a17d7b --- /dev/null +++ b/changelog.d/man-command @@ -0,0 +1,3 @@ +synopsis: Change manpage command to man +packages: cabal-install +prs: #6548 diff --git a/changelog.d/others b/changelog.d/others index ba586f59f08..b6b146a9463 100644 --- a/changelog.d/others +++ b/changelog.d/others @@ -1 +1,10 @@ synopsis: other changes +prs: + -- Expand elem + #6556 + + -- Add forEachGPD to hackage-tests + #6598 + + -- Add Pretty Component instance + #6910 diff --git a/changelog.d/parser-benchmark b/changelog.d/parser-benchmark new file mode 100644 index 00000000000..25bd5062ddb --- /dev/null +++ b/changelog.d/parser-benchmark @@ -0,0 +1,2 @@ +synopsis: Package description parser benchmark +prs: #6594 diff --git a/changelog.d/pr-6301 b/changelog.d/pr-6301 deleted file mode 100644 index f233cd3902d..00000000000 --- a/changelog.d/pr-6301 +++ /dev/null @@ -1,2 +0,0 @@ -synopsis: Accept "linux-androideabi" for determining buildOS -prs: #6301 diff --git a/changelog.d/pr-6878 b/changelog.d/pr-6878 new file mode 100644 index 00000000000..62bbc3cbb65 --- /dev/null +++ b/changelog.d/pr-6878 @@ -0,0 +1,3 @@ +synopsis: Add `licenceIsFsfLibre` +packages: Cabal +prs: #6878 diff --git a/changelog.d/pr-6929 b/changelog.d/pr-6929 new file mode 100644 index 00000000000..7d1aeee4a5d --- /dev/null +++ b/changelog.d/pr-6929 @@ -0,0 +1,2 @@ +synopsis: Add `+stderr` modifier to `Verbosity` +prs: #6929 diff --git a/changelog.d/public-libs-solver b/changelog.d/public-libs-solver index c5ffb3fad55..2c4fc4c8e46 100644 --- a/changelog.d/public-libs-solver +++ b/changelog.d/public-libs-solver @@ -2,10 +2,12 @@ synopsis: Add support for multiple public libraries to the solver packages: cabal-install issues: #6039 prs: #6836 #6812 #6047 + description: { + cabal-install can now take into account the presence and visibility of sublibraries when solving. This also means that, when using cabal-install, multiple public libraries support is extended to GHCs older than 8.8. The support is limited to source packages for now. -} +} diff --git a/changelog.d/refactor-packagedescription-module b/changelog.d/refactor-packagedescription-module new file mode 100644 index 00000000000..f83772a5437 --- /dev/null +++ b/changelog.d/refactor-packagedescription-module @@ -0,0 +1,9 @@ +synopsis: Refactor Distribution.PackageDescription module +prs: #6855 +packages: Cabal + +description: { + +Now it re-exports a collection of modules, not individual symbols. + +} diff --git a/changelog.d/remove-sandbox b/changelog.d/remove-sandbox new file mode 100644 index 00000000000..be4392525dd --- /dev/null +++ b/changelog.d/remove-sandbox @@ -0,0 +1,11 @@ +synopsis: Remove sandboxes +packages: cabal-install +prs: #6747 +issues: #6445 +significance: significant + +description: { + +Sandbox functionality is remove in favour of now default nix-style builds. + +} diff --git a/changelog.d/remove-text b/changelog.d/remove-text new file mode 100644 index 00000000000..bba8b717f4b --- /dev/null +++ b/changelog.d/remove-text @@ -0,0 +1,11 @@ +synopsis: Remove text type-class +packages: cabal-install +prs: #6764 #6777 #6784 #6785 #6793 #6794 + +description: { + +`Text` type-class was removed from `Cabal`, but it still lived in `cabal-install`. +Now it is finally removed. +`cabal-install` is still using `ReadP` parsers for various things though. + +} diff --git a/changelog.d/rewriteFileLBS b/changelog.d/rewriteFileLBS new file mode 100644 index 00000000000..14fa4c61032 --- /dev/null +++ b/changelog.d/rewriteFileLBS @@ -0,0 +1,3 @@ +synopsis: Add rewriteFileLBS and use it to write setup wrapper +packages: Cabal +prs: #6574 diff --git a/changelog.d/spdx b/changelog.d/spdx new file mode 100644 index 00000000000..f99ee366a46 --- /dev/null +++ b/changelog.d/spdx @@ -0,0 +1,3 @@ +synopsis: Add SPDX License List 3.9 +prs: #6662 #6944 +issues: #6879 diff --git a/changelog.d/specVersion-type b/changelog.d/specVersion-type new file mode 100644 index 00000000000..85efa3a3569 --- /dev/null +++ b/changelog.d/specVersion-type @@ -0,0 +1,3 @@ +synopsis: Change specVersion to have CabalSpecVersion type +packages: Cabal +prs: #6653 diff --git a/changelog.d/symlinking-windows b/changelog.d/symlinking-windows new file mode 100644 index 00000000000..1d7f792f924 --- /dev/null +++ b/changelog.d/symlinking-windows @@ -0,0 +1,11 @@ +synopsis: Windows install symlinks +packages: cabal-install +prs: #5684 #6506 #6519 + +description: { + +`cabal-install` will try to infer whether symlinking is supported on Windows, +and make symlinks in `install`. Otherwise it will fallback to copying files. +Either way can be forced with `--install-method`. + +} diff --git a/changelog.d/use-process-jobs b/changelog.d/use-process-jobs new file mode 100644 index 00000000000..790be6d8614 --- /dev/null +++ b/changelog.d/use-process-jobs @@ -0,0 +1,23 @@ +synopsis: Use process jobs when spawning subprocesses +prs: #6529 #6536 + +description: { + +Many toolchain tools written for POSIX systems rely on the exec system +call. Unfortunately, it is not possible to implement exec in a +POSIX-compliant manner on Windows. In particular, the semantics of the +exec implementation provided by the widely-used msvcrt C runtime +will cause process's waiting on the exec'ing process to incorrectly +conclude that the process has successfully terminated when in fact it is +still running in another process. + +For this reason, the process library exposes the use_process_jobs +flag to use a more strict (although still not POSIX-compliant) mechanism +for tracking process completion. +This is explained in [the Process.hs comment](https://github.com/haskell/process/blob/master/System/Process.hs#L399) + +Unfortunately, job support in the process library is currently quite +broken and was only recently fixed. Consequently, we only enable job +object support for process releases >= 1.6.8. + +} diff --git a/changelog.d/utf8 b/changelog.d/utf8 index 0ceeee84312..8cf64ce0206 100644 --- a/changelog.d/utf8 +++ b/changelog.d/utf8 @@ -1,3 +1,3 @@ -synopsis: Better UTF8 handling, parsed ShortText should be valid now +synopsis: Better UTF8 handling, parsed `ShortText` is now valid. packages: Cabal prs: #6588 diff --git a/changelog.d/version-range-parser b/changelog.d/version-range-parser new file mode 100644 index 00000000000..4c410d12932 --- /dev/null +++ b/changelog.d/version-range-parser @@ -0,0 +1,2 @@ +synopsis: More checks in version range parser +prs: #6586 diff --git a/changelog.d/version-type b/changelog.d/version-type new file mode 100644 index 00000000000..32934c9c630 --- /dev/null +++ b/changelog.d/version-type @@ -0,0 +1,10 @@ +synopsis: Remove `AnyVersion` and `WildcardVersion` constructors from `Version` +packages: Cabal +prs: #6742 + +description: { + +This changes makes `Version` type less "syntactic", +i.e. contains less constructors for semantically same version ranges. + +} diff --git a/changelog.d/versions-exact b/changelog.d/versions-exact new file mode 100644 index 00000000000..98f75d27829 --- /dev/null +++ b/changelog.d/versions-exact @@ -0,0 +1,2 @@ +synopsis: Require cabal-versions `>=1.25` to be exact +prs: #6654 diff --git a/changelog.d/weeder b/changelog.d/weeder new file mode 100644 index 00000000000..195f358be12 --- /dev/null +++ b/changelog.d/weeder @@ -0,0 +1,2 @@ +synopsis: Add and use weeder +prs: #6779 #6790 From fde059f28cd0b7fe0cf55e395f232f42d9d956e5 Mon Sep 17 00:00:00 2001 From: Oleg Grenrus Date: Mon, 13 Jul 2020 15:00:27 +0300 Subject: [PATCH 3/3] Generate release notes for 3.4 --- release-notes/Cabal-3.4.0.0.md | 147 ++++++++++++++++ release-notes/cabal-install-3.4.0.0.md | 235 +++++++++++++++++++++++++ 2 files changed, 382 insertions(+) create mode 100644 release-notes/Cabal-3.4.0.0.md create mode 100644 release-notes/cabal-install-3.4.0.0.md diff --git a/release-notes/Cabal-3.4.0.0.md b/release-notes/Cabal-3.4.0.0.md new file mode 100644 index 00000000000..25d785edc93 --- /dev/null +++ b/release-notes/Cabal-3.4.0.0.md @@ -0,0 +1,147 @@ +### Significant changes + +- Add cabal-version: 3.4 [!6663](https://github.com/haskell/cabal/pull/6663) + + See various changes in https://cabal.readthedocs.io/en/latest/file-format-changelog.html#cabal-version-3-4 + +- Support GHC-8.12 [#6903](https://github.com/haskell/cabal/issues/6903) [#6904](https://github.com/haskell/cabal/issues/6904) [#6905](https://github.com/haskell/cabal/issues/6905) [!6545](https://github.com/haskell/cabal/pull/6545) [!6552](https://github.com/haskell/cabal/pull/6552) [!6553](https://github.com/haskell/cabal/pull/6553) [!6563](https://github.com/haskell/cabal/pull/6563) [!6735](https://github.com/haskell/cabal/pull/6735) [!6844](https://github.com/haskell/cabal/pull/6844) [!6848](https://github.com/haskell/cabal/pull/6848) [!6865](https://github.com/haskell/cabal/pull/6865) [!6908](https://github.com/haskell/cabal/pull/6908) [!6947](https://github.com/haskell/cabal/pull/6947) + + - Support for `-this-package-key` deprecation + - Use process `createPipe` + - Add support for WINIO to Cabal + - Adopt to simplfied subsumption changes + + There are no magical `IO = WithCallStack Prelude.IO` alias in Cabal, + as it is hard to get working with GHC-8.12's simplified subsumption. + +- Treat `pkg:sublib` dependency syntax as is in `cabal-version: 3.4` [#6083](https://github.com/haskell/cabal/issues/6083) [!6893](https://github.com/haskell/cabal/pull/6893) [!6907](https://github.com/haskell/cabal/pull/6907) + + In `cabal-version: 3.4` cabal files the dependency definition + + ```cabal + build-depends: somesublib + ``` + + is not using in-package sublibraries. You have to be explicit and write + + ```cabal + build-depends: thispkg:somesublib + ``` + + This fixes an issue, where it was impossible to refer to extenral + library, if you had sublibrary of the same name. + +- Dependency type refactorings [#5570](https://github.com/haskell/cabal/issues/5570) [#6894](https://github.com/haskell/cabal/issues/6894) [!6768](https://github.com/haskell/cabal/pull/6768) [!6798](https://github.com/haskell/cabal/pull/6798) [!6895](https://github.com/haskell/cabal/pull/6895) [!6896](https://github.com/haskell/cabal/pull/6896) [!6897](https://github.com/haskell/cabal/pull/6897) [!6898](https://github.com/haskell/cabal/pull/6898) + + With additions of (public) sublibraries, `Dependency` type use for multiple needs become painful. + Therefore a new type `PackageVersionConstraint` was added to serve *constraint on package* use-case. + `Dependency` type is *dependency on a library component*, i.e. representing `build-depends` entry. + + - Use PackageVersionConstraint more + - Add NonEmptySet and use it in Dependency + +### Other changes + +- Tests additions [#6409](https://github.com/haskell/cabal/issues/6409) [!6753](https://github.com/haskell/cabal/pull/6753) [!6759](https://github.com/haskell/cabal/pull/6759) [!6802](https://github.com/haskell/cabal/pull/6802) [!6842](https://github.com/haskell/cabal/pull/6842) [!6872](https://github.com/haskell/cabal/pull/6872) + + - Add shrinker, so writing big non-generic product shrinkers is easier + - Add `hs-source-dirs: NL .` test-case + - Add public multilib test(s) + +- Code organization [!6599](https://github.com/haskell/cabal/pull/6599) [!6642](https://github.com/haskell/cabal/pull/6642) [!6734](https://github.com/haskell/cabal/pull/6734) [!6745](https://github.com/haskell/cabal/pull/6745) [!6746](https://github.com/haskell/cabal/pull/6746) [!6817](https://github.com/haskell/cabal/pull/6817) [!6818](https://github.com/haskell/cabal/pull/6818) [!6821](https://github.com/haskell/cabal/pull/6821) [!6867](https://github.com/haskell/cabal/pull/6867) + + - Split `Distribution.Client.Types` module + - Move cabal-testsuite code into `src/` + - Add `ProjectFlags` + - Add `NixStyleOptions` + - Internal refactorings to install command. + - Make own modules for `InstallMethod` and `OverwritePolicy` + - Make cabal-install compilable with `NoImplicitPrelude` + - Refactor shared `TargetProblem` data types into their own module. + - Template `cabal-install.cabal` using zinza + +- The grammar of most package description fields is formally documented [!6591](https://github.com/haskell/cabal/pull/6591) [!6593](https://github.com/haskell/cabal/pull/6593) [!6704](https://github.com/haskell/cabal/pull/6704) [!6766](https://github.com/haskell/cabal/pull/6766) [!6778](https://github.com/haskell/cabal/pull/6778) [!6780](https://github.com/haskell/cabal/pull/6780) [!6781](https://github.com/haskell/cabal/pull/6781) [!6791](https://github.com/haskell/cabal/pull/6791) [!6800](https://github.com/haskell/cabal/pull/6800) + + See https://cabal.readthedocs.io/en/latest/buildinfo-fields-reference.html + +- Fix ghci being launched before other sources are built. [!6923](https://github.com/haskell/cabal/pull/6923) + + Related to foreign calls to C-sources. + +- Remove `-any` and `-none` syntax for version ranges in cabal-version: 3.4 [#6589](https://github.com/haskell/cabal/issues/6589) [!6786](https://github.com/haskell/cabal/pull/6786) + + Use `>=0` (or empty in dependencies) and `<0` respectively. + +- Add pijul to known repository type [#6610](https://github.com/haskell/cabal/issues/6610) [!6684](https://github.com/haskell/cabal/pull/6684) + + Pijul is now explicitly recognized version control system. + However `cabal-install` isn't yet able to use it in + `source-repository-package`. + +- Rename Flag to CompilerFlag and PackageFlag [#6710](https://github.com/haskell/cabal/issues/6710) [!6725](https://github.com/haskell/cabal/pull/6725) + + There was three Flag's. Now they are + + - `Flag` (cli parsing) + - `PackageFlag` + - `CompilerFlag` + + This allows wild-imports without `hiding (Flag)`. + +- Accept "linux-androideabi" as an alias for Android for determining buildOS [!6301](https://github.com/haskell/cabal/pull/6301) [!6949](https://github.com/haskell/cabal/pull/6949) + + `Cabal` will able to parse `linux-androideabi` from the value of `System.Info.os`. + +- Refactor Distribution.PackageDescription module [!6855](https://github.com/haskell/cabal/pull/6855) + + Now it re-exports a collection of modules, not individual symbols. + +- Use process jobs when spawning subprocesses [!6529](https://github.com/haskell/cabal/pull/6529) [!6536](https://github.com/haskell/cabal/pull/6536) + + Many toolchain tools written for POSIX systems rely on the exec system + call. Unfortunately, it is not possible to implement exec in a + POSIX-compliant manner on Windows. In particular, the semantics of the + exec implementation provided by the widely-used msvcrt C runtime + will cause process's waiting on the exec'ing process to incorrectly + conclude that the process has successfully terminated when in fact it is + still running in another process. + + For this reason, the process library exposes the use_process_jobs + flag to use a more strict (although still not POSIX-compliant) mechanism + for tracking process completion. + This is explained in [the Process.hs comment](https://github.com/haskell/process/blob/master/System/Process.hs#L399) + + Unfortunately, job support in the process library is currently quite + broken and was only recently fixed. Consequently, we only enable job + object support for process releases >= 1.6.8. + +- Remove `AnyVersion` and `WildcardVersion` constructors from `Version` [!6742](https://github.com/haskell/cabal/pull/6742) + + This changes makes `Version` type less "syntactic", + i.e. contains less constructors for semantically same version ranges. + +- Cabal-QuickCheck package with `Arbirary` instances [#6882](https://github.com/haskell/cabal/issues/6882) [!6557](https://github.com/haskell/cabal/pull/6557) [!6891](https://github.com/haskell/cabal/pull/6891) +- Create Cabal-tree-diff package with `ToExpr` instances [!6789](https://github.com/haskell/cabal/pull/6789) +- `Cabal.Distribution.Compiler`: add `Traversable` instance for `PerCompilerFlavor` [!6763](https://github.com/haskell/cabal/pull/6763) +- Improvements to cabal-testsuite framework [!6643](https://github.com/haskell/cabal/pull/6643) +- Update copyright years to 2020 [!6644](https://github.com/haskell/cabal/pull/6644) +- Documentation updates and typo-fixes [!6504](https://github.com/haskell/cabal/pull/6504) [!6550](https://github.com/haskell/cabal/pull/6550) [!6560](https://github.com/haskell/cabal/pull/6560) [!6613](https://github.com/haskell/cabal/pull/6613) [!6660](https://github.com/haskell/cabal/pull/6660) [!6668](https://github.com/haskell/cabal/pull/6668) [!6669](https://github.com/haskell/cabal/pull/6669) [!6686](https://github.com/haskell/cabal/pull/6686) [!6697](https://github.com/haskell/cabal/pull/6697) [!6761](https://github.com/haskell/cabal/pull/6761) [!6928](https://github.com/haskell/cabal/pull/6928) [!6940](https://github.com/haskell/cabal/pull/6940) [!6951](https://github.com/haskell/cabal/pull/6951) [!6953](https://github.com/haskell/cabal/pull/6953) [!6954](https://github.com/haskell/cabal/pull/6954) +- Flag assignment parsing refactorings [#6853](https://github.com/haskell/cabal/issues/6853) [!6854](https://github.com/haskell/cabal/pull/6854) [!6858](https://github.com/haskell/cabal/pull/6858) +- Add foo:bar syntax to mixins [#6281](https://github.com/haskell/cabal/issues/6281) [!6912](https://github.com/haskell/cabal/pull/6912) +- default-language field is optional in cabal-version: 3.4 [#6288](https://github.com/haskell/cabal/issues/6288) [!6924](https://github.com/haskell/cabal/pull/6924) [!6926](https://github.com/haskell/cabal/pull/6926) +- Split `KnownRepoType` out of `RepoType` [#6432](https://github.com/haskell/cabal/issues/6432) [!6612](https://github.com/haskell/cabal/pull/6612) +- Include component name in unit-id [#6485](https://github.com/haskell/cabal/issues/6485) [!6547](https://github.com/haskell/cabal/pull/6547) +- Change 'optional-packages' default to empty, when cabal.project is mising. [#4797](https://github.com/haskell/cabal/issues/4797) [#6739](https://github.com/haskell/cabal/issues/6739) [!6740](https://github.com/haskell/cabal/pull/6740) +- Fix rpmvercmp (trailing non-digit characters) [#6805](https://github.com/haskell/cabal/issues/6805) [!6808](https://github.com/haskell/cabal/pull/6808) +- other changes [!6556](https://github.com/haskell/cabal/pull/6556) [!6598](https://github.com/haskell/cabal/pull/6598) [!6910](https://github.com/haskell/cabal/pull/6910) +- Package description parser benchmark [!6594](https://github.com/haskell/cabal/pull/6594) +- Add `licenceIsFsfLibre` [!6878](https://github.com/haskell/cabal/pull/6878) +- Add `+stderr` modifier to `Verbosity` [!6929](https://github.com/haskell/cabal/pull/6929) +- Mark public-libs as experimental feature [!6605](https://github.com/haskell/cabal/pull/6605) +- Add rewriteFileLBS and use it to write setup wrapper [!6574](https://github.com/haskell/cabal/pull/6574) +- Add SPDX License List 3.9 [#6879](https://github.com/haskell/cabal/issues/6879) [!6662](https://github.com/haskell/cabal/pull/6662) [!6944](https://github.com/haskell/cabal/pull/6944) +- Change specVersion to have CabalSpecVersion type [!6653](https://github.com/haskell/cabal/pull/6653) +- Better UTF8 handling, parsed `ShortText` is now valid. [!6588](https://github.com/haskell/cabal/pull/6588) +- More checks in version range parser [!6586](https://github.com/haskell/cabal/pull/6586) +- Require cabal-versions `>=1.25` to be exact [!6654](https://github.com/haskell/cabal/pull/6654) +- Add and use weeder [!6779](https://github.com/haskell/cabal/pull/6779) [!6790](https://github.com/haskell/cabal/pull/6790) diff --git a/release-notes/cabal-install-3.4.0.0.md b/release-notes/cabal-install-3.4.0.0.md new file mode 100644 index 00000000000..ad7f2c49658 --- /dev/null +++ b/release-notes/cabal-install-3.4.0.0.md @@ -0,0 +1,235 @@ +### Significant changes + +- Add cabal-version: 3.4 [!6663](https://github.com/haskell/cabal/pull/6663) + + See various changes in https://cabal.readthedocs.io/en/latest/file-format-changelog.html#cabal-version-3-4 + +- Support GHC-8.12 [#6903](https://github.com/haskell/cabal/issues/6903) [#6904](https://github.com/haskell/cabal/issues/6904) [#6905](https://github.com/haskell/cabal/issues/6905) [!6545](https://github.com/haskell/cabal/pull/6545) [!6552](https://github.com/haskell/cabal/pull/6552) [!6553](https://github.com/haskell/cabal/pull/6553) [!6563](https://github.com/haskell/cabal/pull/6563) [!6735](https://github.com/haskell/cabal/pull/6735) [!6844](https://github.com/haskell/cabal/pull/6844) [!6848](https://github.com/haskell/cabal/pull/6848) [!6865](https://github.com/haskell/cabal/pull/6865) [!6908](https://github.com/haskell/cabal/pull/6908) [!6947](https://github.com/haskell/cabal/pull/6947) + + - Support for `-this-package-key` deprecation + - Use process `createPipe` + - Add support for WINIO to Cabal + - Adopt to simplfied subsumption changes + + There are no magical `IO = WithCallStack Prelude.IO` alias in Cabal, + as it is hard to get working with GHC-8.12's simplified subsumption. + +- Treat `pkg:sublib` dependency syntax as is in `cabal-version: 3.4` [#6083](https://github.com/haskell/cabal/issues/6083) [!6893](https://github.com/haskell/cabal/pull/6893) [!6907](https://github.com/haskell/cabal/pull/6907) + + In `cabal-version: 3.4` cabal files the dependency definition + + ```cabal + build-depends: somesublib + ``` + + is not using in-package sublibraries. You have to be explicit and write + + ```cabal + build-depends: thispkg:somesublib + ``` + + This fixes an issue, where it was impossible to refer to extenral + library, if you had sublibrary of the same name. + +- Add active-repositories configuration [#6819](https://github.com/haskell/cabal/issues/6819) [!6724](https://github.com/haskell/cabal/pull/6724) [!6868](https://github.com/haskell/cabal/pull/6868) + + New `active-repositories` `cabal.project` fields allows + specifying an order and ways various package repositories are combined. + + The active `active-repositories` is saved in `cabal.project.freeze`. + +- Various `cabal init` improvements [#6150](https://github.com/haskell/cabal/issues/6150) [#6675](https://github.com/haskell/cabal/issues/6675) [!6603](https://github.com/haskell/cabal/pull/6603) [!6607](https://github.com/haskell/cabal/pull/6607) [!6619](https://github.com/haskell/cabal/pull/6619) [!6632](https://github.com/haskell/cabal/pull/6632) [!6641](https://github.com/haskell/cabal/pull/6641) [!6650](https://github.com/haskell/cabal/pull/6650) [!6661](https://github.com/haskell/cabal/pull/6661) [!6676](https://github.com/haskell/cabal/pull/6676) [!6677](https://github.com/haskell/cabal/pull/6677) [!6678](https://github.com/haskell/cabal/pull/6678) [!6690](https://github.com/haskell/cabal/pull/6690) [!6705](https://github.com/haskell/cabal/pull/6705) [!6723](https://github.com/haskell/cabal/pull/6723) + + - Default to `cabal-version: 2.4` + - `cabal` doesn't force a default license choice anymore + - Licenses are always asked using SPDX expression + - Fix an infinite loop when invalid license was passed on command line + - `Setup.hs` is not written anymore + - Default to --source-dir=src and --application-dir=app + - Add `FileCreators.generateCabalFile` unit tests. + - Default cabal init application-dir to `app`, and source-dir to `src`. + - Default to SPDX.NONE license in cabal init interactive mode. + +- Rework `v2-sdist` command [#2940](https://github.com/haskell/cabal/issues/2940) [#5813](https://github.com/haskell/cabal/issues/5813) [#6514](https://github.com/haskell/cabal/issues/6514) [#6611](https://github.com/haskell/cabal/issues/6611) [#6635](https://github.com/haskell/cabal/issues/6635) [!6454](https://github.com/haskell/cabal/pull/6454) [!6637](https://github.com/haskell/cabal/pull/6637) [!6640](https://github.com/haskell/cabal/pull/6640) [!6660](https://github.com/haskell/cabal/pull/6660) [!6666](https://github.com/haskell/cabal/pull/6666) [!6884](https://github.com/haskell/cabal/pull/6884) [!6916](https://github.com/haskell/cabal/pull/6916) + + `v2-sdist` marks all files as readonly in resulting tarballs. + + The #2940 "cabal sdist should touch preprocessed .hs files" issue + is fixed by virtue of not doing any preprocessing anymore. + It's responsibility of packager. + + The #6611 "v2-sdist includes a file twice in the tarball " issue + is fixed as we don't consider only one file list, + not two separate executable and ordinary file lists. + + The #6514 "unpack doesn't preserve (executable) permissions" issue + is partially resolved, as there shouldn't be executable permissions + in the tar files. + + The rationale for above simplification is simple. The only file + Cabal machinery would run is `configure` script. These + are run with explicit `sh` program. For package internal scripts, + maintainers should also use interpreters explicitly as well. + Scripts with shebangs are not executable on Windows. + + The `v1-sdist` command is removed, as its functionality is completely + superseded by `v2-sdist`. + +- `source-repository-package` directories aren't local [#5586](https://github.com/haskell/cabal/issues/5586) [!6915](https://github.com/haskell/cabal/pull/6915) [!6917](https://github.com/haskell/cabal/pull/6917) + + Concretely these means that compiled `source-repository-package` entries + used in different projects are stored in the global nix-style store. + +- Add list-bin command [#6807](https://github.com/haskell/cabal/issues/6807) [!6931](https://github.com/haskell/cabal/pull/6931) + + `cabal list-bin executable-component` tells the path to the build artifact. + +- Remove sandboxes [#6445](https://github.com/haskell/cabal/issues/6445) [!6747](https://github.com/haskell/cabal/pull/6747) + + Sandbox functionality is remove in favour of now default nix-style builds. + +- `cabal list` accepts regular expression [#4267](https://github.com/haskell/cabal/issues/4267) [#6683](https://github.com/haskell/cabal/issues/6683) [!6618](https://github.com/haskell/cabal/pull/6618) [!6806](https://github.com/haskell/cabal/pull/6806) +- More rich `index-state` syntax. `v2-freeze` saves `index-state`. [#6728](https://github.com/haskell/cabal/issues/6728) [!6581](https://github.com/haskell/cabal/pull/6581) [!6591](https://github.com/haskell/cabal/pull/6591) [!6596](https://github.com/haskell/cabal/pull/6596) [!6597](https://github.com/haskell/cabal/pull/6597) [!6682](https://github.com/haskell/cabal/pull/6682) [!6733](https://github.com/haskell/cabal/pull/6733) +### Other changes + +- Tests additions [#6409](https://github.com/haskell/cabal/issues/6409) [!6753](https://github.com/haskell/cabal/pull/6753) [!6759](https://github.com/haskell/cabal/pull/6759) [!6802](https://github.com/haskell/cabal/pull/6802) [!6842](https://github.com/haskell/cabal/pull/6842) [!6872](https://github.com/haskell/cabal/pull/6872) + + - Add shrinker, so writing big non-generic product shrinkers is easier + - Add `hs-source-dirs: NL .` test-case + - Add public multilib test(s) + +- Code organization [!6599](https://github.com/haskell/cabal/pull/6599) [!6642](https://github.com/haskell/cabal/pull/6642) [!6734](https://github.com/haskell/cabal/pull/6734) [!6745](https://github.com/haskell/cabal/pull/6745) [!6746](https://github.com/haskell/cabal/pull/6746) [!6817](https://github.com/haskell/cabal/pull/6817) [!6818](https://github.com/haskell/cabal/pull/6818) [!6821](https://github.com/haskell/cabal/pull/6821) [!6867](https://github.com/haskell/cabal/pull/6867) + + - Split `Distribution.Client.Types` module + - Move cabal-testsuite code into `src/` + - Add `ProjectFlags` + - Add `NixStyleOptions` + - Internal refactorings to install command. + - Make own modules for `InstallMethod` and `OverwritePolicy` + - Make cabal-install compilable with `NoImplicitPrelude` + - Refactor shared `TargetProblem` data types into their own module. + - Template `cabal-install.cabal` using zinza + +- The grammar of most package description fields is formally documented [!6591](https://github.com/haskell/cabal/pull/6591) [!6593](https://github.com/haskell/cabal/pull/6593) [!6704](https://github.com/haskell/cabal/pull/6704) [!6766](https://github.com/haskell/cabal/pull/6766) [!6778](https://github.com/haskell/cabal/pull/6778) [!6780](https://github.com/haskell/cabal/pull/6780) [!6781](https://github.com/haskell/cabal/pull/6781) [!6791](https://github.com/haskell/cabal/pull/6791) [!6800](https://github.com/haskell/cabal/pull/6800) + + See https://cabal.readthedocs.io/en/latest/buildinfo-fields-reference.html + +- Add -fexpose-all-unfoldings to parsec and Cabal in release project [!6708](https://github.com/haskell/cabal/pull/6708) + + This makes parser faster with acceptable code-size increase. + +- Fix ghci being launched before other sources are built. [!6923](https://github.com/haskell/cabal/pull/6923) + + Related to foreign calls to C-sources. + +- Use default install directory if not specified [#5973](https://github.com/haskell/cabal/issues/5973) [!6624](https://github.com/haskell/cabal/pull/6624) + + Cabal 3.0.0.0 added the --installdir option to specify the location that + binaries should be installed in. Running a cabal user-config update would + populate the config file with the default value, but the cabal install program + would error if it wasn't set. This change uses the default value that would be + written to the config if its unset, and outputs a warning. + +- Update GHC environment location [#6565](https://github.com/haskell/cabal/issues/6565) [!6822](https://github.com/haskell/cabal/pull/6822) + + cabal-install currently assumes that the GHC environment files are always located in `$HOME/.ghc/`. + However, GHC itself doesn't query the home directory directly. + Instead, it uses `getAppUserDataDirectory "ghc"` which happens to coincide with `$HOME/.ghc`/ on UNIX systems. + On Windows, however, GHC ends up looking in `%APPDATA%/ghc/`. + +- Remove `-any` and `-none` syntax for version ranges in cabal-version: 3.4 [#6589](https://github.com/haskell/cabal/issues/6589) [!6786](https://github.com/haskell/cabal/pull/6786) + + Use `>=0` (or empty in dependencies) and `<0` respectively. + +- Add pijul to known repository type [#6610](https://github.com/haskell/cabal/issues/6610) [!6684](https://github.com/haskell/cabal/pull/6684) + + Pijul is now explicitly recognized version control system. + However `cabal-install` isn't yet able to use it in + `source-repository-package`. + +- Remove upgrade, uninstall and win32selfupgrade commands [#6691](https://github.com/haskell/cabal/issues/6691) [!6707](https://github.com/haskell/cabal/pull/6707) + + This commands were not implemented or are special purpose. + The removal of `win32selfupgrade` might break self upgrade on windows, + when `cabal-install` tries to rewrite the binary of itself. + This shouldn't be a problem when symlinking is used. + +- Remove local-repo [#6729](https://github.com/haskell/cabal/issues/6729) [!6730](https://github.com/haskell/cabal/pull/6730) + + This functionality was mainly used by removed sandboxes. + `file+noindex` repositories are better variant for local package repositories. + +- Add support for multiple public libraries to the solver [#6039](https://github.com/haskell/cabal/issues/6039) [!6047](https://github.com/haskell/cabal/pull/6047) [!6812](https://github.com/haskell/cabal/pull/6812) [!6836](https://github.com/haskell/cabal/pull/6836) + + cabal-install can now take into account the presence and visibility of + sublibraries when solving. This also means that, when using cabal-install, + multiple public libraries support is extended to GHCs older than 8.8. + The support is limited to source packages for now. + +- Remove text type-class [!6764](https://github.com/haskell/cabal/pull/6764) [!6777](https://github.com/haskell/cabal/pull/6777) [!6784](https://github.com/haskell/cabal/pull/6784) [!6785](https://github.com/haskell/cabal/pull/6785) [!6793](https://github.com/haskell/cabal/pull/6793) [!6794](https://github.com/haskell/cabal/pull/6794) + + `Text` type-class was removed from `Cabal`, but it still lived in `cabal-install`. + Now it is finally removed. + `cabal-install` is still using `ReadP` parsers for various things though. + +- Windows install symlinks [!5684](https://github.com/haskell/cabal/pull/5684) [!6506](https://github.com/haskell/cabal/pull/6506) [!6519](https://github.com/haskell/cabal/pull/6519) + + `cabal-install` will try to infer whether symlinking is supported on Windows, + and make symlinks in `install`. Otherwise it will fallback to copying files. + Either way can be forced with `--install-method`. + +- Use process jobs when spawning subprocesses [!6529](https://github.com/haskell/cabal/pull/6529) [!6536](https://github.com/haskell/cabal/pull/6536) + + Many toolchain tools written for POSIX systems rely on the exec system + call. Unfortunately, it is not possible to implement exec in a + POSIX-compliant manner on Windows. In particular, the semantics of the + exec implementation provided by the widely-used msvcrt C runtime + will cause process's waiting on the exec'ing process to incorrectly + conclude that the process has successfully terminated when in fact it is + still running in another process. + + For this reason, the process library exposes the use_process_jobs + flag to use a more strict (although still not POSIX-compliant) mechanism + for tracking process completion. + This is explained in [the Process.hs comment](https://github.com/haskell/process/blob/master/System/Process.hs#L399) + + Unfortunately, job support in the process library is currently quite + broken and was only recently fixed. Consequently, we only enable job + object support for process releases >= 1.6.8. + +- Change `BuildReports` parse/pretty to use FieldGrammar framework [!6783](https://github.com/haskell/cabal/pull/6783) +- Tell users about `cabal.project.local~` in `cabal v2-configure` [!6877](https://github.com/haskell/cabal/pull/6877) +- Improvements to cabal-testsuite framework [!6643](https://github.com/haskell/cabal/pull/6643) +- Refactor cabalInstallVersions, add make doctest-cli [!6720](https://github.com/haskell/cabal/pull/6720) +- Update copyright years to 2020 [!6644](https://github.com/haskell/cabal/pull/6644) +- Documentation updates and typo-fixes [!6504](https://github.com/haskell/cabal/pull/6504) [!6550](https://github.com/haskell/cabal/pull/6550) [!6560](https://github.com/haskell/cabal/pull/6560) [!6613](https://github.com/haskell/cabal/pull/6613) [!6660](https://github.com/haskell/cabal/pull/6660) [!6668](https://github.com/haskell/cabal/pull/6668) [!6669](https://github.com/haskell/cabal/pull/6669) [!6686](https://github.com/haskell/cabal/pull/6686) [!6697](https://github.com/haskell/cabal/pull/6697) [!6761](https://github.com/haskell/cabal/pull/6761) [!6928](https://github.com/haskell/cabal/pull/6928) [!6940](https://github.com/haskell/cabal/pull/6940) [!6951](https://github.com/haskell/cabal/pull/6951) [!6953](https://github.com/haskell/cabal/pull/6953) [!6954](https://github.com/haskell/cabal/pull/6954) +- Flag assignment parsing refactorings [#6853](https://github.com/haskell/cabal/issues/6853) [!6854](https://github.com/haskell/cabal/pull/6854) [!6858](https://github.com/haskell/cabal/pull/6858) +- Remove new- command from `--help` output (there are v2-) [!6930](https://github.com/haskell/cabal/pull/6930) +- Installing (copy or symlink) executable message prints destination. [!6582](https://github.com/haskell/cabal/pull/6582) [!6590](https://github.com/haskell/cabal/pull/6590) +- Check sha256 if `#sha256=...` fragments are given to URIs [!6576](https://github.com/haskell/cabal/pull/6576) +- all extra-source-files are change-tracked [#4746](https://github.com/haskell/cabal/issues/4746) [!6889](https://github.com/haskell/cabal/pull/6889) +- `upload --help` now includes `password-command` as a config file option (#5224) [#5224](https://github.com/haskell/cabal/issues/5224) [!6313](https://github.com/haskell/cabal/pull/6313) [!6609](https://github.com/haskell/cabal/pull/6609) [!6680](https://github.com/haskell/cabal/pull/6680) +- Use PrettyField to format cabal file in `cabal init` [#5555](https://github.com/haskell/cabal/issues/5555) [!6718](https://github.com/haskell/cabal/pull/6718) +- Default to 'NoReports' for remote build reporting [#6210](https://github.com/haskell/cabal/issues/6210) [!6625](https://github.com/haskell/cabal/pull/6625) +- Add foo:bar syntax to mixins [#6281](https://github.com/haskell/cabal/issues/6281) [!6912](https://github.com/haskell/cabal/pull/6912) +- default-language field is optional in cabal-version: 3.4 [#6288](https://github.com/haskell/cabal/issues/6288) [!6924](https://github.com/haskell/cabal/pull/6924) [!6926](https://github.com/haskell/cabal/pull/6926) +- Allow cabal v2-install pkgname:exename [#6369](https://github.com/haskell/cabal/issues/6369) [!6576](https://github.com/haskell/cabal/pull/6576) +- Allow cabal v2-install http:// [#6393](https://github.com/haskell/cabal/issues/6393) [!6576](https://github.com/haskell/cabal/pull/6576) +- Include component name in unit-id [#6485](https://github.com/haskell/cabal/issues/6485) [!6547](https://github.com/haskell/cabal/pull/6547) +- cabal v2-install prints copy/symlink destination [#6575](https://github.com/haskell/cabal/issues/6575) [!6582](https://github.com/haskell/cabal/pull/6582) [!6890](https://github.com/haskell/cabal/pull/6890) +- Prepend hs-source-dir to match-component, fixes `cabal repl file` [#6622](https://github.com/haskell/cabal/issues/6622) [!6623](https://github.com/haskell/cabal/pull/6623) [!6826](https://github.com/haskell/cabal/pull/6826) [!6875](https://github.com/haskell/cabal/pull/6875) +- Change 'optional-packages' default to empty, when cabal.project is mising. [#4797](https://github.com/haskell/cabal/issues/4797) [#6739](https://github.com/haskell/cabal/issues/6739) [!6740](https://github.com/haskell/cabal/pull/6740) +- v2-update reports new index-state [#6804](https://github.com/haskell/cabal/issues/6804) [!6810](https://github.com/haskell/cabal/pull/6810) +- Fix rpmvercmp (trailing non-digit characters) [#6805](https://github.com/haskell/cabal/issues/6805) [!6808](https://github.com/haskell/cabal/pull/6808) +- Add `-z` / `--ignore-project` flag to `cabal v2-update` [#6809](https://github.com/haskell/cabal/issues/6809) [!6814](https://github.com/haskell/cabal/pull/6814) +- Adjust message indicating `--lib` is likely desired [#6856](https://github.com/haskell/cabal/issues/6856) [!6857](https://github.com/haskell/cabal/pull/6857) +- cxx-sources, asm-sources and cmm-sources are change-tracked [#6869](https://github.com/haskell/cabal/issues/6869) [!6870](https://github.com/haskell/cabal/pull/6870) +- Change manpage command to man [!6548](https://github.com/haskell/cabal/pull/6548) +- other changes [!6556](https://github.com/haskell/cabal/pull/6556) [!6598](https://github.com/haskell/cabal/pull/6598) [!6910](https://github.com/haskell/cabal/pull/6910) +- Package description parser benchmark [!6594](https://github.com/haskell/cabal/pull/6594) +- Add `+stderr` modifier to `Verbosity` [!6929](https://github.com/haskell/cabal/pull/6929) +- Mark public-libs as experimental feature [!6605](https://github.com/haskell/cabal/pull/6605) +- Add SPDX License List 3.9 [#6879](https://github.com/haskell/cabal/issues/6879) [!6662](https://github.com/haskell/cabal/pull/6662) [!6944](https://github.com/haskell/cabal/pull/6944) +- More checks in version range parser [!6586](https://github.com/haskell/cabal/pull/6586) +- Require cabal-versions `>=1.25` to be exact [!6654](https://github.com/haskell/cabal/pull/6654) +- Add and use weeder [!6779](https://github.com/haskell/cabal/pull/6779) [!6790](https://github.com/haskell/cabal/pull/6790)