Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update changelog for 3.4 #6950

Merged
merged 3 commits into from
Jul 13, 2020
Merged

Update changelog for 3.4 #6950

merged 3 commits into from
Jul 13, 2020

Conversation

phadej
Copy link
Collaborator

@phadej phadej commented Jul 9, 2020

We forget to update changelog as we go (especially myself).

@phadej phadej added this to the 3.4.0.0 milestone Jul 10, 2020
@phadej
Copy link
Collaborator Author

phadej commented Jul 10, 2020

Current state of changelog

Release notes for cabal-install

Significant changes

  • Rework v2-sdist command #2940 #5813 #6514 #6611 #6635 #6454 #6618 #6637 #6640 #6660 #6666 #6681 #6884 #6916

    v2-sdist marks all files as readonly in resulting tarballs.

    The cabal sdist should touch preprocessed .hs files #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 v2-sdist includes a file twice in the tarball #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 unpack doesn't preserve (executable) permissions #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.

  • Add cabal-version: 3.4 #6663

    See various changes in https://cabal.readthedocs.io/en/latest/file-format-changelog.html#cabal-version-3-4

  • Support GHC-8.12 #6903 #6904 #6905 #6545 #6552 #6553 #6563 #6735 #6844 #6848 #6865 #6908 #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.
    Accept "linux-androideabi" as an alias for Android

  • source-repository-package directories aren't local #5586 #6915 #6917

    Concretely these means that compiled source-repository-package entries
    used in different projects are stored in the global nix-style store.

  • Treat pkg:sublib dependency syntax as is in cabal-version: 3.4 #6083 #6893 #6907

    In cabal-version: 3.4 cabal files the dependency definition

    build-depends: somesublib

    is not using in-package sublibraries. You have to be explicit and write

    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 #6724 #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 #6675 #6603 #6607 #6619 #6632 #6641 #6650 #6661 #6676 #6677 #6678 #6690 #6705 #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.

    TODO: complete the description

  • Add list-bin command #6807 #6931

    cabal list-bin executable-component tells the path to the build artifact.

  • Remove sandboxes #6445 #6747

    I should probably say something

  • cabal list accepts regular expression #4267 #6683 #6618 #6806

  • More rich index-state syntax. v2-freeze saves index-state. #6728 #6581 #6591 #6596 #6597 #6682 #6733

Other changes

  • Tests additions #6409 #6753 #6759 #6802 #6842 #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 #6642 #6734 #6745 #6746 #6817 #6818 #6821 #6867

    • Split D.Client.Types module
    • Move cabal-testsuite code into src/
    • Add ProjectFlags
    • Make 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
  • Grammar / Described #6591 #6593 #6704 #6766 #6778 #6780 #6781 #6791 #6800

    TBW

  • Documentation updates and typo-fixes #6504 #6550 #6560 #6613 #6660 #6668 #6669 #6686 #6697 #6761 #6928 #6940

    TODO: Higlight larged changes

  • Add -fexpose-all-unfoldings to parsec and Cabal in release project #6708

    This makes parser faster with acceptable code-size increase.

  • Fix ghci being launched before other sources are built. #6923

    TBW. Related to foreign calls to C-sources.

  • Use default install directory if not specified #5973 #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 #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 #6786

    Use >=0 (or empty in dependencies) and <0 respectively.

  • Add pijul to known repository type #6610 #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 #6707

    Remove unimplemented commands. TBW note about win32selfupgrade

  • Remove local-repo #6729 #6730

    This functionality was mainly used by removed sandboxes.
    file+noindex repositories are better variant for local package repositories.

  • Parser benchmark #6594

    TBW... (easier to assert parser changes)

  • Add support for multiple public libraries to the solver #6039 #6047 #6812 #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 #6777 #6784 #6785 #6793 #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 #6506 #6519

    TBW

  • Use process jobs when spawning subprocesses #6529 #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

    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.

  • Backported to 3.2 #5918 #6258 #6426 #6428 #6433 #6436 #6439 #6447 #6448 #6450 #6455 #6456 #6457 #6463 #6464 #6469 #6473 #6476 #6496 #6498 #6499 #6501 #6502 #6518 #6535 #6538 #6540 #6541 #6546

  • Change BuildReports parse/pretty to use FieldGrammar framework #6783

  • Tell users about cabal.project.local~ in cabal v2-configure #6877

  • Improvements to cabal-testsuite framework #6643

  • Refactor cabalInstallVersions, add make doctest-cli #6720

  • Changelog entries #6634 #6950

  • CI tweaks #6500 #6945 #6494 #6518 #6559 #6564 #6571 #6577 #6578 #6579 #6585 #6617 #6636 #6709 #6827 #6831 #6900 #6902 #6914 #6946

  • Update copyright years to 2020 #6644

  • Flag assignment parsing refactorings #6853 #6854 #6858

  • Remove new- command from --help output (there are v2-) #6930

  • Installing (copy or symlink) executable message prints destination. #6582 #6590

  • Check sha256 if #sha256=... fragments are given to URIs #6576

  • all extra-source-files are change-tracked #4746 #6889

  • upload --help now includes password-command as a config file option (cabal.config should have a field for password-command. #5224) #5224 #6313 #6609 #6680

  • Use PrettyField to format cabal file in cabal init #5555 #6718

  • Default to 'NoReports' for remote build reporting #6210 #6625

  • Add foo:bar syntax to mixins #6281 #6912

  • default-language field is optional in cabal-version: 3.4 #6288 #6924 #6926

  • Allow cabal v2-install pkgname:exename #6369 #6576

  • Allow cabal v2-install http:// #6393 #6576

  • Include component name in unit-id #6485 #6547

  • cabal v2-install prints copy/symlink destination #6575 #6582 #6890

  • Prepend hs-source-dir to match-component, fixes cabal repl file #6622 #6623 #6826 #6875

  • Change 'optional-packages' default to empty, when cabal.project is mising. #4797 #6739 #6740

  • v2-update reports new index-state #6804 #6810

  • Fix rpmvercmp (trailing non-digit characters) #6805 #6808

  • Add -z / --ignore-project flag to cabal v2-update #6809 #6814

  • Adjust message indicating --lib is likely desired #6856 #6857

  • cxx-sources, asm-sources and cmm-sources are change-tracked #6869 #6870

  • Change manpage command to man #6548

  • other changes #6556 #6598 #6910

  • Add +stderr modifier to verbosity #6929

  • Mark public-libs as experimental feature #6605

  • Add SPDX License List 3.9 #6879 #6662 #6944

  • More checks in version range parser #6586

  • Require cabal-versions >=1.25 to be exact #6654

  • Add / use weeder #6779 #6790

Release notes for Cabal library

Significant changes

  • Add cabal-version: 3.4 #6663

    See various changes in https://cabal.readthedocs.io/en/latest/file-format-changelog.html#cabal-version-3-4

  • Support GHC-8.12 #6903 #6904 #6905 #6545 #6552 #6553 #6563 #6735 #6844 #6848 #6865 #6908 #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.
    Accept "linux-androideabi" as an alias for Android

  • Treat pkg:sublib dependency syntax as is in cabal-version: 3.4 #6083 #6893 #6907

    In cabal-version: 3.4 cabal files the dependency definition

    build-depends: somesublib

    is not using in-package sublibraries. You have to be explicit and write

    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 #6894 #6768 #6798 #6895 #6896 #6897 #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 #6753 #6759 #6802 #6842 #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 #6642 #6734 #6745 #6746 #6817 #6818 #6821 #6867

    • Split D.Client.Types module
    • Move cabal-testsuite code into src/
    • Add ProjectFlags
    • Make 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
  • Grammar / Described #6591 #6593 #6704 #6766 #6778 #6780 #6781 #6791 #6800

    TBW

  • Documentation updates and typo-fixes #6504 #6550 #6560 #6613 #6660 #6668 #6669 #6686 #6697 #6761 #6928 #6940

    TODO: Higlight larged changes

  • Fix ghci being launched before other sources are built. #6923

    TBW. Related to foreign calls to C-sources.

  • Remove -any and -none syntax for version ranges in cabal-version: 3.4 #6589 #6786

    Use >=0 (or empty in dependencies) and <0 respectively.

  • Add pijul to known repository type #6610 #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 #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 #6949

    Cabal will able to parse linux-androideabi from the value of System.Info.os.

  • Parser benchmark #6594

    TBW... (easier to assert parser changes)

  • Refactor Distribution.PackageDescription module #6855

    Now it re-exports a collection of modules, not individual symbols.

  • Use process jobs when spawning subprocesses #6529 #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

    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

    Make Version type less "syntactic", i.e. contains less constructors
    for semantically same version ranges.

  • Cabal-QuickCheck package with Arbirary instances #6882 #6557 #6891

  • Create Cabal-tree-diff package with ToExpr instances #6789

  • Cabal.Distribution.Compiler: add Traversable instance for PerCompilerFlavor #6763

  • Backported to 3.2 #5918 #6258 #6426 #6428 #6433 #6436 #6439 #6447 #6448 #6450 #6455 #6456 #6457 #6463 #6464 #6469 #6473 #6476 #6496 #6498 #6499 #6501 #6502 #6518 #6535 #6538 #6540 #6541 #6546

  • Improvements to cabal-testsuite framework #6643

  • Changelog entries #6634 #6950

  • CI tweaks #6500 #6945 #6494 #6518 #6559 #6564 #6571 #6577 #6578 #6579 #6585 #6617 #6636 #6709 #6827 #6831 #6900 #6902 #6914 #6946

  • Update copyright years to 2020 #6644

  • Flag assignment parsing refactorings #6853 #6854 #6858

  • Add foo:bar syntax to mixins #6281 #6912

  • default-language field is optional in cabal-version: 3.4 #6288 #6924 #6926

  • Split KnownRepoType out of RepoType #6432 #6612

  • Include component name in unit-id #6485 #6547

  • Change 'optional-packages' default to empty, when cabal.project is mising. #4797 #6739 #6740

  • v2-update reports new index-state #6804 #6810

  • Fix rpmvercmp (trailing non-digit characters) #6805 #6808

  • other changes #6556 #6598 #6910

  • Add licenceIsFsfLibre #6878

  • Add +stderr modifier to verbosity #6929

  • Mark public-libs as experimental feature #6605

  • Add rewriteFileLBS and use it to write setup wrapper #6574

  • Add SPDX License List 3.9 #6879 #6662 #6944

  • Change specVersion to have CabalSpecVersion type #6653

  • Better UTF8 handling, parsed ShortText should be valid now #6588

  • More checks in version range parser #6586

  • Require cabal-versions >=1.25 to be exact #6654

  • Add / use weeder #6779 #6790

@phadej phadej modified the milestones: 3.4.0.0, 3.4.0.0-rc1 Jul 13, 2020
@phadej phadej marked this pull request as ready for review July 13, 2020 12:11
@phadej phadej merged commit 3d4fdec into haskell:master Jul 13, 2020
@phadej phadej deleted the changelog-3.4 branch July 13, 2020 14:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant