Standard ML of New Jersey

Last updated
Standard ML of New Jersey
Paradigm Multi-paradigm: functional, imperative
Family ML: Standard ML
Developers Bell Laboratories,
Princeton University
Lucent Technologies,
Yale University (FLINT Project),
AT&T Research [1]
First appeared1988;36 years ago (1988)
Stable release
110.99.4  OOjs UI icon edit-ltr-progressive.svg / 1 August 2023;8 months ago (1 August 2023)
Typing discipline strong, static, inferred
License BSD-like [2]
Filename extensions .sml
Website www.smlnj.org
Influenced by
Standard ML
Influenced
Mythryl

Standard ML of New Jersey (SML/NJ; Standard Meta-Language of New Jersey) is a compiler and integrated development environment for the programming language Standard ML. Aside from its runtime system, which is written in C language, SML/NJ is written in Standard ML. It was originally developed jointly by Bell Laboratories and Princeton University. [1] It is free and open-source software released under a permissive software license (BSD-like).

Contents

Its name is a reference both to the American state of New Jersey in which Princeton and Bell Labs are located, and to Standard Oil of New Jersey, the famous oil monopoly of the early 20th century.

Features

SML/NJ extends the SML'97 Basis Library with several added top-level structures: [3]

Also, SML/NJ provides some syntactic constructs that are not standard features of SML'97: [3]

Development

Successor ML is a term used to describe the next version of the language. The documents describing it have been extracted from the SML/NJ '97 files and made available as a GitHub repository of TeX documents which the community is expected to collaborate and grow the language. [11] Successor ML features can be enabled using the command-line option -Cparser.succ-ml=true. [12]

Since at least 1998, [13] MLton [14] is the standard bootstrapping compiler, and includes some [15] support for Successor ML.

In 2008, work began on HaMLet, [16] a reference implementation of Successor ML written entirely in Standard ML. [17] As of 2018, HaMLet remains the only complete implementation of Successor ML, with added novel features. [15]

Since 2015, [18] the evolution of SML/NJ geared towards evolving the Basis library [19] and adding support for the Successor ML definition with the release of version 110.79. [12]

At the end of 2020, 64-bit support was added with the release of version 110.99. [18]

See also

Related Research Articles

ML is a functional programming language. It is known for its use of the polymorphic Hindley–Milner type system, which automatically assigns the data types of most expressions without requiring explicit type annotations, and ensures type safety; there is a formal proof that a well-typed ML program does not cause runtime type errors. ML provides pattern matching for function arguments, garbage collection, imperative programming, call-by-value and currying. While a general-purpose programming language, ML is used heavily in programming language research and is one of the few languages to be completely specified and verified using formal semantics. Its types and pattern matching make it well-suited and commonly used to operate on other formal languages, such as in compiler writing, automated theorem proving, and formal verification.

OCaml is a general-purpose, high-level, multi-paradigm programming language which extends the Caml dialect of ML with object-oriented features. OCaml was created in 1996 by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy, Ascánder Suárez, and others.

Standard ML (SML) is a general-purpose, modular, functional programming language with compile-time type checking and type inference. It is popular for writing compilers, for programming language research, and for developing theorem provers.

<span class="mw-page-title-main">D (programming language)</span> Multi-paradigm system programming language

D, also known as dlang, is a multi-paradigm system programming language created by Walter Bright at Digital Mars and released in 2001. Andrei Alexandrescu joined the design and development effort in 2007. Though it originated as a re-engineering of C++, D is now a very different language drawing inspiration from other high-level programming languages, notably Java, Python, Ruby, C#, and Eiffel.

The Glasgow Haskell Compiler (GHC) is a native or machine code compiler for the functional programming language Haskell. It provides a cross-platform software environment for writing and testing Haskell code and supports many extensions, libraries, and optimisations that streamline the process of generating and executing code. GHC is the most commonly used Haskell compiler. It is free and open-source software released under a BSD license. The lead developers are Simon Peyton Jones and Simon Marlow.

In computer science, type safety and type soundness are the extent to which a programming language discourages or prevents type errors. Type safety is sometimes alternatively considered to be a property of facilities of a computer language; that is, some facilities are type-safe and their usage will not result in type errors, while other facilities in the same language may be type-unsafe and a program using them may encounter type errors. The behaviors classified as type errors by a given programming language are usually those that result from attempts to perform operations on values that are not of the appropriate data type, e.g., adding a string to an integer when there's no definition on how to handle this case. This classification is partly based on opinion.

In computer-based language recognition, ANTLR, or ANother Tool for Language Recognition, is a parser generator that uses a LL(*) algorithm for parsing. ANTLR is the successor to the Purdue Compiler Construction Tool Set (PCCTS), first developed in 1989, and is under active development. Its maintainer is Professor Terence Parr of the University of San Francisco.

MLton is an open-source whole-program optimizing compiler for Standard ML. MLton development began in 1997, and continues with a worldwide community of developers and users, who have helped to port MLton to a number of platforms. MLton was a participating organization in the 2013 Google Summer of Code.

<span class="mw-page-title-main">Scala (programming language)</span> General-purpose programming language

Scala is a strong statically typed high-level general-purpose programming language that supports both object-oriented programming and functional programming. Designed to be concise, many of Scala's design decisions are intended to address criticisms of Java.

Programming languages are used for controlling the behavior of a machine. Like natural languages, programming languages follow rules for syntax and semantics.

Phalanger is a compiler front end for compiling PHP source code into CIL byte-code, which can be further processed by the .NET Framework's just-in-time compiler. The project was started at Charles University and is supported by Microsoft. Phalanger was discontinued in favor of the more modern PeachPie compiler, which utilizes the Roslyn API.

TypeScript is a free and open-source high-level programming language developed by Microsoft that adds static typing with optional type annotations to JavaScript. It is designed for the development of large applications and transpiles to JavaScript. Because TypeScript is a superset of JavaScript, all JavaScript programs are syntactically valid TypeScript, but they can fail to type-check for safety reasons.

Dart is a programming language designed by Lars Bak and Kasper Lund and developed by Google. It can be used to develop web and mobile apps as well as server and desktop applications.

<span class="mw-page-title-main">Elm (programming language)</span> Functional programming language

Elm is a domain-specific programming language for declaratively creating web browser-based graphical user interfaces. Elm is purely functional, and is developed with emphasis on usability, performance, and robustness. It advertises "no runtime exceptions in practice", made possible by the Elm compiler's static type checking.

Idris is a purely-functional programming language with dependent types, optional lazy evaluation, and features such as a totality checker. Idris may be used as a proof assistant, but is designed to be a general-purpose programming language similar to Haskell.

Swift is a high-level general-purpose, multi-paradigm, compiled programming language developed by Apple Inc. and the open-source community. Swift compiles to machine code, as it is an LLVM-based compiler. Swift was first released in June 2014, and the Swift toolchain has shipped in Xcode since version 6, released in 2014.

<span class="mw-page-title-main">Nim (programming language)</span> Programming language

Nim is a general-purpose, multi-paradigm, statically typed, compiled high-level systems programming language, designed and developed by a team around Andreas Rumpf. Nim is designed to be "efficient, expressive, and elegant", supporting metaprogramming, functional, message passing, procedural, and object-oriented programming styles by providing several features such as compile time code generation, algebraic data types, a foreign function interface (FFI) with C, C++, Objective-C, and JavaScript, and supporting compiling to those same languages as intermediate representations.

<span class="mw-page-title-main">WebAssembly</span> Cross-platform assembly language and bytecode designed for execution in web browsers

WebAssembly defines a portable binary-code format and a corresponding text format for executable programs as well as software interfaces for facilitating interactions between such programs and their host environment.

<span class="mw-page-title-main">Reason (programming language)</span> Syntax extension and toolchain for OCaml

Reason, also known as ReasonML, is a syntax extension and toolchain for OCaml created by Jordan Walke, who also created the React framework, at Facebook. Reason offers a syntax familiar to JavaScript programmers, and compiles to native code using OCaml's compiler toolchain. Reason code may also be compiled to JavaScript using the ReScript compiler.

References

  1. 1 2 "SML/NJ background information". Smlnj.org. Retrieved 2018-09-05.
  2. "Standard ML of New Jersey License". www.smlnj.org.
  3. 1 2 "SML/NJ Special Features". www.smlnj.org. Retrieved 2018-09-05.
  4. "The SYS_INFO signature". www.smlnj.org. Retrieved 2018-09-05.
  5. "The WEAK signature". www.smlnj.org. Retrieved 2018-09-05.
  6. "The SUSP signature". www.smlnj.org. Retrieved 2018-09-05.
  7. "The internals signature". www.smlnj.org. Retrieved 2018-09-05.
  8. "The Unsafe structure". www.smlnj.org. Retrieved 2018-09-05.
  9. "The Visible Compiler". www.smlnj.org. Retrieved 2018-09-05.
  10. "SML/NJ Quote/Antiquote". www.smlnj.org. Retrieved 2018-09-05.
  11. "Successor ML Definition". GitHub .
  12. 1 2 "Standard ML of New Jersey version 110.79 News". 2015-10-04.
  13. "MLton 1999-03-19 change notes". GitHub .
  14. "The MLton repository". GitHub .
  15. 1 2 "Three implementation efforts to support Successor ML". GitHub .
  16. Rossberg, Andreas. "HaMLet S: To Become or Not to Become Successor ML" (PDF).
  17. "SML reference interpreter". GitHub .
  18. 1 2 "Standard ML of New Jersey Change Log for v110.99".
  19. "The Standard ML Basis Library".