MLton
(???????????? «
????????
»
) — ??????????????????
???????????????-??????????????
?????????? ????? ????????????????
Standard ML
(SML). ??? ? ??????????? ????????? ??????????
Standard ML
, ??????? ?? ?????
Standard ML
(?? ???????????
???????
-???????, ?????????? ??
??
) ? ???????????????? ?
????????? ????????? ??????
???
????????? ? ????? BSD
.
??????????????
???????????? ????? ??????? ?????????????????? ???????? ??
Standard ML
: ?? ?????? ?????????? ?? ???????? ???? ????????????? ??????? ??
??
/
C++
; ?? ????? ???????, ?? ????
???????????????? ???????????
?? ?????? ???????????
??????? ?????? ??????????
?????????, ???????? ???????????? ??. ????????? ??????????????? ?????????? ????? ??????????? ???????. ?????????????????? ? MLton ?????????????? ???? ??? ??????????? ????????????? ??????????
??????????
SML (
???????????????? ????????????
,
??????? ??????? ???????
,
?????????
), ??? ????????? ???????????? ???? ??? ???
???????? ????????????????
, ??? ? ?
, ?? ?????? ?? ???????????? ?????? ?????? ?????
???????????
? ??????????????. ??????? ???????? ???? ? ????????? ? ??????? ???????????? SML ?? ?????? ?????? ?????????? ?? ?????????? ??? ?? ?????????? ????????
.
?????????????? ????? ??????? ?????????????, ? ??? ????? ????????? ?????? ? ????????????? ?????????????? ?????. ?? ????? ??????? ????? ????? ????? ?????? ?????? ?????? ?? ???????????? ??????? ?
???????
?????????? ??
Standard ML
. ?????????? ?????? ?????????????
???????????
????? ? ????????????
???????? ??????????
. ??????? ?????? ?????????? ?? ???????????, ??????? ?????? ?? ????????? ??????????????, ? ????????, ?????????????? ??? ??????????? ???????? ? ????? ???????????.
????? ?????? ? ???????
, ?????????????? ?????? ???????????? ?????????????? ? ?????? ?? (?????? ??
???????? ????????
); ? ????? ?????????
NLFFI (
No-Longer-Foreign Function Interface
—
???.
????????? ? ??????-?????-??-?????????? ????????
), ??????????? ??????????
???????????? ?????
?? ????? ? ?????? ?? SML ? ???????????? ?????? ?????? ??????? ?? ? ?????????? ?? SML
.
???????????? ?????????
????????
???????? (
x86
,
IA-64
,
AMD64
,
SPARC
,
ARM
,
PowerPC
/PowerPC64,
DEC Alpha
,
HPPA
,
S390
) ? ????????????? ???????????? ??????, ? ??? ????? ?????????
Unix-like
-?????? (Debian, Fedora, *BSD). ???
Windows
???????
Cygwin
???
MinGW
(?? ????????? ?? 2014 ???), ?????? ???? ?????? ? ????? ?????????????. ????? ?????????????? ???-???? ?
??
,
C--
,
LLVM
; ????? ???? ? ????? ??????? ???-??? ?
????-???
, ?? ??? ????????? ??????????, ??? ??? ?? ?? ??????? ????????????.
??????????
????????????? ? ???????????? ???????? MLton ???????????? ?? ????:
-
???????????????, ?? ???? ?????????
??????? SML
?? ??????????? ???????? ??????. ??????????????? ??? ?????? ????? ?????????? MLton
.
-
??????????????
, ????????
??????????????? ???????????
«??????????». ? ??????? ??
???????? C++
, ?? ???? ????????? ? ??????? ?????????? ??????????? ? MLton ??? ?? ???????? ? ??????????????? ?????????? ????: ?? ?????? ?????????????, ?????????? ????????? ???? ?? ????
??????????????
? MLton
?? ????????? 30 %
.
-
????????????
???????? ???????? ????
(
?????
, ???????,
????????????? ?????
,
?????????????
, ????????, ?????????? ???????, ????????? ? ??.).
-
???????????
??????? ?????? ??????????
???????? ? ?????????? ??????? ??????????? ?? ?????? ????????? ??????????? ??????????, ? ??? ?????:
-
*
??? ??????? ????????????? ??????????? ????? ???????? ?? ???? ? ??????????? ?? ???????, ? ??? ????? ??? ??????? ? ??? ??????
.
-
, ??? ?? ?????? ??????????????? ???????? ?????????????? ??????????????? ???????? ????, ?? ? ???????????? ?????????????? ?????????? ??
??????????? ??????
, ??????? ????? ???????????? ???????????? ????????? ???????????
.
-
?????????????
?????????
(
? ???????????, ? ??????? ?? ??????????? ???????????? ?????????????? ??????) ?????????????
??????????? ?????
?
????????
?? ???, ? ????? ???????? (?? ????????????) ?????????????
????????? (ML-???????)
.
-
??????????
??????? ??????????
(???????????
?????????
IntInf
, ???????????? ?
??????????
INTEGER
) ???????????
GNU Multi-Precision Library
.
-
?????????
????????? ?????
??
??????????? ??????????
??????????????? ??????????? ?????, ?? ???? ?????????? ?????????
?????????
? ???????? ??????.
-
?????????? ?????????
?????? ??????
.
?????? ? ???????????, ??????????? ? MLton, ?????????? ?????????? ?? ?????????????
. ??????? ??????????? ?????? ? ?????????? ????????? ?????? ???????? ????????? ??????????? ??????????????? ???
AST
, ?????????? ?????
??????? ??????????
?
?????? ?????
, ????? ???? ????????????
? ?????????????? ???????????. ? MLton ?? ??????? ?????? ????????? ???????? ???. ?????? ??????????? ??????????????? ?
??????????????
, ? ?????????? ???? ??? ?????????????? ?? ????????????? ????? ?? ??????????? ??????????, ?? ????????? ? SML,
???????? ?????
, ?? ? ??????????
??????? ??????? ???????
. ????? ???????
??????????????????
? ??? ?? ????????????? ????? ??????? ???????, ????????? ?????? ?? ??????????? ???????? ?????? (
SSA
). ? ???? ????? ?? ?????????? ??????? ???? ???????????
????? ???????????? ???????????
(??????
????????? ????????
?? ??????? ????????,
??????????????? ????????
,
???????? ???????? ????
, ????? ????????????? ? ??????), ? ????? ??????? ?????????????
?????????
. ????? ??????? ???? ??????? ? ??? ????????????? ???????????, ? ??? ??? ?????????????:
-
????????? ??????????? ?????? ?????????????????? ?? ????????????? ??????????
??????????
ML, ??? ????????? ???????????? ???? ?? ?????? ????.
-
??????????
?????? ?????? ??????????
?????????? ?? ?????? ?????????? ???????????, ??? ?????? ?????? ????????????, ? ????????? — ??????? ????? ? ??????????.
????? ?? MLton ?????????? ?????? ????????????? ??????
, ? ??? ????? ??????????
????????????
???? ?????????????????? (? ???????, ????????, ?? ??????????? TILT
, ?? ?????????????? ????????????? ?? ?????? ????????? ????), ? ????????? ???????? ????????.
??????????
MLton ?????????? ??? ????????????? ?????????:
-
????? ????????? ??????????? ?????????
, ? ??? ?????:
-
MLRISC
— ?????????? ?? SML ???????????????? ????????? ??? ?????????? ?????????????? ???-????? ???????????? ??????????????? ?????? ??? ?????? ?????????? ?????????. ????????? ??????????????? ???????????????? ???-????, ????????
????????? ?????????????
?????????? ???? ?????????? ???????????.
-
??????????
???????????
.
-
??????
Unsafe
—
????????????
???????????, ? ??? ?????
????????? ?????????
(? ???????? ?????????? ???
).
-
«??????»
??????
, ??????????????? ????????????-???????????, ?? ?????????????????????? ????????? ? ??????? ???????????? ???????.
-
????
????????????? ?????
Concurrent ML
(CML). MLton ????????????? ??????? ???????????????? CML, ? ???????? ??????????? ????????? ????????? ? SML/NJ, ?? ??????
???????????
?????????? ??????????? «??????» ??????; ??????, ?? ?????????
??????-??????????
??????? ??? ???????? ??????????? ? ?????????? ??????????? ???????????????? ???????
IO
?
OS
.
-
«World save and restore» — ???????????
?????
????? ????????? ????????? ? ???? ? ??????????? ???????????????.
-
MLBasis — ??????????? ??????? ??????????
???????? SML
, ????? ????????, ???
CM
?? ???????
. ?????????????? ?????????????? ???????????????? ?? ???????
.cm
? ??????
.mlb
.
? ?????? ??????
.
?????????? ????????????????? ?????????? ?????? MLton:
???????, ?????????, ????????????
? ??????
1997 ????
?????? ???? (
????.
Stephen Weeks
) ?????????? ??????????????? ???
, ????? ?????????? ??????? ????????
?? 2 ?? 6 ???
. ? ??????? ???? ?? ???? ???? ?????? ?????????? ??????????????? ???????????, ??????? ?? ??? ?????? ?????????
smlc
. ? ??????? ??? ?????????? ??????????????. ?? ????????? ??????? ????
smlc
???? ????????? ??????????? ???????????? ? ??? ???????????? ? MLton, ?????? ????? ???????? ????????? ? ?????
1999 ????
. ?
2005 ????
MLton ????????? ???????????? ?????????????? ?????????????????? ????????
.
? ?????? ?????? ?????????? ?????? ? ?????? ?? ?????????????????? ?? ???? ?????????? ??????????? ????????.
???????????? MLton ??????? ????????? ???????? ?????? ??????????? ??? «
????????
», ?? ???????? ?? ?????? «
????????
» (
????.
mill
)
— ????????, ??????? ???????????? «
????????????? ???????? ?? ML
», ??? ???????? ?????????? ??????????? ???????
?
????????.
???????? MLton ????????? ?????? ????????:
-
?????? ???? (
????.
Stephen Weeks
)
-
????? ?????? (
????.
Henry Cejtin
)
-
????? ???? (
????.
Matthew Fluet
)
-
????? ??????????? (
????.
Suresh Jagannathan
)
??????? ????? ????? ?????? ?????? ?????? ????
.
?
2013 ????
?????? MLton ?????? ? ?????????
Google Summer of Code
.
???????????? MLton ???????? ????????? ??????????? ?????? ??
successor ML
. ?
2014 ????
???? ?? ??? ???? ????????? ?????? «NSF CISE Research Infrastructure (CRI)»
«
?? ???????????????? MLton ??? ???????????? ????? ?????? ?????????
».
??????? ? ????????? ? ??????????????
MLton ???????????? ?????????????? ???????? ?? ??????
??
/
C++
, ??? ??????????? ?? ??????????????? ????? ????????????????
.
?????????? ???????? ???????? ?? ?????????? ??????????? ??????? ? ????????? ?????? ??????????????:
-
???????????? ??????? ??????? ? ?????? ??? ??????. ????????, ?????????? ???????????? ???? (?????
140 ????? ?????
?? SML) ?? ?????????? ??????
1.6 ???
????????
?? 5 ?? 10 ?????
? ???????
????? 500 ?? RAM
.
-
?????????? ??????????? ?????????? ??????????.
-
?????????? ??????
REPL
, ???????????? ??? ??????????? ??????????
Standard ML
.
????????? ? OCaml
? OCaml, ? MLton ????????? ????????? ???????? ??????????????
, ??????? ????????? ??????????? ? ??????????? ?? ?? ? C++, ??????????? ?? ????????? ???????? (???? ?????? ?? ?????????) ? ?????????????? ???????? ?????????????. ??? ?????? ?????????? ?????? ?? ?? ????????
:
-
MLton ?? ?????? ?????? ?? ????? ??????? ????? ???
Windows
. OCaml ???????? ??? ? ????????? ?????????, ?????????? ??? Windows, ?? ???????? ???????? ?????? ???
Unix-like
, ??? ??? ?????????? ?????
fork
()
.
-
OCaml ???????????? ?
IDE
??????????? ?????? ???????? (????????, ???????? ????????? ???????????? ??? ?? ?????? ??????, ?? ? ?????). MLton ?? ????? ??????????? ????? ? ???????? ?? ????????? ??????, ?? ????????? ?????????????? ?????????????? ???????????? ????????????? (????????, ????????????? ???? ?? ??????? ? ?? ????????). MLton ?? ???????????? ?????
REPL
, ?? ????????? ???????? ? ????????? ???? ?????????
?????? ?????
.
-
OCaml ????? ??? ??????????? ? ???????????? ???-????? ??? ??????? — ?
???????? ???
? ?
????-???
— ?? ??????? ?????? ??????????? ??????, ? ?????? ????? ??????. MLton ????? ????????? ???-?????, ? ??? ??????????? ?? ?????? ?????? ?? ??? ??????????? ????? ????????.
-
OCaml ?? ?????????? ?????
???????
? ?? ?????????
??????????????
. ??? ?????????, ?? ????????? ??????????? ??? ??????????????? ??? ????????, ?????????? ? ???????????? ????? ? ??? ?????????????
????????????
. ??? ????????, ?????????? ???????????? ??????????????
??????
, ?? ????? ?????? ???????????? ?????? ????????. ??????? ?????????? ???? ????? ???????? ????? ????? ??????? ?????? ?? ?????????????. ? ??????? ?? ????, MLton ?? ???? ??????????? ?? ????????? ??????????
?????? ????????? ??????????? ??????????? ???, ??????????? ?????? ????????????? ?????? ???????????. ??? OCaml ?????????? ????????? ???????????????
.
-
OCaml ????? ?????? ??????????
?????????????
???????????
?
???????????
????? ? ??????? ????????????? ?????: ???????
???
???????????? ??? ?????????? ????? ? ??????????, ??? ??? ???????????? ???????? ????? ??
32-?????????
????????? ??????????
31 ?????
, ???? ???????????
????????. MLton ??????????
????????
????????????? ???? ??????????? ? ?????????? ??????????? ????? ? ????????
??????
??
??????????? ??????????
.
-
? MLton ?????? ? ???????????, ??? ? OCaml, ??? ? ???????????? ??????? ??????? ? ?????????? ???????. ??? ?????????? ???? ?? OCaml ? ????? ?? ?? ????????? ??????? ?????? ??????? ? ???? ?????? ??????-??????? ? ?????????? ? ???? ???????, ? ?? ??????????????? ? ??????????
. MLton ????????????? ????????? ??????????
.
????? ????? ??????? ???????? ????????? ???????? ????? ?????????????, ????? ????????? ? ?????????? ????? ?????? ???????:
-
??? ????? ? ????? ??????? ??????????
Lex
/
Yacc
(??????????????, ocamllex/ocamlyacc ? MLLex/MLYacc). ? ?????????? OCaml ????? ???????????????
??????
, ??????????? ???????? ????????? ????? ? ????? ??????? ????????? ? ?????????? ??????? ????????? ??? ??????????
???????????? ??????
. MLton ?? ??????????????? ?????? ????????????.
-
?????????? OCaml ????? ???????: ??? OCaml ????????? ???????? ????? ????????? ? ??????????
OCaml
??????????? ??????, ??? ??????????
Standard ML
. ???
Standard ML
????????? ??????????? ??????, ?? ??????????
? MLton ????????? ??? ????? ?????????? ???????????? ?????????????? ? ???????????? ?? ??.
-
? OCaml ????????? ???????? «???? ?????? ? ????? ?????», ? ?????? ?? ???? ???????????? ???????????? ??? ?????????
.
Standard ML
?? ??????? ?????? ???????, ? MLton ????????????? ??????????? ??????? ??????????
???????? SML
— MLBasis
.
??. ?????
??????????
-
?
(?????.)
. ???? ?????????: 13 ?????? 2014.
13 ?????? 2014 ????.
-
?
.
-
?
(?????.)
. ???? ?????????: 13 ?????? 2014.
13 ?????? 2014 ????.
-
(?????.)
. ???? ?????????: 10 ??????? 2014.
14 ??????? 2014 ????.
-
.
-
(?????.)
. ???? ?????????: 21 ?????? 2014.
29 ?????? 2014 ????.
-
(?????.)
. ???? ?????????: 13 ?????? 2014.
13 ?????? 2014 ????.
-
(?????.)
. ???? ?????????: 13 ?????? 2014.
13 ?????? 2014 ????.
-
9 ??? 2008 ????.
-
(?????.)
. ???? ?????????: 18 ?????? 2014.
23 ???????? 2015 ????.
-
(?????.)
. ???? ?????????: 13 ?????? 2014.
2 ?????? 2015 ????.
-
(?????.)
. ???? ?????????: 13 ?????? 2014.
13 ?????? 2014 ????.
-
(?????.)
. ???? ?????????: 13 ?????? 2014.
13 ?????? 2014 ????.
-
(?????.)
. ???? ?????????: 13 ?????? 2014.
13 ?????? 2014 ????.
-
(?????.)
. ???? ?????????: 14 ???????? 2016.
23 ???? 2016 ????.
-
(?????.)
. ???? ?????????: 14 ???????? 2016.
23 ???????? 2016 ????.
-
.
-
(?????.)
. ???? ?????????: 13 ?????? 2014.
13 ?????? 2014 ????.
-
The Breakfast Post.
(????.)
. ???? ?????????: 16 ???????? 2016.
21 ???????? 2016 ????.
-
(?????.)
. ???? ?????????: 13 ?????? 2014.
13 ?????? 2014 ????.
-
(?????.)
.
Calcul Statique des Applications de Modules Parametres. Julien Signoles. JFLA 2003.
(2010). ???? ?????????: 10 ??????? 2014. ???????????? ??
4 ?????? 2015 ????.
— Defunctorizer for OCaml
-
.
??????
-
(????.)
.
-
-
Stephen Weeks.
(
(????.)
). — 2006.
29 ???? 2007 ????.
-
Jens Olsson, Andreas Rossberg.
(????.)
(2009).
-
Matthias Blume.
(
(????.)
). — Elsevier Science B. V., 2001.
4 ?????? 2005 ????.
-
Matthew Fluet, Riccardo Pucella.
(
(????.)
). — IFIP International Conference on Theoretical Computer Science, 2002.
-
Zhong Shao, Andrew W. Appel.
(
(????.)
). — Lisp and Functional Programming, 2006.
-
Chailloux, Manoury, Pagano.
Developing Applications With Objective Caml
(?????.)
. — 2007. — ?. 349-370, ????? 11. ?????????????? ? ?????? ??.