streamly icon indicating copy to clipboard operation
streamly copied to clipboard

Release checklist 0.10.0

Open adithyaov opened this issue 7 months ago • 2 comments

Release Checklist

  • [x] Check if any critical pending bugs or issues are to be included

  • [x] If this is a major release check if any previously deprecated features are to be removed in this release.

  • [x] Check pre-release APIs to be exposed, especially from streamly-examples

  • [x] PVP is adhered to, additionally do not change pre-release APIs in a minor release

  • [ ] Documentation:

    • [x] Documentation is updated.
    • [x] Check if all the links in the docs are stable.
      • [x] External links might point to the master branch of a few repositories. Pin them to a specific version that works with the current release.
      • [x] You can run rg '/blob/' and rg '/tree/' to search for github links.
      • [x] For example, links that point to streamly-examples point to its master branch. Instead, while making the release we need to pin the links to a specific revision that works with the latest commit of the current release.
      • [x] Ideally, the distribution process should automatically replace these with current stable references.
    • [x] The markdown documentation files have no broken links. See the section about checking for broken links for more info.
    • [x] Haddock docs are consistent with the changes in the release
    • [ ] Tutorial has been updated for new changes
    • [ ] Documents in the docs directory are consistent with new changes
    • [x] All combinators have time and space complexity annotations
    • [x] All combinators have since annotation
    • [x] Modules that were renamed or APIs that moved to other modules should be marked as "since" the current release.
    • [x] Check all released modules to ensure that they do not have any leftover Internal or Pre-release annotations.
    • [x] Unreleased combinators should be marked with Pre-release or Internal annotations
    • [ ] Streamly homepage is updated with the release docs
      • [ ] FileSystem.Event.Windows/Darwin modules require special handling
  • [ ] Build and Test:

    • [x] All CIs are green
    • [x] Run tests using bin/test.sh to test with memory restrictions
    • [x] Manually build and test for all flags (esp. dev flag) not covered by CIs
    • [ ] Test prime GHC version with -O0 and -O1
  • [ ] Benchmarks:

    • [ ] Check regressions from previous release
    • [x] Run benchmarks with large stream size (bench-runner --long --quick) to check for space leaks and to ensure constant memory usage for streaming operations.
    • [ ] Run benchmarks with dev flag on. Some fileio benchmarks are disabled in regular runs.
    • [ ] Check comparative benchmarks using streaming-benchmarks
  • [ ] Dependencies:

    • [x] Make sure all dependency bounds can use latest versions
    • [x] Update stack.yaml to latest stable resolver, cleanup extra-deps
    • [x] Make sure fusion-plugin is up to date and uploaded
    • [ ] Check the dependency footprint of the library. See Generating Dependency Graph section.
  • [ ] Dependent Packages:

    • [x] Update streamly-examples to make sure it runs with the latest release.
    • [ ] Check the performance of examples where applicable
    • [ ] Update:
      • [ ] streamly-bytestring
      • [ ] streamly-process
      • [ ] streamly-lz4
  • [x] Update Package Metadata:

    • [x] Make sure the description in cabal file is in sync with the docs
    • [x] Make sure CI configs include last three major releases of GHC in CI testing.
    • [x] Update GHC tested-with field
    • [x] Update docs/Compiling.md with the distributions tested with
    • [x] Any docs linked inside haddock/cabal/changelog or any other such file should go in the extra-doc-files section instead of extra-source-files. Otherwise hackage shows the links as broken.
    • [x] Make sure any additional files are added to extra-source-files in cabal file. Artifacts required for build, test, benchmarks, docs, licenses should be packaged. Build environment customization may or may not be packaged.
  • [x] Copyrights and Contibutors

    • [x] Make sure contributors to the release are listed in docs/CONTRIBUTORS.md under the current release title.
    • [x] Make sure any third party code included in the release has been listed in docs/Credits.md and the license is added to the repo.
  • [ ] Update changelog & Version:

    • [x] Find API changes using ./packdiff streamly ver1 streamly ver2 and record them in docs/User/ProjectRelated/ApiChangelogs/ver1-ver2.txt.
    • [ ] Make sure all the bug fixes being included in this release are marked with a target release on github. So that users can search by release if they want.
    • [x] Make sure the package version in configure.ac has the correct release version, else set the version correctly and run autoreconf. This might need to be done for a minor release.
    • [x] Make sure the Unreleased section at the top of changelog file has the new release version number and the month/year of publishing.
    • [x] Make sure the package version in the cabal file and package.yaml has the correct release version, else set the version correctly. This might need to be done on a minor release.
    • [x] Bump the package version in any docs/links, use something like rg '0\.8\.'|grep -v -i since to find any remaining occurrences of the old release. Check rg -i unreleased for any remaining todos.
  • [ ] Upload:

    • [ ] Wait for final CI tests to pass:

      • [ ] Manually run packcheck for ghcjs, bin/run-ci.sh --targets ghcjs.
      • [ ] Mask out the build status lines from the README
      • [ ] Upload to hackage
        • [x] Use a clean workspace to create source distribution by freshly cloning the git repository. The reason for doing this is that we use wild-cards in cabal file for extra-source-files, these wild-cards may match additional files lying around in the workspace and unintentionally ship them as well.
        • [x] Upload and verify the candidate
          • [ ] cabal v2-sdist; cabal upload <tarpath>
          • [ ] cabal v2-haddock --haddock-for-hackage --enable-doc; cabal upload -d <tarpath>
        • [ ] Publish the package
          • [ ] cabal v2-sdist; cabal upload --publish <tarpath>
          • [ ] Run packcheck on the uploaded package. To get the latest uploaded version from hackage, run cabal unpack <package-name>. You might have to run cabal update.
      • [ ] Create a git tag of the form P-X.Y.Z corresponding to the release where X.Y.Z is the new package version and P is the package name (git tag P-X.Y.Z && git push -f origin P-X.Y.Z). If the package name is implicit, P can be omitted and the tag can be of the form vX.Y.Z
      • [ ] Add to stackage (build-constraints.yaml in Stackage repo) if needed
      • [ ] Update and if needed release streaming-benchmarks package
      • [ ] Check https://matrix.hackage.haskell.org/package/streamly
      • [ ] Check haddocks on Hackage, upload if not built
      • [ ] Announce to [email protected]

Post Release Tasks

  • [ ] Bump package version:
    • [ ] After a major release, bump the package version in cabal file or package.yaml to the next major release target.
    • [ ] Bump the package version in configure.ac to the next major release target and run autoreconf.
    • [ ] Sync the package version of streamly and streamly-docs.
    • [ ] Add an Unreleased section at the top of changelog file with the next major release target.

adithyaov avatar Nov 22 '23 12:11 adithyaov

Bugs targeted to 0.10.0 https://github.com/composewell/streamly/issues?q=is%3Aopen+is%3Aissue+label%3Atype%3Abug+milestone%3A0.10.0 All of them can be pushed to 0.10.1. None of them are critical.

adithyaov avatar Nov 22 '23 12:11 adithyaov

TODO:

  • [ ] Make revision on hackage streamly for file-path (https://github.com/composewell/streamly/pull/2639)
  • [ ] Make revision on hackage streamly for streamly-core

adithyaov avatar Dec 15 '23 18:12 adithyaov