MLton 20210117

# ReleaseChecklist

## Advance preparation for release

- Update ./CHANGELOG.adoc.

  - Write entries for missing notable commits.

  - Write summary of changes from previous release.

  - Update with estimated release date.

- Update ./README.adoc.

  - Check features and description.

- Update man/{mlton,mlprof}.1.

  - Check compile-time and run-time options in man/mlton.1.

  - Check options in man/mlprof.1.

  - Update with estimated release date.

- Update doc/guide.

  - Synchronize Features page with ./README.adoc.

  - Update Credits page with acknowledgements.

  - Create ReleaseYYYYMM?? page (i.e., forthcoming release) based on ReleaseXXXXLLCC (i.e., previous release).

    - Update summary from ./CHANGELOG.adoc.

    - Update links to estimated release date.

  - Create BugsYYYYMM?? page based on BugsXXXXLLCC.

    - Update links to estimated release date.

  - Spell check pages.

- Ensure that all updates are pushed to master branch of mlton.

## Prepare sources for tagging

- Update ./CHANGELOG.adoc.

  - Update with proper release date.

- Update man/{mlton,mlprof}.1.

  - Update with proper release date.

- Update doc/guide.

  - Rename ReleaseYYYYMM?? to ReleaseYYYYMMDD with proper release date.

    - Update links with proper release date.

  - Rename BugsYYYYMM?? to BugsYYYYMMDD with proper release date.

    - Update links with proper release date.

  - Update ReleaseXXXXLLCC.

    - Change intro to "This is an archived public release of MLton, version XXXXLLCC."

  - Update Home with note of new release.

    - Change What's new? text to Please try out our new release, <:ReleaseYYYYMMDD:MLton YYYYMMDD>.

    - Update Download link with proper release date.

  - Update Releases with new release.

- Ensure that all updates are pushed to master branch of mlton.

## Tag sources

- Shell commands:

      git clone http://github.com/MLton/mlton mlton.git
      cd mlton.git
      git checkout master
      git tag -a -m "Tagging ${YYYYMMDD} release" on-${YYYYMMDD}-release master
      git push origin on-${YYYYMMDD}-release

## Packaging

### SourceForge FRS

- Create YYYYMMDD directory:

      sftp user@frs.sourceforge.net:/home/frs/project/mlton/mlton
      sftp> mkdir YYYYMMDD
      sftp> quit

### Source release

- Create mlton-YYYYMMDD.src.tgz:

      git clone http://github.com/MLton/mlton mlton
      cd mlton
      git checkout on-${YYYYMMDD}-release
      make MLTON_VERSION=${YYYYMMDD} source-release
      cd ..

  or

      wget https://github.com/MLton/mlton/archive/on-${YYYYMMDD}-release.tar.gz
      tar xzvf on-${YYYYMMDD}-release.tar.gz
      cd mlton-on-${YYYYMMDD}-release
      make MLTON_VERSION=${YYYYMMDD} source-release
      cd ..

- Upload mlton-YYYYMMDD.src.tgz:

      scp mlton-${YYYYMMDD}.src.tgz user@frs.sourceforge.net:/home/frs/project/mlton/mlton/${YYYYMMDD}/

- Update ReleaseYYYYMMDD with mlton-YYYYMMDD.src.tgz link.

### Binary releases

- Build and create mlton-YYYYMMDD-1.ARCH-OS.tgz:

      wget http://sourceforge.net/projects/mlton/files/mlton/${YYYYMMDD}/mlton-${YYYYMMDD}.src.tgz
      tar xzvf mlton-${YYYYMMDD}.src.tgz
      cd mlton-${YYYYMMDD}
      make binary-release

- Upload mlton-YYYYMMDD-1.ARCH-OS.tgz:

      scp mlton-${YYYYMMDD}-1.ARCH-OS.tgz user@frs.sourceforge.net:/home/frs/project/mlton/mlton/${YYYYMMDD}/

- Update ReleaseYYYYMMDD with mlton-YYYYMMDD-1.ARCH-OS.tgz link.

## Website

- guide/YYYYMMDD gets a copy of doc/guide/localhost.

- Shell commands:

      wget http://sourceforge.net/projects/mlton/files/mlton/${YYYYMMDD}/mlton-${YYYYMMDD}.src.tgz
      tar xzvf mlton-${YYYYMMDD}.src.tgz
      cd mlton-${YYYYMMDD}
      cd doc/guide
      cp -prf localhost ${YYYYMMDD}
      tar czvf guide-${YYYYMMDD}.tgz ${YYYYMMDD}
      rsync -avzP --delete -e ssh ${YYYYMMDD} user@web.sourceforge.net:/home/project-web/mlton/htdocs/guide/
      rsync -avzP --delete -e ssh guide-${YYYYMMDD}.tgz user@web.sourceforge.net:/home/project-web/mlton/htdocs/guide/

## Announce release

- Mail announcement to:

  - MLton-devel@mlton.org

  - MLton-user@mlton.org

## Misc.

- Generate new Performance numbers.