Skip to content

Building a Release

John Reppy edited this page Dec 16, 2025 · 5 revisions

This page documents the steps required to build a release of the development version of the SML/NJ system. The parts related to uploading the release for distribution assume access to the University of Chicago Computer Science Department’s systems.

For the legacy repository, see the Instructions for Building a Legacy Release in the Wiki.

Conventions

In the discussion below, we use $VERSION to represent the release version in question (e.g., 2024.2), $VERSION to represent the release date (e.g., July 7, 2024), $ARCH to represent the host architecture (e.g., amd64), and $OS to represent the host operating system (e.g., unix).

We also use $ROOTDIR to refer to the root of a clone of the development repository.

Instructions

The main steps in building a release are as follows:

  1. Prepare the release

  2. Clone a fresh copy of the repository

  3. Download the bin files for the previous version and then build the system.

  4. Download the bin files for the previous version

  5. Create the directory on the University of Chicago servers to contain the release; i.e., /stage/web_static/htdocs/dist/working/$VERSION.

  6. Write the $VERSION-README.adoc file and commit it. Also update the HISTORY.txt file.

Detailed Instructions

Prepare the Release

To prepare the release, one needs to first update the version and releasedate files in the repository.

echo $VERSION > config/version
echo $DATE > config/releasedate
git push -a -m "preparing release $VERSION"

The bug-report template should also be updated to include the new release. You can find this file at $ROOTDIR/.github/ISSUE_TEMPLATE/00_bug_report.yaml

Then one can tag the release both locally and remotely.

git tag -a v$VERSION -m "release $VERSION"
git push origin tag v$VERSION

Note, if there is a problem that requires changes to the repository after the release has been tagged, one can delete the tag (remotely and locally) as follows:

git push --delete origin v$VERSION
git tag -d v$VERSION

and then retag the release.

Clone a fresh copy of the repository

git clone --recurse-submodules git@github.com:smlnj/smlnj.git

Download the bin files for the previous version

cd smlnj
curl -O https://smlnj.org/dist/working/2024.1/boot.amd64-unix.tgz

Build the system with cross-compilation support

build.sh -dev

Clone this wiki locally