streamly
streamly copied to clipboard
Release checklist 0.10.0
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/'
andrg '/tree/'
to search for github links. - [x] For example, links that point to
streamly-examples
point to itsmaster
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] External links might point to the
- [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
orPre-release
annotations. - [x] Unreleased combinators should be marked with
Pre-release
orInternal
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. Somefileio
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.
- [x] Make sure contributors to the release are listed in
-
[ ] Update changelog & Version:
- [x] Find API changes using
./packdiff streamly ver1 streamly ver2
and record them indocs/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. Checkrg -i unreleased
for any remaining todos.
- [x] Find API changes using
-
[ ] 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 runcabal update
.
- [ ]
- [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
- [ ] 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]
- [ ] Manually run packcheck for ghcjs,
-
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
andstreamly-docs
. - [ ] Add an
Unreleased
section at the top of changelog file with the next major release target.
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.
TODO:
- [ ] Make revision on hackage streamly for
file-path
(https://github.com/composewell/streamly/pull/2639) - [ ] Make revision on hackage streamly for
streamly-core