This is the main development repository for SML/NJ. We are currently reworking many components of the system, so it is not very stable. For most uses, we recommend the legacy version of the system.
As of the 2023.1 release, this version is known to work on AMD64 (a.k.a. x86-64) hardware running Linux or macOS.
The process for building the system from source code has changed from the legacy system.
-
Set
VERSION
to the version of SML/NJ that you want to buildVERSION=2024.1
-
Clone the repository
git clone --depth 1 --branch v$VERSION git@github.com:smlnj/smlnj.git
The
--depth
option limits the download to just one commit (i.e., no history) and the--branch
option specifies the version of the source code that you are requesting. -
cd
to the cloned repository and get the boot filescd smlnj curl -O https://smlnj.org/dist/working/$VERSION/boot.amd64-unix.tgz
We plan to incorporate this step into the
build.sh
script in the future. -
build the installation
./build.sh
Use
build.sh -h
to see the list of options accepted by the build script.As before, you can modify the
config/targets
file to add/remove components from the build.
After successful running of the build.sh
script, bin/sml
will be the interactive
system.
The process of recompiling the system from source code is fairly similar to before.
-
Switch to the
system
directory and run thecmb-make
command:cd system ./cmb-make ../bin/sml
The "
../bin/sml
" argument is optional; if omitted, then thesml
command in the user'sPATH
will be used. Once can also specify a different path to ansml
command, when appropriate. -
Bootstrap the system
./makeml
-
Install the system
./installml -clean -boot
The
-boot
option is new (and optional); it causes the existing boot files in the root directory (e.g.,boot.amd64-unix.tgz
) to be replaced by the files generated by thecmb-make
command. -
Rebuild the libraries and tools
cd .. ./build.sh