新泽西州标准ML
发行说明


110.87版
2019年5月3日


总结

此版本完成了对110.86年启动的编译器。列出的大多数更改这里是110.86版本的一部分,但我们在这里包括了它们自110.86年没有正式宣布以来。

细节

安装

安装程序用于macOS 10.14 Mojave上的110.87作品,从源代码构建需要一些额外的步骤。

SML/NJ图书馆

重命名了函数CharBufferPP.openOut(字符缓冲PP.openOut)openBuf(打开Buf),并添加了文本PP支持对输出进行漂亮打印的结构流(类似文本IOPP)或字符缓冲区(如CharBufferPP(字符缓冲PP)).

ASDL公司

进一步改进ASDL的新实现。

  • SML视图统一了文件和内存pickler的接口。

  • 添加了对SML视图的S-Expression pickling的支持(取消pickling尚未实施)。

  • 对文档进行重大编辑,使其更加准确反映实施情况。

编译器

110.86变更

我们对内部陈述和实现是支持64位目标的准备工作的一部分。我们总结如下(参见更改日志详细信息)。

  • 将与CPS相关的代码从FLINT目录中移出并放入自己的目录中编译器/CPS目录树。

  • CPS公司构造成一个新的CPSUtil公司结构。

  • 重命名了各种CPS基元构造函数,以便兼容使用ASDL(,将符号和小写构造函数名称更改为大写标识符)。

  • 移动了F_SGN公司构造函数fcmp公司数据类型到分支datatype(并将其重命名FSGN公司).

  • 对基本运算符的内部表示进行了许多更改。

我们还改进了核心64位算术运算。

从中剔除未使用的标志控制结构(主要来自控制。CG公司).

110.87次变更

在110.87中,我们继续彻底检查编译器对原语的处理通过为编译器在内联结构。特别是,我们抽象了默认整数的大小和单词类型(在名称和数字转换的语义中)。

编译器现在内联字符.chr操作员。

交互式系统

实施使用REPL中的函数已重写为修复错误193,217、和219.的语义使用具体如下:

  • 如果调用使用遇到编译错误(初始文件或在的嵌套调用中使用),然后是编译器错误将打印消息并呼叫使用将立即返回().

  • 如果调用使用在执行期间引发异常编译代码的调用使用),则将在以下位置报告异常顶层。

  • 否则,如果没有遇到错误或未捕获的异常,则()将在执行所用文件中的代码后返回。

请注意,全局状态或环境的任何更改发生错误之前,将被轧制返回。此外,将呼叫包装到使用在异常处理程序中或使用呼叫抄送使用可能会打破它。

指定为命令行参数的文件sml公司命令被视为使用被调用。如果有错误,然后报告错误sml公司命令将以非零退出状态终止(至少在Unix上)。

漏洞

以下是此版本修复(或关闭)的跟踪错误列表,请参阅错误追踪系统了解更多详细信息。

193

SML/NJ不打印加载文件中未处理的异常

213

国际32.div加薪Div公司而不是溢流当划分时最小Int通过~1

217

在使用的文件中,未处理的异常不再打印任何内容

219

当结构中的函数引发异常时,“use”将以静默方式失败

还修复了以下未编号的错误:

  • 这个文字32.toInt函数未引发溢流当给定一个在某些情况下使用其符号位集的参数(例如,文字32.toInt 0wx8002DE32;会回来的187954).

支持的系统

我们相信SML/NJ将在以下系统上构建和运行,但只有测试了其中一些:

建筑 操作系统 状态

电源PC

Mac OS X 10.5(Leopard)

AIX公司

 

斯巴达克

Solaris公司

Linux操作系统

 

x86(32位)

Mac OS X 10.6(雪豹)

Mac OS X 10.7(狮子)

Mac OS X 10.8(山狮)

Mac OS X 10.9(小牛队)

Mac OS X 10.10(约塞米蒂)

Mac OS X 10.11(El Capitan)

macOS 10.12(塞拉利昂)

已测试

macOS 10.13(高塞拉)

已测试

macOS 10.14(莫哈韦)

已测试

Ubuntu 16.04.3 LTS版本

已测试

其他Linux变体

BSD变体

Windows 7

Windows 10

Cygwin(32位)

关于64位支持的说明

苹果正在反对macOS中的32位支持。使用macOS 10.14 Mojave编译32位应用程序,如SML/NJ运行时系统,需要使用较旧的SDK。SML/NJ安装程序,然而,在macOS 10.14 Mojave上运行时没有问题。

自110.82年以来,我们一直致力于64位支持,我们希望它能够到位在macOS 10.15发布之前。