-
Notifications
You must be signed in to change notification settings - Fork 1
/
CHANGES.txt
289 lines (220 loc) · 8.95 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
2.0.0 (2013/10/10)
Interpreter functionality:
- Print source location for uncaught exceptions.
- Abort on errors in batch modes.
- New command line option -b to switch standard basis path (or omit it).
- Fixed bug in lexing of negative hex constants (thanks to Matthew Fluet).
- Fixed missing identifier status check for variable in `as' patterns.
- Fixed missing type arity check for structure sharing derived form.
- Slightly more faithful checking of syntactic restrictions (ignore duplicate
variables in matches).
- Slightly more faithful handling of equality maximisation (don't substitute).
- Slightly more faithful handling of sharing specifications
(don't generate new type names).
Interpreter implementation:
- Restructured AST to include annotations in the form of typed property list
(breaks all code based on HaMLet 1, sorry :( ).
- Elaboration stores result of each rule as annotation in respective AST node.
- Derived forms make sure to clone nodes where necessary.
- Removed ad-hoc type annotation on SCons.
- Split Library into StaticLibrary and DynamicLibrary, to support compilers.
- Provide separate Elab/EvalProgram modules, to support compilers/interpreter.
- Renamed *Grammar* structures to *Syntax*.
- Tons of code clean-up and beautification.
JavaScript compiler:
- New HaMLet mode -j, "compile to JavaScript"".
- Simple type-aware source-to-source translation into JavaScript.
- JavaScript implementation of Standard Basis Library primitives.
Basis:
- Implemented CommandLine.
- Skeletal implementation of OS.Process.
- Implemented Substring.{position,tokens,fields}.
Building:
- Assume Moscow ML 2.10 by default.
- Added String.concatWith and CharVector.all for (old versions of) Moscow ML.
- Renamed hamlet-monolith.sml to hamlet-bundle.sml.
Documentation:
- Updated manual and man page.
- Added lax datatype replication rules to issue list (suggested by Karl Crary).
- Updated links.
1.3.1 (2008/04/28)
Building:
- Removed some shell-specific stuff from Makefile.
- Added preliminary support for SML#.
- Use @SMLcmdname option for SML/NJ instead of hacking.
- Avoid name clash with SML/NJ lib >110.66.
Documentation:
- Added man page.
1.3 (2007/03/22)
Interpreter:
- Output abstract syntax tree in parsing mode.
- Output type and signature environments in evaluation mode.
- Fixed computation of tynames on a static basis.
- Reorganised directory structure.
- Some clean-ups.
Documentation:
- Updated a few out-of-sync sections.
- Added typo in definition of cut-down operator (Section 7.2) to issues list.
Test files:
- Extended "sharing" and "where".
- Updated conformance table.
Building:
- Support for Poly/ML 5.0.
- Support for Alice ML 1.4.
- Support for ML Kit 4.3.0.
- Support for incremental batch compilation with Moscow ML and Alice ML.
- Target to build a generic monolithic source file.
- Work around calls to Unsafe structure in later versions of ML-Lex.
1.2.4 (2006/08/14)
Documentation:
- Clarified license.
1.2.3 (2006/07/18):
Interpreter:
- Fixed check for duplicate variables in records and layered patterns.
- Added missing check for undetermined types in functor declarations.
- Overhaul of line/column computation and management of source file names.
Documentation:
- Added principal typing problem with functors to issue list.
Test files:
- Added "fun-partial", "functor-poly" and "functor-poly2".
- Updated conformance table.
Building:
- Improvements to Makefile.
- Adapt to Basis library changes in newer versions of SML/NJ.
- Adapt to ML-Lex in newer version of MLton that fix the token position bug.
- Fixed time stamps for generated files.
1.2.2 (2005/12/09):
Interpreter:
- Simplified implementation of pattern checker.
Test files:
- Added "fun-infix".
Building:
- Fixed problem with sed under Mac OS.
1.2.1 (2005/07/27):
Interpreter:
- Fixed bug in implementation of rule 35.
- Fixed bug in check for redundant match rules.
Basis:
- Fixed Substring.splitr.
- Fixed border cases in OS.Path.{toString,joinBaseExt,mkAbsolute,mkRelative}.
1.2 (2005/02/04):
Interpreter:
- Refactored code to avoid cross-module recursion issues and make experiments
with extensions more convenient: semantic objects are now collected in one
structure for each part of the semantics; type variable scoping and closure
computation (expansiveness check) are separated from elaboration module.
- Made checking of syntactic restrictions a separate pass. This renders
parsing and evaluation-only functionality more accurate, though it complicates
things significantly, since it requires complete binding analysis.
- Added missing check for bound variables in signature realisation.
- Fixed precedence of environments for open declarations.
- Fixed implementation of Abs operator for abstype.
- Treat empty lines in sessions properly.
- Print type name set T of inferred basis in elaboration mode.
- Fixed parenthesisation in pretty printing type applications.
Basis:
- More correct path resolution for use function.
- Added checkFloat to REAL signature so that bootstrapping actually works again.
- Fixed ArraySlice.copy for overlapping ranges (test was the wrong way round).
- Fixed ArraySlice.foldr[i].
- Fixed Char.isSpace.
- Fixed octal escapes in Char.fromCString.
- Updated treatment of trailing gap escapes in Char.scan.
- Updated scanning of hex prefix in Word.scan.
- Fixed traversal order in Vector.map.
Documentation:
- Updated.
- Added typo in rule 28 to issue list.
Test files:
- Added "generalise".
- Extended "poly-exception".
Building:
- Fixed building with Moscow ML and some versions of SML/NJ.
- Fixed building on Windows.
- Fixed bootstrapping.
1.1.2 (2005/01/14):
Interpreter:
- Fix parsing of sequential and sharing specs.
- Add arity checks missing in rules 64 and 78 of the Definition.
- Implement tyname equality as bool.
Basis:
- Fixed StringCvt.pad{Left,Right}.
Workarounds:
- Workaround for lack of ListPair.*Eq functions.
- Workaround for type change in OS.Path.mkRelative.
Documentation:
- Add parsing ambiguity for sharing specs to issue list.
- Add missing side conditions in rules 64 and 78 to issue list.
- Added version history to appendix.
Test files:
- Added "poly-exception", "tyvar-shadowing", "where2".
- Extended "id" and "valrec".
- Updated conformance table (MLton 20041109, SML/NJ 110.52, Alice 1.0).
1.1.1 (2004/04/17):
Interpreter:
- Disallow undetermined types (a.k.a. "free type variables") on toplevel.
- Implement accurate scope checking for type names.
- Fixed soundness bug wrt undetermined types in type scheme generalisation test.
- Reject out-of-range real constants.
- Accept multiple line input.
- Output file name and line/columns with error messages.
- Improved pretty printing.
Basis:
- Sync'ed with updates to the specification: overloaded ~ on words, added
Word.{from,to}Large[X], removed Substring.all, changed TextIO.inputLine,
changed Byte.unpackString[Vec].
- Fixed String.isSubstring.
- Fixed String.fields.
- Fixed Vector.foldri.
Workarounds:
- Workaround for Mosml's broken real arithmetic (could raise Div).
- Workarounds to adapt to recent changes in the Basis spec
(fix-Word.sml, fix-TextIO.sml).
Makefile:
- Support for working versions of SML/NJ with new CM.
- Support for newest MLton.
Test files:
- Added "abstype2", "dec-strdec", "flexrecord2", "tyname", "undetermined2",
"undetermined3".
- Split conformance table into different classes of deviation and updated to
most recent compiler versions.
1.1 (2002/07/26):
Basis:
- Adapted signatures to latest version of the Basis spec.
- Implemented library functions added to existing structures.
- Adapted functions with changed semantics.
- Implemented all signatures and structures dealing with
array and vector slices.
- Implemented Text structure, along with previously missing
CharVector and CharArray structures.
- Implemented previously missing Byte structure.
- Removed SML90 structure and signature.
- Opaque signature constraints where the spec uses them (with some
necessary exceptions).
- Implemented previously missing Bool.{scan,fromString}.
- Implemented previously missing Real.{pos,neg}Inf.
- Handle exceptions from Char.chr correctly.
- Fixed generation of \^X-escapes in Char.toString.
- Fixed treatment of gap escapes in Char.scan.
(See http://SML.sourceforge.net/Basis/history.html for a list of
changes to the Basis specification.)
Test files:
- Added "replication".
- Updated conformance table (MLton 20020410).
SML/NJ Workaround:
- Forgot to propagate 1.0.1 fixes in basis/Char to fix-Char.
1.0.1 (2001/10/11):
Some fixes in the Basis:
- Ascii and Unicode escapes in Char.scan[C]
(and thus Char.from[C]String, String.fromString).
- Octal escapes in Char.toCString (and thus String.toCString).
- Possible NaN's in Real.scan for mantissa 0 and large exponents.
Documentation:
- Added issue of obligatory formatting characters to Appendix.
- Some minor additions/clarifications in Appendix.
Test files:
- Added "redundant".
- Removed carriage returns from "asterisk", "semicolon" and "typespec".
- Small additions to "semicolon" and "valrec".
1.0 (2001/10/04):
Initial public release.