## MLton 20241230

# 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, 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.