Import Upstream version 20180207
[hcoop/debian/mlton.git] / doc / guide / localhost / History
CommitLineData
7f918cf1
CE
1<!DOCTYPE html>\r
2<html lang="en">\r
3<head>\r
4<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\r
5<meta name="generator" content="AsciiDoc 8.6.9">\r
6<title>History</title>\r
7<link rel="stylesheet" href="./asciidoc.css" type="text/css">\r
8<link rel="stylesheet" href="./pygments.css" type="text/css">\r
9\r
10\r
11<script type="text/javascript" src="./asciidoc.js"></script>\r
12<script type="text/javascript">\r
13/*<![CDATA[*/\r
14asciidoc.install();\r
15/*]]>*/\r
16</script>\r
17<link rel="stylesheet" href="./mlton.css" type="text/css">\r
18</head>\r
19<body class="article">\r
20<div id="banner">\r
21<div id="banner-home">\r
22<a href="./Home">MLton 20180207</a>\r
23</div>\r
24</div>\r
25<div id="header">\r
26<h1>History</h1>\r
27</div>\r
28<div id="content">\r
29<div id="preamble">\r
30<div class="sectionbody">\r
31<div class="paragraph"><p>In April 1997, Stephen Weeks wrote a defunctorizer for Standard ML and\r
32integrated it with SML/NJ. The defunctorizer used SML/NJ&#8217;s visible\r
33compiler and operated on the <span class="monospaced">Ast</span> intermediate representation\r
34produced by the SML/NJ front end. Experiments showed that\r
35defunctorization gave a speedup of up to six times over separate\r
36compilation and up to two times over batch compilation without functor\r
37expansion.</p></div>\r
38<div class="paragraph"><p>In August 1997, we began development of an independent compiler for\r
39SML. At the time the compiler was called <span class="monospaced">smlc</span>. By October, we had\r
40a working monomorphiser. By November, we added a polyvariant\r
41higher-order control-flow analysis. At that point, MLton was about\r
4210,000 lines of code.</p></div>\r
43<div class="paragraph"><p>Over the next year and half, <span class="monospaced">smlc</span> morphed into a full-fledged\r
44compiler for SML. It was renamed MLton, and first released in March\r
451999.</p></div>\r
46<div class="paragraph"><p>From the start, MLton has been driven by whole-program optimization\r
47and an emphasis on performance. Also from the start, MLton has had a\r
48fast C FFI and <span class="monospaced">IntInf</span> based on the GNU multiprecision library. At\r
49its first release, MLton was 48,006 lines.</p></div>\r
50<div class="paragraph"><p>Between the March 1999 and January 2002, MLton grew to 102,541 lines,\r
51as we added a native code generator, mllex, mlyacc, a profiler, many\r
52optimizations, and many libraries including threads and signal\r
53handling.</p></div>\r
54<div class="paragraph"><p>During 2002, MLton grew to 112,204 lines and we had releases in April\r
55and September. We added support for cross compilation and used this\r
56to enable MLton to run on Cygwin/Windows and FreeBSD. We also made\r
57improvements to the garbage collector, so that it now works with large\r
58arrays and up to 4G of memory and so that it automatically uses\r
59copying, mark-compact, or generational collection depending on heap\r
60usage and RAM size. We also continued improvements to the optimizer\r
61and libraries.</p></div>\r
62<div class="paragraph"><p>During 2003, MLton grew to 122,299 lines and we had releases in March\r
63and July. We extended the profiler to support source-level profiling\r
64of time and allocation and to display call graphs. We completed the\r
65Basis Library implementation, and added new MLton-specific libraries\r
66for weak pointers and finalization. We extended the FFI to allow\r
67callbacks from C to SML. We added support for the Sparc/Solaris\r
68platform, and made many improvements to the C code generator.</p></div>\r
69</div>\r
70</div>\r
71</div>\r
72<div id="footnotes"><hr></div>\r
73<div id="footer">\r
74<div id="footer-text">\r
75</div>\r
76<div id="footer-badges">\r
77</div>\r
78</div>\r
79</body>\r
80</html>\r