:version: 110.95
:date: November 9, 2019
:dist-dir: https://smlnj.org/dist/working/{version}/
:history: {dist-dir}HISTORY.html
:stem: latexmath
:source-highlighter: pygments
:stylesheet: release-notes.css
:notitle:

= Standard ML of New Jersey Release Notes

[subs=attributes]
++++
<div class="smlnj-banner">
  <span class="title"> Standard ML of New Jersey <br/> Release Notes </span>
  <br/> <br/>
  <span class="subtitle"> Version {version} <br/> {date} </span>
</div>
++++

''''''''
--
SML/NJ HOME::
  https://www.smlnj.org/index.html[[.tt]#https://smlnj.org#]
FILES::
  {dist-dir}index.html[[.tt]#{dist-dir}#]
--
''''''''

== Summary

This release fixes a few critical problems with 110.94, as well as a
couple of other bugs.  There are no new features or other major changes.

== Details

=== Installation

==== 64-bit support

The various installation and configuration scripts have been updated
to accept a command-line argument to override the
default machine size when running on the x86/amd64 architecture.
For the `config/install.sh` script, you can specify the machine-word
size of the target architecture as follows:

--
  **-default** __size__::
    specify the default size for the **sml** and other commands, where
    __size__ is either **32** or **64**.

  **-32**::
    install the 32-bit version of the system.

  **-64**::
    install the 64-bit version of the system.
--

It is possible to install both versions in the same location by running
the `install.sh` script twice.  For example, the commands

[source,shell]
--------------
  % config/install.sh -32
  % config/install.sh -default 64
--------------

will install both versions with the 64-bit version as default.  One
would then use the command **sml -32** to run the 32-bit version of
the system.

If both versions are installed, then use the **-32** or **-64** flag
to override the default version.

==== 32-bit macOS issues

While the {dist-dir}smlnj-x86-{version}.pkg[x86 installer]
for {version} works on **macOs** 10.14 Mojave, building from source
requires some extra steps because the version of **Xcode**
distributed for Mojave does not include a 32-bit SDK.

Another issue that you may encounter
when building on **macOs** 10.14 Mojave is an error message for a shell
script of the form

.....
  /bin/sh: bad interpreter: Operation not permitted
.....

This error arises because the `com.apple.quarantine` attribute is set on the
shell script.  To fix the problem, remove the attribute using the command

[source,shell]
-----
  xattr -d com.apple.quarantine shell-script
-----
and resume the build.

=== Runtime System

The runtime now uses `MAP_ANON` for allocating memory on 64-bit Linux.
This change fixes a problem with versions of Linux that do not allow
access to `/dev/zero`.

== Bugs

Here is a list of tracked bugs fixed (or closed) with this release, please see the
https://smlnj-gforge.cs.uchicago.edu/projects/smlnj-bugs[bug tracker]
for more details.

[.buglist,cols="^1,<15"]
|=======
| [.bugid]#229#
| `Real.fromString` errors
| [.bugid]#230#
| segmentation fault when compiling MLton sources with SML/NJ 64-bit
| [.bugid]#231#
| New literals-lifting code does not handle pair of reals
|=======


The following unnumbered bugs were also fixed:
--
  * Fixed the AST pretty printer so that it handles datatype replication
    declarations.

  * Fixed problem with 64-bit runtime on some versions of Linux (*e.g.*.
    Linux on ChromeBooks).
--

== Supported systems

We believe that SML/NJ will build and run on the following systems, but have only
tested some of them:

[.support-table,cols="^2s,^4v,^3v",options="header",strips="none"]
|=======
| Architecture | Operating System | Status
| AMD64 | macOS 10.14 (Mojave) | Tested
| | macOS 10.15 (Catalina) | Tested
| | Ubuntu 16.04.3 LTS | Tested
| | Ubuntu 18.04.3 LTS | Tested
| {nbsp} | |
| Power PC | Mac OS X 10.5 (Leopard) |
| | AIX |
| {nbsp} | |
| Sparc | Solaris |
| | Linux |
| {nbsp} | |
| x86 (32-bit) | Mac OS X 10.6 (Snow Leopard) |
| | Mac OS X 10.7 (Lion) |
| | Mac OS X 10.8 (Mountain Lion) |
| | Mac OS X 10.9 (Mavericks) |
| | Mac OS X 10.10 (Yosemite) |
| | Mac OS X 10.11 (El Capitan) |
| | macOS 10.12 (Sierra) | Tested
| | macOS 10.13 (High Sierra) | Tested
| | macOS 10.14 (Mojave) | Tested
| | Ubuntu 16.04.3 LTS | Tested
| | Other Linux variants |
| | BSD variants |
| | Windows 7 |
| | Windows 10 |
| | Cygwin (32-bit) |
| {nbsp} | |
|=======

