| 1 | = CHANGELOG |
| 2 | |
| 3 | == Version 20180206 |
| 4 | |
| 5 | Here are the changes from version 20130715 to version 20180206. |
| 6 | |
| 7 | === Summary |
| 8 | |
| 9 | * Compiler. |
| 10 | ** Added an experimental LLVM codegen (`-codegen llvm`); requires LLVM tools |
| 11 | (`llvm-as`, `opt`, `llc`) version ≥ 3.7. |
| 12 | ** Made many substantial cosmetic improvements to front-end diagnostic |
| 13 | messages, especially with respect to source location regions, type inference |
| 14 | for `fun` and `val rec` declarations, signature constraints applied to a |
| 15 | structure, `sharing type` specifications and `where type` signature |
| 16 | expressions, type constructor or type variable escaping scope, and |
| 17 | nonexhaustive pattern matching. |
| 18 | ** Fixed minor bugs with exception replication, precedence parsing of function |
| 19 | clauses, and simultaneous `sharing` of multiple structures. |
| 20 | ** Made compilation deterministic (eliminate output executable name from |
| 21 | compile-time specified `@MLton` runtime arguments; deterministically generate |
| 22 | magic constant for executable). |
| 23 | ** Updated `-show-basis` (recursively expand structures in environments, |
| 24 | displaying components with long identifiers; append `(* @ region *)` |
| 25 | annotations to items shown in environment). |
| 26 | ** Forced amd64 codegen to generate PIC on amd64-linux targets. |
| 27 | * Runtime. |
| 28 | ** Added `gc-summary-file file` runtime option. |
| 29 | ** Reorganized runtime support for `IntInf` operations so that programs that |
| 30 | do not use `IntInf` compile to executables with no residual dependency on GMP. |
| 31 | ** Changed heap representation to store forwarding pointer for an object in |
| 32 | the object header (rather than in the object data and setting the header to a |
| 33 | sentinel value). |
| 34 | * Language. |
| 35 | ** Added support for selected SuccessorML features; see |
| 36 | http://mlton.org/SuccessorML for details. |
| 37 | ** Added `(*#showBasis "file" *)` directive; see |
| 38 | http://mlton.org/ShowBasisDirective for details. |
| 39 | ** FFI: |
| 40 | *** Added `pure`, `impure`, and `reentrant` attributes to `_import`. An |
| 41 | unattributed `_import` is treated as `impure`. A `pure` `_import` may be |
| 42 | subject to more aggressive optimizations (common subexpression elimination, |
| 43 | dead-code elimination). An `_import`-ed C function that (directly or |
| 44 | indirectly) calls an `_export`-ed SML function should be attributed |
| 45 | `reentrant`. |
| 46 | ** ML Basis annotations. |
| 47 | *** Added `allowSuccessorML {false|true}` to enable all SuccessorML features |
| 48 | and other annotations to enable specific SuccessorML features; see |
| 49 | http://mlton.org/SuccessorML for details. |
| 50 | *** Split `nonexhaustiveMatch {warn|error|igore}` and `redundantMatch |
| 51 | {warn|error|ignore}` into `nonexhaustiveMatch` and `redundantMatch` |
| 52 | (controls diagnostics for `case` expressions, `fn` expressions, and `fun` |
| 53 | declarations (which may raise `Match` on failure)) and `nonexhaustiveBind` |
| 54 | and `redundantBind` (controls diagnostics for `val` declarations (which may |
| 55 | raise `Bind` on failure)). |
| 56 | *** Added `valrecConstr {warn|error|ignore}` to report when a `val rec` (or |
| 57 | `fun`) declaration redefines an identifier that previously had constructor |
| 58 | status. |
| 59 | * Libraries. |
| 60 | ** Basis Library. |
| 61 | *** Improved performance of `Array.copy`, `Array.copyVec`, `Vector.append`, |
| 62 | `String.^`, `String.concat`, `String.concatWith`, and other related |
| 63 | functions by using `memmove` rather than element-by-element constructions. |
| 64 | ** `Unsafe` structure. |
| 65 | *** Added unsafe operations for array uninitialization and raw arrays; see |
| 66 | https://github.com/MLton/mlton/pull/207 for details. |
| 67 | ** Other libraries. |
| 68 | *** Updated: ckit library, MLLPT library, MLRISC library, SML/NJ library |
| 69 | * Tools. |
| 70 | ** mlnlffigen |
| 71 | *** Updated to warn and skip (rather than abort) when encountering functions |
| 72 | with `struct`/`union` argument or return type. |
| 73 | |
| 74 | === Details |
| 75 | |
| 76 | * 2018-02-6 |
| 77 | ** Remove ancient and unused `cmcat` tool. |
| 78 | |
| 79 | * 2018-02-03 |
| 80 | ** Upgrade `gdtoa.tgz`. |
| 81 | |
| 82 | * 2018-02-02 |
| 83 | ** Remove docs from `all` target of `./Makefile`; this eliminates the |
| 84 | `all-no-docs` target (which was frequently used in favor of `all`). |
| 85 | |
| 86 | * 2018-01-31 |
| 87 | ** Use C compiler with `-std=gnu11` (rather than `-std=gnu99`). |
| 88 | ** Revert rudimentary support for `./configure`; the support was so minimal |
| 89 | that it seems unhelpful to pretend that there are exhaustive compatibility |
| 90 | checks being performed. All of the basic configuration can be accomplished |
| 91 | with simple `make` variable definitions. |
| 92 | |
| 93 | * 2018-01-25 |
| 94 | ** Remove (expert, undocumented) `-debug-format` option; the same effect can |
| 95 | be achieved with `-as-opt` and `-cc-opt`. |
| 96 | ** Propagate C compiler from `./configure` to `mlton` script. |
| 97 | |
| 98 | * 2018-01-24 |
| 99 | ** Extend `-target-*-opt` options to support `arch-os` pairs. |
| 100 | ** Remove `./package/rpm/*` and corresponding targets in `./Makefile`; |
| 101 | upstream MLton has not produced RPMs for years. |
| 102 | |
| 103 | * 2018-01-24 |
| 104 | ** Slightly improve performance of `Vector.concat` and |
| 105 | `String.{concat,concatWith,tokens,fields}` by avoiding `List.map`-s. |
| 106 | |
| 107 | * 2018-01-23 |
| 108 | ** Restore, but deprecate, `-drop-pass` compile-time expert option. |
| 109 | |
| 110 | * 2018-01-19 |
| 111 | ** Update SML/NJ libraries to SML/NJ 110.82. |
| 112 | |
| 113 | * 2017-12-29 |
| 114 | ** Add support for `(*#showBasis "file" *)` directives. This feature is |
| 115 | meant to facilitate auto-completion via |
| 116 | https://github.com/MatthewFluet/company-mlton[`company-mlton`] and similar |
| 117 | tools. |
| 118 | |
| 119 | * 2017-12-20 |
| 120 | ** Update performance comparison on website. Thanks to Curtis Dunham for the |
| 121 | pull request. |
| 122 | |
| 123 | * 2017-12-17 |
| 124 | ** Updates to `-show-basis`: |
| 125 | *** `-show-basis-flat`: Recursively expand structures in environments, |
| 126 | displaying components with long identifiers. |
| 127 | *** `-show-basis-def`: Appends `(* @ region *)` annotations to items shown |
| 128 | in environment. |
| 129 | *** `-show-basis-compact`: Tries to optimize vertical space (at the expense |
| 130 | of long lines). |
| 131 | |
| 132 | * 2017-12-11 |
| 133 | ** Drop `_BSD_SOURCE` and `_POSIX_C_SOURCE` feature macros in |
| 134 | `./runtime/cenv.h`. |
| 135 | |
| 136 | * 2017-12-10 |
| 137 | ** Add a `Dockerfile` to build/test MLton. Thanks to Richard Laughlin for the |
| 138 | pull request. |
| 139 | |
| 140 | * 2017-12-06 |
| 141 | ** Remove `$PREFIX` and `$prefix` from top-level `Makefile.in`; use |
| 142 | `./configure --prefix path`. Thanks to Richard Laughlin for the pull |
| 143 | request. |
| 144 | |
| 145 | * 2017-12-03 |
| 146 | ** Fix heap invariant predicates. |
| 147 | |
| 148 | * 2017-11-15 |
| 149 | ** Eliminate the use of (some) global mutable state for signal handling. |
| 150 | |
| 151 | * 2017-11-14 |
| 152 | ** Store forwarding pointer for an object in the object header (rather than in |
| 153 | the object data and setting the header to a sentinel value). |
| 154 | |
| 155 | * 2017-11-02 |
| 156 | ** Updates to stack management in backend: |
| 157 | *** Improve `Allocation.Stack.get`. |
| 158 | *** Do not force `Cont` block arguments to stack. |
| 159 | |
| 160 | * 2017-10-30 |
| 161 | ** In `signature SSA_TO_RSSA_STRUCTS` share by `Rssa.Atoms = Ssa.Atoms`. This |
| 162 | is the idiom used elsewhere in the compiler, rather than sharing individual |
| 163 | sub-structures of `Atoms`. |
| 164 | ** Minor updates to `DirectedGraph` and `Tree` in MLton library. |
| 165 | |
| 166 | * 2017-10-23 |
| 167 | ** Add `-seed-rand w` compile-time option, to seed the pseudo-random number |
| 168 | generator. |
| 169 | ** Add a new MachineShuffle pass (disabled by default) that shuffles the |
| 170 | collection of chunks within the program and shuffles the collection of blocks |
| 171 | within a chunk. With the `-seed-rand w` compile-time option, can be used to |
| 172 | generate executables with distinct code placements. |
| 173 | |
| 174 | * 2017-10-23 |
| 175 | ** Use a relative path in the `mlton` script, rather than an absolute path. |
| 176 | The absolute path needed to be set to the intended installation directory, |
| 177 | which made it difficult to install a binary release in a local directory. |
| 178 | Undertaken by Maksim Yegorov at RIT supported by NSF CISE Research |
| 179 | Infrastructure (CRI) award. |
| 180 | |
| 181 | * 2017-10-21 |
| 182 | ** Add unsafe operations for array uninitialization and raw arrays. |
| 183 | *** Rename `Array_uninit: SeqIndex.int -> 'a array` primitive to |
| 184 | `Array_alloc: SeqIndex.int -> 'a array`. |
| 185 | *** Add `Array_uninit: 'a array * SeqIndex.int -> unit` primitive to set all |
| 186 | objptrs in the element at the given index to a bogus non-objptr value |
| 187 | (`0wx1`). One motivation for this primitive is to support space-efficient |
| 188 | polymorphic resizeable arrays. When shrinking a resizeable array, we would |
| 189 | like to "`NULL`" out the elements that are no longer part of the logical |
| 190 | array, in order to avoid a (logical) space leak. |
| 191 | *** Add `Array_uninitIsNop: 'a array -> bool` primitive to answer if the |
| 192 | `Array_uninit` primitive applied to the same array would be a nop (i.e., if |
| 193 | the array has no objptrs in the elements). This can be used to skip a |
| 194 | bulk-`Array_uninit` loop when it is known that the `Array_uninit` operations |
| 195 | would be nops. |
| 196 | *** Add `Array_allocRaw: SeqIndex.int -> 'a array` primitive to allocate an |
| 197 | array, but with a header that indicates that the array has no objptrs. Add |
| 198 | `Array_toArray: 'a array -> 'a array` primitive to update the header of an |
| 199 | `Array_allocRaw` allocated array to reveal the objptrs. One motiviation for |
| 200 | this primitive is that, in a parallel setting, the uninitialization of an |
| 201 | array can be a sequential bottleneck. The `Array_allocRaw` is a constant |
| 202 | time operation and the subsequent `Array_uninit` operations can be performed |
| 203 | in parallel. |
| 204 | *** Extend `structure Unsafe.Array` with additional operations. See |
| 205 | `./basis-library/sml-nj/unsafe.sig`. |
| 206 | |
| 207 | * 2017-10-20 |
| 208 | ** Introduce ShareZeroVec SSA optimization to share zero-length vectors after |
| 209 | coercion-based optimizations. Undertaken by Maksim Yegorov at RIT supported |
| 210 | by NSF CISE Research Infrastructure (CRI) award. |
| 211 | |
| 212 | * 2017-10-18 |
| 213 | ** New canonicalization strategy for CommonSubexp SSA optimization. |
| 214 | Previously, the canonicalization of commutative arithmetic primitives was |
| 215 | sensitive to variable hashes (created by an unseeded pseudo-random number |
| 216 | generator); now, the canonicalization of commutative arithmetic primitives is |
| 217 | sensitive to relative definition order of variables. |
| 218 | |
| 219 | * 2017-10-12 |
| 220 | ** Fix bug in runtime argument option parsing. |
| 221 | |
| 222 | * 2017-10-05 |
| 223 | ** Many updates and improvements to diagnostic messages. See |
| 224 | https://github.com/MLton/mlton/pull/195 for details. |
| 225 | |
| 226 | * 2017-09-27 |
| 227 | ** Add rudimentary support for `./configure`; in particular, support |
| 228 | `--with-gmp-lib` and `--with-gmp-include` to set location of GMP and |
| 229 | `--prefix` to specify an install prefix. Undertaken by Maksim Yegorov at RIT |
| 230 | supported by NSF CISE Research Infrastructure (CRI) award. |
| 231 | |
| 232 | * 2017-08-21 |
| 233 | ** Introduce `Array_copyArray: 'a array * SeqIndex.int * 'a array * |
| 234 | SeqIndex.int * SeqIndex.int -> unit` and `Array_copyVector: 'a array * |
| 235 | SeqIndex.int * 'a vector * SeqIndex.int * SeqIndex.int -> unit` primitives |
| 236 | which are used to implement a number of array and vector construction |
| 237 | functions, particularly `append`, `concat`, and `concatWith`. The primitives |
| 238 | compile to `memmove` operations, which (significantly) outperforms MLton's |
| 239 | element-by-element construction for large sequences. Undertaken by Bryan Camp |
| 240 | at RIT supported by NSF CISE Research Infrastructure (CRI) award. |
| 241 | |
| 242 | * 2017-07-25 |
| 243 | ** Force PIC generation on amd64-linux targets. Thanks to Kuen-Bang Hou |
| 244 | (Favonia) for the pull request. |
| 245 | |
| 246 | * 2017-07-11 |
| 247 | ** Generalize the `subWord` primitives to |
| 248 | + |
| 249 | ---- |
| 250 | | WordArray_subWord of {seqSize:WordSize.t, eleSize: WordSize.t} |
| 251 | | WordArray_updateWord of {seqSize: WordSize.t, eleSize: WordSize.t} |
| 252 | | WordVector_subWord of {seqSize: WordSize.t, eleSize: WordSize.t} |
| 253 | ---- |
| 254 | + |
| 255 | Undertaken by Bryan Camp at RIT supported by NSF CISE Research Infrastructure |
| 256 | (CRI) award. |
| 257 | |
| 258 | * 2017-07-11 |
| 259 | ** Add a parser combinator library (`structure StreamParser`) to the MLton |
| 260 | Library. Undertaken by Jason Carr at RIT supported by NSF CISE Research |
| 261 | Infrastructure (CRI) award. |
| 262 | ** Add a parser for the SXML IR (`structure ParseSxml`). Undertaken by Jason |
| 263 | Carr at RIT supported by NSF CISE Research Infrastructure (CRI) award. |
| 264 | ** Allow compilation to start with a `.sxml` file. Undertaken by Jason Carr |
| 265 | at RIT supported by NSF CISE Research Infrastructure (CRI) award. |
| 266 | |
| 267 | * 2017-06-29 |
| 268 | ** Replace `-drop-pass regex` compile-time option with `-disable-pass regex` |
| 269 | compile option and add `-enable-pass regex` compile option. Various XML, |
| 270 | SXML, SSA, SSA2, RSSA, and Machine IR optimization passes are initialized with |
| 271 | a default status, which can be overriden by `-{disable,enable}-pass`. In |
| 272 | particular, it is now easy to add a work-in-progress (and potentially buggy) |
| 273 | pass to the simplification pipeline with `execute = false` default status, to |
| 274 | be selectively executed with `-enable-pass`. Undertaken by Bryan Camp at RIT |
| 275 | supported by NSF CISE Research Infrastructure (CRI) award. |
| 276 | ** Add LoopUnswitch and LoopUnroll SSA optimizations (undertaken by Matthew |
| 277 | Surawski as an RIT CS MS Capstone Project). Initial evaluation demonstrates |
| 278 | some non-trivial performance gains, no non-trivial performance losses, and |
| 279 | only minor code size increases, but currently disabled pending a more thorough |
| 280 | evaluation. |
| 281 | |
| 282 | * 2017-05-23 |
| 283 | ** Expand the set of MLB annotations: |
| 284 | *** `nonexhaustiveBind`, `nonexhaustiveExnBind`, `redundantBind`: controls |
| 285 | diagnostics for `val` declarations (which may raise `Bind` on failure). |
| 286 | *** `nonexhaustiveMatch`, `nonexhaustiveExnMatch`, `redundantMatch`: |
| 287 | controls diagnostics for `case` expressions, `fn` expressions, and `fun` |
| 288 | declarations (which may raise `Match` on failure). |
| 289 | *** `nonexhaustiveRaise`, `nonexhaustiveExnRaise`, `redundantRaise`: |
| 290 | controls diagnostics for `handle` expressions (which implicitly re-raise on |
| 291 | failure). Note that `nonexhaustiveRaise` and `nonexhaustiveExnRaise` |
| 292 | default to `ignore`. The combination of `nonexhaustiveRaise warn` and |
| 293 | `nonexhaustiveExnRaise ignore` can be useful for finding handlers that |
| 294 | handle some, but not all, values of an exception variant. |
| 295 | ** Make a number of improvements to diagnostic messages: |
| 296 | *** Display nonexhaustive exception patterns as `_ : exn`, rather than |
| 297 | `e`. |
| 298 | *** Normalize nonexhaustive patterns by sorting (e.g., by `ConApp` name). |
| 299 | *** Report complete enumeration of unhandled constants, rather than a single |
| 300 | example. |
| 301 | *** Report nonexhaustive patterns of record type as records, rather than as |
| 302 | tuples. |
| 303 | |
| 304 | * 2017-04-20 |
| 305 | ** Updates to SSA, SSA2, and RSSA IR support infrastructure |
| 306 | *** Display more context when reporting SSA and SSA2 IR type errors. |
| 307 | *** Add `-layout-width n` compile expert option to control the target width |
| 308 | for the pretty printer. |
| 309 | *** Make cosmetic improvments to SSA and SSA2 IR display (uses of global |
| 310 | variables bound to small constants and conapps are commented with the |
| 311 | corresponding value; include loop forest for functions with `-keep dot`). |
| 312 | *** Improve RSSA constant folding and copy propagation. |
| 313 | *** Limit Machine IR `Globals` to variables used outside of the `main` |
| 314 | function. |
| 315 | |
| 316 | * 2017-04-15 |
| 317 | ** Add `gc-summary-file file` runtime option. |
| 318 | |
| 319 | * 2017-04-15 |
| 320 | ** Rename and add `smlnj-mlton-x{2,4,8,16}` top-level `Makefile` targets. |
| 321 | ** Update SML/NJ librarys to SML/NJ 110.80 (making use of supported |
| 322 | SuccessorML features). |
| 323 | ** Not support for SML/NJ extensions via SuccessorML MLB annotations on |
| 324 | website. |
| 325 | |
| 326 | * 2017-04-14 |
| 327 | ** Add support for vector expressions (`#[e1, e2, ..., en]`) and vector |
| 328 | patterns (`#[p1, p2, ..., pn]`) and add `Vector_vector` n-ary primitive. |
| 329 | Initial support for vector expressions and the `Vector_vector` primitive were |
| 330 | undertaken by Krishna Ravikumar as an RIT CS MS Capstone Project. |
| 331 | |
| 332 | * 2017-03-29 |
| 333 | ** Update DOS eol handling and tweak error messages in lexer. |
| 334 | |
| 335 | * 2017-03-27 |
| 336 | ** Correct off-by-one error in column numbers. Thanks to Jacob Zimmerman for |
| 337 | the error report and pull request. |
| 338 | |
| 339 | * 2017-03-15 |
| 340 | ** Updates to SuccessorML support: |
| 341 | *** Add an `allowSuccessorML {false|true}` MLB annotation to enable all |
| 342 | Successor ML features with a single annotation. |
| 343 | *** Fix parsing of numeric labels to only accept an INT token that does not |
| 344 | begin with 0, is not an extended literal, is not negative, and is decimal. |
| 345 | *** Drop the alternate word prefixes (`0xw` and `0bw`). |
| 346 | *** Unconditionally allow line comments in MLB files. |
| 347 | *** Allow UTF-8 byte sequences in text constants. |
| 348 | *** Refactor `ml.lex` and `mlb.lex` to be more maintainable. |
| 349 | *** Rename `allowRecPunning` annotation to `allowRecordPunExps`. |
| 350 | |
| 351 | * 2017-02-27 |
| 352 | ** Update ML-Yacc examples (`calc`, `fol`, `pascal`) to comply with MLton |
| 353 | build process. Thanks to Hai Nguyen Van for the pull request. |
| 354 | |
| 355 | * 2017-01-25 |
| 356 | ** Update PortingMLton documentation and `./bin/add-cross` script. Thanks to |
| 357 | Daniel Moerner for the pull request. |
| 358 | |
| 359 | * 2016-09-29 |
| 360 | ** Constant fold `CPointer_equal(NULL, NULL)` to `true`. |
| 361 | |
| 362 | * 2016-09-29 |
| 363 | ** Introduce `NEEDS_SIGALTSTACK_EXEC` config in runtime system. |
| 364 | |
| 365 | * 2016-09-27 |
| 366 | ** Construct a devel build version string from last commit time and last |
| 367 | commit hash. |
| 368 | ** Omit build date and build node from version banner; makes self-compiles |
| 369 | deterministic. |
| 370 | ** Remove `upgrade-basis.sml` from build. The generated `upgrade-basis.sml` |
| 371 | was introduced to handle incompatibilities in the Basis Library provided by an |
| 372 | old version of MLton and the Basis Library assumed by the current sources. |
| 373 | However, there are no incompatibilities with MLton 20130715, MLton 20100608, |
| 374 | or MLton 20070826. Nonetheless, the feature testing performed by |
| 375 | `./bin/upgrade-basis` to generate `upgrade-basis.sml` is time consuming, |
| 376 | especially when trying to simply type check the compiler sources. |
| 377 | |
| 378 | * 2016-06-20 |
| 379 | ** Do not `gzip` man pages on OpenBSD. Thanks to Alexander Abushkevich for |
| 380 | the pull request. |
| 381 | |
| 382 | * 2016-06-20 |
| 383 | ** Generate position independent code for OpenBSD. Thanks to Alexander |
| 384 | Abushkevich for the pull request. |
| 385 | |
| 386 | * 2016-06-20 |
| 387 | ** Fix profiling for amd64-openbsd and x86-openbsd. Thanks to Alexander |
| 388 | Abushkevich for the pull request. |
| 389 | |
| 390 | * 2016-04-06 |
| 391 | ** Update SML/NJ librarys to SML/NJ 110.79. |
| 392 | |
| 393 | * 2016-03-22 |
| 394 | ** Update LLVM codegen to support (and require) >= llvm-3.7. Thanks to Eugene |
| 395 | Akentyev for the pull request. |
| 396 | |
| 397 | * 2016-02-26 |
| 398 | ** Configure GMP location via `Makefile`. |
| 399 | |
| 400 | * 2016-01-10 |
| 401 | ** Fix typo in `mlb-formal.tex`. Thanks to Jon Sterling for the pull request. |
| 402 | |
| 403 | * 2015-11-10 |
| 404 | ** Update SML/NJ librarys to SML/NJ 110.78. Use `allowOrPats` and |
| 405 | `allowSigWithtype` to minimize diffs. |
| 406 | |
| 407 | * 2015-10-20 |
| 408 | ** Fix elaboration of `withtype` in signature. |
| 409 | |
| 410 | * 2015-10-06 |
| 411 | ** Add support for setting CM anchor bindings in `cm2mlb` tool. |
| 412 | |
| 413 | * 2015-10-06 |
| 414 | ** Fix non-exhaustive match warnings with or-patterns. Thanks to Rob Simmons |
| 415 | for the bug report. |
| 416 | ** Distinguish between partial and fully redundant matches. |
| 417 | ** Report partial redundancy in `val` declarations. |
| 418 | ** Lower precedence of or-patterns in parser. |
| 419 | ** Make a variety of cosmetic improvements to non-exhaustive and redundant |
| 420 | error/warning messages, primarily to be consistent in formatting between |
| 421 | quoted AST and generated messages. |
| 422 | |
| 423 | * 2015-07-10 |
| 424 | ** Extend support for arm64 (aarch64). Thanks to Edmund Evans for the patch. |
| 425 | |
| 426 | * 2015-06-22 |
| 427 | ** Introduce `valrecConstr {warn|error|ignore}` MLB annotation to report when |
| 428 | a `val rec` (or `fun`) declaration redefines an identifier that previously had |
| 429 | constructor status. |
| 430 | |
| 431 | * 2015-06-19 |
| 432 | ** Add support for selected SuccessorML features (undertaken by Kevin Bradley |
| 433 | as an RIT CS MS Capstone Project). |
| 434 | *** `do`-declarations (`allowDoDecls`) |
| 435 | *** extended literals (`allowExtendedLiterals`) |
| 436 | *** line comments (`allowLineComments`) |
| 437 | *** optional leading bar in matches, fun decls, and datatype decls |
| 438 | (`allowOptBar`) |
| 439 | *** optional trailing semicolon in sequence expressions (`allowOptSemicolon`) |
| 440 | *** or patterns (`allowOrPats`) |
| 441 | *** record expression punning (`allowRecPunning`) |
| 442 | *** withtype in signatures (`allowSigWithtype`) |
| 443 | |
| 444 | * 2015-06-10 |
| 445 | ** Hide equality status of poly (and mono) vector and array slices. |
| 446 | ** Hide type equality of mono and poly `Word8.word` arrays and vectors. |
| 447 | |
| 448 | * 2015-06-08 |
| 449 | ** Added `reentrant` attribute to `_import`. An `_import`-ed C function that |
| 450 | (directly or indirectly) calls an `_export`-ed SML function should be |
| 451 | attributed `reentrant`. |
| 452 | |
| 453 | * 2015-06-08 |
| 454 | ** Make compilation deterministic: |
| 455 | *** Eliminate output executable name from compile-time specified `@MLton` |
| 456 | arguments. |
| 457 | *** Deterministically generate magic constant for executable. |
| 458 | |
| 459 | * 2015-06-08 |
| 460 | ** Add `-keep ast` compile option. Undertaken by Ross Bayer at RIT supported |
| 461 | by NSF CISE Research Infrastructure (CRI) award. |
| 462 | |
| 463 | * 2015-06-02 |
| 464 | ** Updates to Debian packaging. Thanks to Christopher Cramer for the pull |
| 465 | request. |
| 466 | |
| 467 | * 2015-03-30 |
| 468 | ** Use `LANG=en_us` when computing version and build date. Thanks to Eugene |
| 469 | Akentyev for the pull request. |
| 470 | |
| 471 | * 2015-02-17 |
| 472 | ** Update `mlnlffigen` to warn and skip functions with `struct`/`union` |
| 473 | arguments. Thanks to Armando Doval for the pull request. |
| 474 | |
| 475 | * 2014-12-22 |
| 476 | ** Move pervasive constructs from `./mlton/ast` to `./mlton/atoms`, so that |
| 477 | `./mlton/ast/sources.mlb` depends on `./mlton/atoms/sources.mlb` (and not the |
| 478 | other way around). Undertaken by Vedant Raiththa at RIT supported by NSF CISE |
| 479 | Research Infrastructure (CRI) award. |
| 480 | |
| 481 | * 2014-12-17 |
| 482 | ** Cache a worker thread to service calls of `_export`-ed functions. Thanks |
| 483 | to Bernard Berthomieu for the bug report. |
| 484 | |
| 485 | * 2014-12-02 |
| 486 | ** Post-process generated front-end files for compatibility with SML/NJ's |
| 487 | recent `ml-lex` and `ml-yacc` tools that generate log identifiers rather than |
| 488 | unqualified (top-level environment) identifiers. |
| 489 | ** Corrected documentation for SML/NJ `Makefile` target and fixed |
| 490 | `bootstrap-nj` target. Thanks to Daniel Rosenwasser for the pull request. |
| 491 | |
| 492 | * 2014-11-21 |
| 493 | ** Reorganized runtime support for `IntInf` operations so that programs that |
| 494 | do not use `IntInf` compile to executables with no residual dependency on GMP. |
| 495 | ** Fixed bug in `MLton.IntInf.fromRep` that could yield values that violate |
| 496 | the `IntInf` representation invariants. Thanks to Rob Simmons for the bug |
| 497 | report. |
| 498 | |
| 499 | * 2014-10-24 |
| 500 | ** Added `pure` and `impure` attributes to `_import`. An unattributed |
| 501 | `_import` is treated as `impure`. A `pure` `_import` may be subject to more |
| 502 | aggressive optimizations (common subexpression elimination, dead-code |
| 503 | elimination). Undertaken by Vedant Raiththa at RIT supported by NSF CISE |
| 504 | Research Infrastructure (CRI) award. |
| 505 | |
| 506 | * 2014-10-22 |
| 507 | ** Various updates to treatment of `IntInf` constants in the compiler. |
| 508 | *** Recognize both `Big` and `Small` representations of `IntInf`-s. |
| 509 | *** Translate `IntInf` consts to `Big` and `Small` representations in |
| 510 | conversion from SSA to RSSA. This is consistent with the treatment of other |
| 511 | `IntInf` operations in the conversion. After the conversion, `IntInf` is no |
| 512 | longer treated as a primitive. |
| 513 | *** Remove `initIntInfs` from program initialization. |
| 514 | *** Constant fold `IntInf_toVector` and `WordVector_toIntInf` primitives. |
| 515 | |
| 516 | * 2014-10-20 |
| 517 | ** Various updates to `structure WordXVector` in compiler proper. |
| 518 | *** Update the `WordXVector.layout` function. If the `elementSize` is |
| 519 | `WordX.word8` and more than 90% of the characters satisfy `Char.isGraph |
| 520 | orelse Char.isSpace`, then display as an SML string constant (with |
| 521 | non-printable characters SML-escaped). Otherwise, display as an SML/NJ-style |
| 522 | `#[0x0, 0xF]` vector literal. |
| 523 | *** Update initialization of `static struct GC_vectorInit vectorInits[]` |
| 524 | constants in runtime. If the `WordXVector`'s (primitive) `elementSize` is |
| 525 | `WordSize.W8`, then emit a C-escaped string constant. Otherwise, emit a |
| 526 | C-array initialization. |
| 527 | |
| 528 | * 2014-08-15 |
| 529 | ** More updates to benchmark infrastructure. |
| 530 | *** Make `update-counts.sh` script more robust. |
| 531 | *** Update `hamlet.sml` benchmark program to close input file after each |
| 532 | loop. |
| 533 | *** Update `fft.sml` benchmark program to only invoke `test` function with |
| 534 | power-of-2 arguments. |
| 535 | *** Update `model-elimination.sml` benchmark program to iterate `main ()` |
| 536 | according to `doit` size parameter. |
| 537 | |
| 538 | * 2014-08-11 |
| 539 | ** Include `winsock2.h` before `windows.h` in MinGW port. Thanks to Shu-Hung |
| 540 | You for the pull request. |
| 541 | |
| 542 | * 2014-07-31 |
| 543 | ** Refactor array and vector implementation in Basis Library into a primitive |
| 544 | implementation (using `SeqInt.int` for indexing) and a wrapper implementation |
| 545 | (using the default `Int.int` for indexing). Thanks to Rob Simmons for the |
| 546 | pull request. |
| 547 | ** Correct description of `MLton.{Vector,Array}.unfoldi` on website. Thanks |
| 548 | to Rob Simmons for the pull request. |
| 549 | |
| 550 | * 2014-07-14 |
| 551 | ** Updates to benchmark infrastructure. |
| 552 | *** Add `even-odd.sml` benchmark that exercises mutual tail recursion. |
| 553 | *** Add `update-counts.sh` script to calculate appropriate benchmark |
| 554 | iteration counts and update benchmark iteration counts so that all |
| 555 | benchmarks run for at least 30 seconds. |
| 556 | *** Updates to benchmark driver program. |
| 557 | |
| 558 | * 2014-07-07 |
| 559 | ** Change `./basis-library/integer/int-inf.sml` to reduce dependency on |
| 560 | GMP-specific details of `./basis-library/integer/int-inf0.sml`. Thanks to Rob |
| 561 | Simmons for the pull request. |
| 562 | ** Correct type and description of `MLton.IntInf.fromRep` on website. Thanks |
| 563 | to Rob Simmons for the pull request. |
| 564 | |
| 565 | * 2014-07-01 |
| 566 | ** Add experimental LLVM codegen (undertaken by Brian Leibig as an RIT CS MS |
| 567 | Project). |
| 568 | |
| 569 | * 2014-06-09 |
| 570 | ** Update `CallingFromSMLToC` page on website. Thanks to Bikal Gurung for the |
| 571 | pull request. |
| 572 | |
| 573 | * 2014-03-18 |
| 574 | ** Updates for MinGW port. |
| 575 | |
| 576 | * 2014-02-07 |
| 577 | ** Update AsciiDoc sources for website. |
| 578 | |
| 579 | * 2013-10-31 |
| 580 | ** Various updates to website. Thanks to Mauricio C Antunes for the pull |
| 581 | request. |
| 582 | *** Add Tofte's tutorial and Rossberg's grammar. |
| 583 | *** Fix links to implementations. |
| 584 | |
| 585 | * 2013-10-10 |
| 586 | ** Update links from `References` page on website. Thanks to Mauricio C |
| 587 | Antunes for the pull request. |
| 588 | |
| 589 | * 2013-09-02 |
| 590 | ** Fix example for `Lazy` page on website. Thanks to Daniel Rosenwasser for |
| 591 | the pull request. |
| 592 | |
| 593 | == Version 20130715 |
| 594 | |
| 595 | Here are the changes from version 20100608 to version 20130715. |
| 596 | |
| 597 | === Summary |
| 598 | |
| 599 | * Compiler. |
| 600 | ** Cosmetic improvements to type-error messages. |
| 601 | ** Removed features: |
| 602 | *** Bytecode codegen: The bytecode codegen had not seen significant use and |
| 603 | it was not well understood by any of the active developers. |
| 604 | *** Support for `.cm` files as input: The ML Basis system provides much |
| 605 | better infrastructure for "programming in the very large" than the (very) |
| 606 | limited support for CM. The `cm2mlb` tool (available in the source |
| 607 | distribution) can be used to convert CM projects to MLB projects, preserving |
| 608 | the CM scoping of module identifiers. |
| 609 | ** Bug fixes: see changelog |
| 610 | * Runtime. |
| 611 | ** Bug fixes: see changelog |
| 612 | * Language. |
| 613 | ** Interpret `(*#line line:col "file" *)` directives as relative |
| 614 | file names. |
| 615 | ** ML Basis annotations. |
| 616 | *** Added: `resolveScope` |
| 617 | * Libraries. |
| 618 | ** Basis Library. |
| 619 | *** Improved performance of `String.concatWith`. |
| 620 | *** Use bit operations for `REAL.class` and other low-level operations. |
| 621 | *** Support additional variables with `Posix.ProcEnv.sysconf`. |
| 622 | *** Bug fixes: see changelog |
| 623 | ** `MLton` structure. |
| 624 | *** Removed: `MLton.Socket` |
| 625 | ** Other libraries. |
| 626 | *** Updated: ckit library, MLRISC library, SML/NJ library |
| 627 | *** Added: MLLPT library |
| 628 | * Tools. |
| 629 | ** mllex |
| 630 | *** Generate `(*#line line:col "file.lex" *)` directives with simple |
| 631 | (relative) file names, rather than absolute paths. |
| 632 | ** mlyacc |
| 633 | *** Generate `(*#line line:col "file.grm" *)` directives with simple |
| 634 | (relative) file names, rather than absolute paths. |
| 635 | *** Fixed bug in comment-handling in lexer. |
| 636 | |
| 637 | === Details |
| 638 | |
| 639 | * 2013-07-06 |
| 640 | ** Update SML/NJ libraries to SML/NJ 110.76. |
| 641 | |
| 642 | * 2013-06-19 |
| 643 | ** Upgrade `gdtoa.tgz`; fixed bug in `Real32.{fmt,toDecimal,toString}`, which |
| 644 | in some cases produced too many digits |
| 645 | |
| 646 | * 2013-06-18 |
| 647 | ** Removed `MLton.Socket` structure (deprecated in last release). |
| 648 | |
| 649 | * 2013-06-10 |
| 650 | ** Improved performance of `String.concatWith`. |
| 651 | |
| 652 | * 2013-05-22 |
| 653 | ** Update SML/NJ libraries to SML/NJ 110.75. |
| 654 | |
| 655 | * 2013-04-30 |
| 656 | ** Detect PowerPC 64 architecture. |
| 657 | |
| 658 | * 2012-10-09 |
| 659 | ** Fixed bug in elaboration that erroneously accepted the following: |
| 660 | |
| 661 | signature S = sig structure A : sig type t end |
| 662 | and B : sig type t end where type t = A.t end |
| 663 | |
| 664 | * 2012-09-04 |
| 665 | ** Introduce an MLB annotation to control overload and flex record resolution |
| 666 | scope: `resolveScope {strdec|dec|topdec|program}`. |
| 667 | |
| 668 | * 2012-07-04 |
| 669 | ** Simplify use of `getsockopt` and `setsockopt` in Basis Library. |
| 670 | ** Direct implementation of `Socket.Ctl.{getATMARK,getNREAD}` in runtime |
| 671 | system, rather than indirect implementation in Basis Library via `ioctl`. |
| 672 | ** Replace use of casting through a union with `memcpy` in runtime. |
| 673 | |
| 674 | * 2012-06-11 |
| 675 | ** Use bit operations for `REAL.class` and other low-level operations. |
| 676 | ** Fixed bugs in `REAL.copySign`, `REAL.signBit`, and `REAL.{to,from}Decimal`. |
| 677 | |
| 678 | * 2012-06-01 |
| 679 | ** Cosmetic improvements to type-error messages. |
| 680 | ** Fixed bug in elaboration that erroneously rejected the following: |
| 681 | |
| 682 | datatype ('a, ''a) t = T |
| 683 | type ('a, ''a) u = unit |
| 684 | |
| 685 | and erroneously accepted the following: |
| 686 | |
| 687 | fun f (x: 'a) : ''a = x |
| 688 | fun g (x: 'a) : ''a = if x = x then x else x |
| 689 | |
| 690 | * 2012-02-24 |
| 691 | ** Fixed bug in redundant SSA optimization. |
| 692 | |
| 693 | * 2011-06-20 |
| 694 | ** Support additional variables with `Posix.ProcEnv.sysconf`. |
| 695 | |
| 696 | * 2011-06-17 |
| 697 | ** Change `mllex` and `mlyacc` to generate `#line` directives with simple file |
| 698 | names, rather than absolute paths. |
| 699 | ** Interpret `#line` directives as relative file names. |
| 700 | |
| 701 | * 2011-06-14 |
| 702 | ** Fixed bug in SSA/SSA2 shrinker that could erroneously turn a non-tail |
| 703 | function call with a `Bug` transfer as its continuation into a tail function |
| 704 | call. |
| 705 | |
| 706 | * 2011-06-11 |
| 707 | ** Update SML/NJ libraries to SML/NJ 110.73 and add ML-LPT library. |
| 708 | |
| 709 | * 2011-06-10 |
| 710 | ** Fixed bug in translation from SSA2 to RSSA with case expressions over |
| 711 | non-primitive-sized words. |
| 712 | ** Fixed bug in SSA/SSA2 type checking of case expressions over words. |
| 713 | |
| 714 | * 2011-06-04 |
| 715 | ** Upgrade `gdtoa.tgz`. |
| 716 | ** Remove bytecode codegen. |
| 717 | ** Remove support for `.cm` files as input. |
| 718 | |
| 719 | * 2011-05-03 |
| 720 | ** Fixed a bug with the treatment of `as`-patterns, which should not allow the |
| 721 | redefinition of constructor status. |
| 722 | |
| 723 | * 2011-02-18 |
| 724 | ** Fixed bug with treatment of nan in common subexpression elimination SSA |
| 725 | optimization. |
| 726 | |
| 727 | * 2011-02-18 |
| 728 | ** Fixed bug in translation from SSA2 to RSSA with weak pointers. |
| 729 | |
| 730 | * 2011-02-05 |
| 731 | ** Fixed bug in amd64 codegen calling convention for varargs C calls. |
| 732 | |
| 733 | * 2011-01-17 |
| 734 | ** Fixed bug in comment-handling in lexer for `mlyacc`'s input language. |
| 735 | |
| 736 | * 2010-06-22 |
| 737 | ** Fixed bug in elaboration of function clauses with different numbers of |
| 738 | arguments that would raise an uncaught `Subscript` exception. |
| 739 | |
| 740 | |
| 741 | == Version 20100608 |
| 742 | |
| 743 | Here are the changes from version 20070826 to version 20100608. |
| 744 | |
| 745 | === Summary |
| 746 | |
| 747 | * New platforms. |
| 748 | ** ia64-hpux |
| 749 | ** powerpc64-aix |
| 750 | * Compiler. |
| 751 | ** Command-line switches. |
| 752 | *** Added: `-mlb-path-var '<name> <value>'` |
| 753 | *** Removed: `-keep sml`, `-stop sml` |
| 754 | ** Improved constant folding of floating-point operations. |
| 755 | ** Experimental: Support for compiling to a C library; see wiki documentation. |
| 756 | ** Extended `-show-def-use` output to include types of variable definitions. |
| 757 | ** Deprecated features (to be removed in a future release) |
| 758 | *** Bytecode codegen: The bytecode codegen has not seen significant use and |
| 759 | it is not well understood by any of the active developers. |
| 760 | *** Support for `.cm` files as input: The ML Basis system provides much |
| 761 | better infrastructure for "programming in the very large" than the (very) |
| 762 | limited support for CM. The `cm2mlb` tool (available in the source |
| 763 | distribution) can be used to convert CM projects to MLB projects, preserving |
| 764 | the CM scoping of module identifiers. |
| 765 | ** Bug fixes: see changelog |
| 766 | * Runtime. |
| 767 | ** `@MLton` switches. |
| 768 | *** Added: `may-page-heap {false|true}` |
| 769 | ** `may-page-heap`: By default, MLton will not page the heap to disk when |
| 770 | unable to grow the heap to accomodate an allocation. (Previously, this |
| 771 | behavior was the default, with no means to disable, with security an |
| 772 | least-surprise issues.) |
| 773 | ** Bug fixes: see changelog |
| 774 | * Language. |
| 775 | ** Allow numeric characters in ML Basis path variables. |
| 776 | * Libraries. |
| 777 | ** Basis Library. |
| 778 | *** Bug fixes: see changelog. |
| 779 | ** `MLton` structure. |
| 780 | *** Added: `MLton.equal`, `MLton.hash`, `MLton.Cont.isolate`, |
| 781 | `MLton.GC.Statistics, `MLton.Pointer.sizeofPointer`, |
| 782 | `MLton.Socket.Address.toVector` |
| 783 | *** Changed: |
| 784 | *** Deprecated: `MLton.Socket` |
| 785 | ** `Unsafe` structure. |
| 786 | *** Added versions of all of the monomorphic array and vector structures. |
| 787 | ** Other libraries. |
| 788 | *** Updated: ckit library, MLRISC library, SML/NJ library. |
| 789 | * Tools. |
| 790 | ** `mllex` |
| 791 | *** Eliminated top-level `type int = Int.int` in output. |
| 792 | *** Include `(*#line line:col "file.lex" *)` directives in output. |
| 793 | *** Added `%posint` command, to set the `yypos` type and allow the lexing of |
| 794 | multi-gigabyte files. |
| 795 | ** `mlnlffigen` |
| 796 | *** Added command-line switches `-linkage archive` and `-linkage shared`. |
| 797 | *** Deprecated command-line switch `-linkage static`. |
| 798 | *** Added support for ia64 and hppa targets. |
| 799 | ** `mlyacc` |
| 800 | *** Eliminated top-level `type int = Int.int` in output. |
| 801 | *** Include `(*#line line:col "file.grm" *)` directives in output. |
| 802 | |
| 803 | === Details |
| 804 | |
| 805 | * 2010-05-12 |
| 806 | ** Fixed bug in the mark-compact garbage collector where the C library's |
| 807 | `memcpy` was used to move objects during the compaction phase; this could lead |
| 808 | to heap corruption and segmentation faults with newer versions of `gcc` and/or |
| 809 | `glibc`, which assume that src and dst in a `memcpy` do not overlap. |
| 810 | |
| 811 | * 2010-03-12 |
| 812 | ** Fixed bug in elaboration of `datatype` declarations with `withtype` |
| 813 | bindings. |
| 814 | |
| 815 | * 2009-12-11 |
| 816 | ** Fixed performance bug in RefFlatten SSA2 optimization. |
| 817 | |
| 818 | * 2009-12-09 |
| 819 | ** Fixed performance bug in SimplifyTypes SSA optimization. |
| 820 | |
| 821 | * 2009-12-02 |
| 822 | ** Fixed bug in amd64 codegen register allocation of indirect C calls. |
| 823 | |
| 824 | * 2009-09-17 |
| 825 | ** Fixed bug in `IntInf.scan` and `IntInf.fromString` where leading spaces |
| 826 | were only accepted if the stream had an explicit sign character. |
| 827 | |
| 828 | * 2009-07-10 |
| 829 | ** Added CombineConversions SSA optimization. |
| 830 | |
| 831 | * 2009-06-09 |
| 832 | ** Removed deprecated command line switch `-show-anns {false, true}`. |
| 833 | |
| 834 | * 2009-04-18 |
| 835 | ** Removed command line switches `-keep sml` and `-stop sml`. Their meaning |
| 836 | was unclear with `.mlb` files; their effect with `.cm` files can be achieved |
| 837 | with `-stop f`. |
| 838 | |
| 839 | * 2009-04-16 |
| 840 | ** Fixed bug in `IntInf.~>>` that could cause a `glibc` assertion failure. |
| 841 | |
| 842 | * 2009-04-01 |
| 843 | ** Fixed exported type of `MLton.Process.reap`. |
| 844 | |
| 845 | * 2009-01-27 |
| 846 | ** Added `MLton.Socket.Address.toVector` to get the network-byte-order |
| 847 | representation of an IP address. |
| 848 | |
| 849 | * 2008-11-10 |
| 850 | ** Fixed bug in `MLton.size` and `MLton.share` when tracing the current stack. |
| 851 | |
| 852 | * 2008-10-27 |
| 853 | ** Fixed phantom typing of sockets by hiding the representation of socket |
| 854 | types. Previously the representation of sockets was revealed rendering the |
| 855 | phantom types useless. |
| 856 | |
| 857 | * 2008-10-10 |
| 858 | ** Fixed bug in nested `_export`/`_import` functions. |
| 859 | |
| 860 | * 2008-09-12 |
| 861 | ** Improved constant folding of floating point operations. |
| 862 | |
| 863 | * 2008-08-20 |
| 864 | ** Store the card/cross map at the end of the allocated ML heap; avoids |
| 865 | possible out of memory errors when resizing the ML heap cannot be followed by |
| 866 | a card/cross map allocation. |
| 867 | |
| 868 | * 2008-07-24 |
| 869 | ** Added support for compiling to a C library. The relevant new compiler |
| 870 | options are `-ar` and `-format`. Libraries are named based on the name of the |
| 871 | `-export-header` file. Libraries have two extra methods: |
| 872 | *** `NAME_open(argc, argv)` initializes the library and runs the SML code |
| 873 | until it reaches the end of the program. If the SML code exits or raises an |
| 874 | uncaught exception, the entire program will terminate. |
| 875 | *** `NAME_close()` will execute any registered atExit functions, any |
| 876 | outstanding finalizers, and frees the ML heap. |
| 877 | |
| 878 | * 2008-07-16 |
| 879 | ** Fixed bug in the name mangling of `_import`-ed functions with the `stdcall` |
| 880 | convention. |
| 881 | |
| 882 | * 2008-06-12 |
| 883 | ** Added `MLton.Pointer.sizeofPointer`. |
| 884 | |
| 885 | * 2008-06-06 |
| 886 | ** Added expert command line switch `-emit-main {true|false}`. |
| 887 | |
| 888 | * 2008-05-17 |
| 889 | ** Fixed bug in Windows code to page the heap to disk when unable to grow the |
| 890 | heap to a desired size. Thanks to Sami Evangelista for the bug report. |
| 891 | |
| 892 | * 2008-05-10 |
| 893 | ** Implemented `MLton.Cont.isolate`. |
| 894 | |
| 895 | * 2008-04-20 |
| 896 | ** Fixed bug in *NIX code to page the heap to disk when unable to grow the |
| 897 | heap to a desired size. Thanks to Nicolas Bertolotti for the bug report and |
| 898 | patch. |
| 899 | |
| 900 | * 2008-04-07 |
| 901 | ** More flexible active/paused stack resizing policy. + |
| 902 | Removed `thread-shrink-ratio` runtime option. + Added |
| 903 | `stack-current-grow-ratio`, `stack-current-max-reserved-ratio`, |
| 904 | `stack-current-permit-ratio`, `stack-current-shrink-ratio`, |
| 905 | `stack-max-reserved-ratio`, and `stack-shrink-ratio` runtime options. |
| 906 | |
| 907 | * 2008-04-07 |
| 908 | ** Fixed bugs in Basis Library where the representations of `OS.IO.iodesc`, |
| 909 | `Posix.IO.file_desc`, `Posix.Signal.signal`, `Socket.sock`, |
| 910 | `Socket.SOGK.sock_type` as integers were exposed. |
| 911 | |
| 912 | * 2008-03-14 |
| 913 | ** Added unsafe versions of all of the monomorphic array and vector |
| 914 | structures. |
| 915 | |
| 916 | * 2008-03-02 |
| 917 | ** Fixed bug in Basis Library where the representation of `OS.Process.status` |
| 918 | as an integer was exposed. |
| 919 | |
| 920 | * 2008-02-13 |
| 921 | ** Fixed space-safety bug in RefFlatten optimization (to flatten refs into |
| 922 | containing data structure). Thanks to Daniel Spoonhower for the bug report and |
| 923 | initial diagnosis and patch. |
| 924 | |
| 925 | * 2008-01-25 |
| 926 | ** Various updates to GC statistics gathering. Some basic GC statistics can |
| 927 | be accessed from SML by `MLton.GC.Statistics.*` functions. |
| 928 | |
| 929 | * 2008-01-24 |
| 930 | ** Added primitive (structural) polymorphic hash. |
| 931 | |
| 932 | * 2008-01-21 |
| 933 | ** Fixed frontend to accept `op _longvid_` patterns and expressions. Thanks to |
| 934 | Florian Weimer for the bug report. |
| 935 | |
| 936 | * 2008-01-17 |
| 937 | ** Extended `-show-def-use` output to include types of variable definitions. |
| 938 | |
| 939 | * 2008-01-09 |
| 940 | ** Extended `MLton_equal` to be a structural equality on all types, including |
| 941 | `real` and `->` types. |
| 942 | |
| 943 | * 2007-12-18 |
| 944 | ** Changed ML-Yacc and ML-Lex to output line directives so that MLton's |
| 945 | def-use information points to the source files (`.grm` and `.lex`) instead of |
| 946 | the generated implementations (`.grm.sml` and `.lex.sml`). |
| 947 | |
| 948 | * 2007-12-14 |
| 949 | ** Added runtime option `may-page-heap {false|true}`. By default, MLton will |
| 950 | not page the heap to disk when unable to grow the heap to a desired size. |
| 951 | (Previously, this behavior was the default, with no means to disable, with |
| 952 | security and least-surprise concerns.) Thanks to Wesley Terpstra for the |
| 953 | patch. |
| 954 | ** Fixed bug the FFI visible representation of `Int16.int ref` (and references |
| 955 | of other primitive types smaller than 32-bits) on big-endian platforms. Thanks |
| 956 | to Dave Herman for the bug report. |
| 957 | |
| 958 | * 2007-12-13 |
| 959 | ** Fixed bug in `ImperativeIOExtra.canInput` (`TextIO.canInput`). Thanks to |
| 960 | Ville Laurikari for the bug report. |
| 961 | |
| 962 | * 2007-12-09 |
| 963 | ** Better constant folding of `IntInf` operations. |
| 964 | |
| 965 | * 2007-12-07 |
| 966 | ** Fixed bug in algebraic simplification of `RealX` primitives. `Real.<= (x, |
| 967 | x)` is `false` when `x` is `NaN`. |
| 968 | |
| 969 | * 2007-11-29 |
| 970 | ** Fixed bug in type inference of flexible records. This would later cause |
| 971 | the compiler to raise the `TypeError` exception. Thanks to Wesley Terpstra for |
| 972 | the bug report. |
| 973 | |
| 974 | * 2007-11-28 |
| 975 | ** Fixed bug in cross-compilation of `gdtoa` library. Thanks to Wesley |
| 976 | Terpstra for the bug report and patch. |
| 977 | |
| 978 | * 2007-11-20 |
| 979 | ** Fixed bug in RefFlatten optimization (pass to flatten refs into containing |
| 980 | data structure). Thanks to Ruy LeyWild for the bug report. |
| 981 | |
| 982 | * 2007-11-19 |
| 983 | ** Fixed bug in the handling of weak pointers by the mark-compact garbage |
| 984 | collector. Thanks to Sean McLaughlin for the bug report and Florian Weimer for |
| 985 | the initial diagnosis. |
| 986 | |
| 987 | * 2007-11-07 |
| 988 | ** Added `%posint` command to `ml-lex`, to set the `yypos` type and allow the |
| 989 | lexing of multi-gigabyte input files. Thanks to Florian Weimer for the feature |
| 990 | concept and original patch. |
| 991 | |
| 992 | * 2007-11-07 |
| 993 | ** Added command-line switch `-mlb-path-var '<name> <value>'` for specifying |
| 994 | MLB path variables. |
| 995 | |
| 996 | * 2007-11-06 |
| 997 | ** Allow numeric characters in MLB path variables. |
| 998 | |
| 999 | * 2007-09-20 |
| 1000 | ** Fixed bug in elaboration of structures with signature constraints. This |
| 1001 | would later cause the compiler to raise the `TypeError` exception. Thanks to |
| 1002 | Vesa Karvonen for the bug report. |
| 1003 | |
| 1004 | * 2007-09-11 |
| 1005 | ** Fixed bug in interaction of `_export`-ed functions and signal |
| 1006 | handlers. Thanks to Sean McLaughlin for the bug report. |
| 1007 | |
| 1008 | * 2007-09-03 |
| 1009 | ** Fixed bug in implementation of `_export`-ed functions using `char` |
| 1010 | type. Thanks to Katsuhiro Ueno for the bug report. |
| 1011 | |
| 1012 | |
| 1013 | == Version 20070826 |
| 1014 | |
| 1015 | Here are the changes from version 20051202 to version 20070826. |
| 1016 | |
| 1017 | === Summary |
| 1018 | |
| 1019 | * New platforms: |
| 1020 | ** amd64-linux, amd64-freebsd |
| 1021 | ** hppa-hpux |
| 1022 | ** powerpc-aix |
| 1023 | ** x86-darwin (Mac OS X) |
| 1024 | * Compiler. |
| 1025 | ** Support for 64-bit platforms. |
| 1026 | *** Native amd64 codegen. |
| 1027 | ** Command-line switches. |
| 1028 | *** Added: `-codegen amd64`, `-codegen x86`, `-default-type <type>`, |
| 1029 | `-profile-val {false|true}`. |
| 1030 | *** Changed: `-stop f` (file listing now includes `.mlb` files) |
| 1031 | ** Bytecode codegen. |
| 1032 | *** Support for profiling. |
| 1033 | *** Support for exception history. |
| 1034 | * Language. |
| 1035 | ** ML Basis annotations. |
| 1036 | *** Removed: `allowExport`, `allowImport`, `sequenceUnit`, `warnMatch`. |
| 1037 | * Libraries. |
| 1038 | ** Basis Library. |
| 1039 | *** Added: `PackWord16Big, `PackWord16Little`, `PackWord64Big`, |
| 1040 | `PackWord64Little`. |
| 1041 | *** Bug Fixes: see changelog. |
| 1042 | ** `MLton` structure. |
| 1043 | *** Added: `MLTON_MONO_ARRAY`, `MLTON_MONO_VECTOR`, `MLTON_REAL`, |
| 1044 | `MLton.BinIO.tempPrefix`, `MLton.CharArray`, `MLton.CharVector`, |
| 1045 | `MLton.IntInf.BigWord`, `MLton.IntInf.SmallInt`, |
| 1046 | `MLton.Exn.defaultTopLevelHandler`, `MLton.Exn.getTopLevelHandler`, |
| 1047 | `MLton.Exn.setTopLevelHandler`, `MLton.LargeReal`, `MLton.LargeWord`, |
| 1048 | `MLton.Real`, `MLton.Real32`, `MLton.Real64`, `MLton.Rlimit.Rlim`, |
| 1049 | `MLton.TextIO.tempPrefix`, `MLton.Vector.create`, `MLton.Word.bswap`, |
| 1050 | `MLton.Word8.bswap`, `MLton.Word16`, `MLton.Word32`, `MLton.Word64`, |
| 1051 | `MLton.Word8Array`, `MLton.Word8Vector`. |
| 1052 | *** Changed: `MLton.Array.unfoldi`, `MLton.IntInf.rep`, `MLton.Rlimit`, |
| 1053 | `MLton.Vector.unfoldi`. |
| 1054 | *** Deprecated: `MLton.Socket` |
| 1055 | ** Other libraries. |
| 1056 | *** Added: MLRISC libary. |
| 1057 | *** Updated: ckit library, SML/NJ library. |
| 1058 | * Tools. |
| 1059 | |
| 1060 | === Details |
| 1061 | |
| 1062 | * 2007-08-12 |
| 1063 | ** Removed deprecated ML Basis annotations. |
| 1064 | |
| 1065 | * 2007-08-06 |
| 1066 | ** Fixed bug in treatment of `Real<N>.{scan,fromString}` operations. |
| 1067 | `Real<N>.{scan,fromString}` were using `TO_NEAREST` semantics, but should obey |
| 1068 | current rounding mode. (Only `Real<N>.fromDecimal` is specified to always |
| 1069 | have `TO_NEAREST` semantics.) Thanks to Sean McLaughlin for the bug report. |
| 1070 | |
| 1071 | * 2007-07-27 |
| 1072 | ** Fixed bugs in constant-folding of floating-point operations with C codegen. |
| 1073 | |
| 1074 | * 2007-07-26 |
| 1075 | ** Fixed bug in treatment of floating-point operations. Floating-point |
| 1076 | operations depend on the current rounding mode, but were being treated as |
| 1077 | pure. Thanks to Sean McLaughlin for the bug report. |
| 1078 | |
| 1079 | * 2007-07-13 |
| 1080 | ** Added `MLton.Exn.{default,get,set}TopLevelHandler`. |
| 1081 | |
| 1082 | * 2007-07-12 |
| 1083 | ** Restored `native` option to `-codegen` flag. |
| 1084 | |
| 1085 | * 2007-07-11 |
| 1086 | ** Fixed bug in `Real32.toInt`: conversion of real values close to |
| 1087 | `Int.maxInt` could be incorrect. |
| 1088 | |
| 1089 | * 2007-07-07 |
| 1090 | ** Updates to bytecode code generator: support for amd64-* targets, support |
| 1091 | for profiling (including exception history). |
| 1092 | ** Fixed bug in `Socket` module of Basis Library; unmarshalling of socket |
| 1093 | options (for `get*` functions) used `andb` rather than `orb`. Thanks to Anders |
| 1094 | Petersson for the bug report (and patch). |
| 1095 | |
| 1096 | * 2007-07-06 |
| 1097 | ** Fixed bug in `Date` module of Basis Library; some functions would |
| 1098 | erroneously raise `Date` when given a year <= 1900. Thanks to Joe Hurd for the |
| 1099 | bug report. |
| 1100 | ** Fixed a long-standing bug in monomorphisation pass. Thanks to Vesa Karvonen |
| 1101 | for the bug report. |
| 1102 | |
| 1103 | * 2007-05-18 |
| 1104 | ** Native amd64 code generator for amd64-* targets. |
| 1105 | ** Eliminate `native` option from `-codegen` flag. |
| 1106 | ** Add `x86` and `amd64` options to `-codegen` flag. |
| 1107 | |
| 1108 | * 2007-04-29 |
| 1109 | ** Improved type checking of RSSA and Machine ILs. |
| 1110 | |
| 1111 | * 2007-04-14 |
| 1112 | ** Fixed aliasing issues with `basis/Real/*.c` files. |
| 1113 | ** Added real/word casts in `MLton` structure. |
| 1114 | |
| 1115 | * 2007-04-12 |
| 1116 | ** Added primitives for bit cast of word to/from real. |
| 1117 | ** Implement `PackReal<N>{Big,Little}` using `PackWord<N>{Big,Little}` and bit |
| 1118 | casts. |
| 1119 | |
| 1120 | * 2007-04-11 |
| 1121 | ** Move all system header `#include`-s to `platform/` os headers. |
| 1122 | ** Use C99 `<assert.h>`, rather than custom `"assert.{h,c}"`. |
| 1123 | |
| 1124 | * 2007-03-13 |
| 1125 | ** Implement `PackWord<N>{Big,Little}` entirely in ML, using an ML byte swap |
| 1126 | function. |
| 1127 | |
| 1128 | * 2007-02-25 |
| 1129 | ** Change amd64-* target platforms from 32-bit compatibility mode (i.e., |
| 1130 | `-m32`) to 64-bit mode (i.e., `-m64`). Currently, only the C codegen is able |
| 1131 | to generate 64-bit executables. |
| 1132 | |
| 1133 | * 2007-02-23 |
| 1134 | ** Removed expert command line switch `-coalesce <n>`. |
| 1135 | ** Added expert command line switch `-chunkify {coalesce<n>|func|one}`. |
| 1136 | |
| 1137 | * 2007-02-20 |
| 1138 | ** Fixed bug in `PackReal<N>.toBytes`. Thanks to Eric McCorkle for the bug |
| 1139 | report (and patch). |
| 1140 | |
| 1141 | * 2007-02-18 |
| 1142 | ** Added command line switch `-profile-val`, to profile the evaluation of |
| 1143 | `val` bindings; this is particularly useful with exception history for |
| 1144 | debugging uncaught exceptions at the top-level. |
| 1145 | |
| 1146 | * 2006-12-29 |
| 1147 | ** Added command line switch `-show {anns|path-map}` and deprecated command |
| 1148 | line switch `-show-anns {false|true}`. Use `-show path-map` to see the |
| 1149 | complete MLB path map as seen by the compiler. |
| 1150 | |
| 1151 | * 2006-12-20 |
| 1152 | ** Changed the output of command line switch `-stop f` to include `.mlb` |
| 1153 | files. This is useful for generating Makefile dependencies. The old output |
| 1154 | is easy to recover if necessary (e.g. `grep -v '\.mlb$'`). |
| 1155 | |
| 1156 | * 2006-12-08 |
| 1157 | ** Added command line switches `-{,target}-{as,cc,link}-opt-quote`, which pass |
| 1158 | their argument as a single argument to `gcc` (i.e., without tokenization at |
| 1159 | spaces). These options support using headers and libraries (including the |
| 1160 | MLton runtime headers and libraries) from a path with spaces. |
| 1161 | |
| 1162 | * 2006-12-02 |
| 1163 | ** Extensive reorganization of garbage collector, runtime system, and Basis |
| 1164 | Library implementation. (This is in preparation for future 64bit support.) |
| 1165 | They should be more C standards compliant and easier to port to new systems. |
| 1166 | ** FFI revisions |
| 1167 | *** Disallow nested indirect types (e.g., `int array array`). |
| 1168 | |
| 1169 | * 2006-11-30 |
| 1170 | ** Fixed a bug in elaboration of FFI forms; unary FFI types (e.g., `array`, |
| 1171 | `ref`, `vector`) could be used in places where `MLton.Pointer.t` was required. |
| 1172 | This would later cause the compiler to raise the `TypeError` exception, along |
| 1173 | with a lot of XML IL. |
| 1174 | |
| 1175 | * 2006-11-19 |
| 1176 | ** On *-darwin, work with GnuMP installed via Fink or MacPorts. |
| 1177 | |
| 1178 | * 2006-10-30 |
| 1179 | ** Ported to x86-darwin. |
| 1180 | |
| 1181 | * 2006-09-23 |
| 1182 | ** Added missing specification of `find` to the `MONO_VECTOR` signature. |
| 1183 | |
| 1184 | * 2006-08-03 |
| 1185 | ** Fixed a bug in Useless SSA optimization, caused by calling an imported C |
| 1186 | function and then ignoring the result. |
| 1187 | |
| 1188 | * 2006-06-24 |
| 1189 | ** Fixed a bug in pass to flatten data structures. Thanks to Joe Hurd for the |
| 1190 | bug report. |
| 1191 | |
| 1192 | * 2006-06-08 |
| 1193 | ** Fixed a bug in the native codegen's implementation of the C-calling |
| 1194 | convention. |
| 1195 | |
| 1196 | * 2006-05-11 |
| 1197 | ** Ported to PowerPC-AIX. |
| 1198 | ** Fixed a bug in the runtime for the cases where nonblocking IO with sockets |
| 1199 | was implemented using `MSG_DONTWAIT`. This flag does not exist on AIX, |
| 1200 | Cygwin, HPUX, and MinGW and was previously just ignored. Now the runtime |
| 1201 | simulates the flag for these platforms (except MinGW, yet, where it's still |
| 1202 | ignored). |
| 1203 | |
| 1204 | * 2006-05-06 |
| 1205 | ** Added `-default-type '<ty><N>'` for specifying the binding of default types |
| 1206 | in the Basis Library (e.g., `Int.int`). |
| 1207 | |
| 1208 | * 2006-04-25 |
| 1209 | ** Ported to HPPA-HPUX. |
| 1210 | ** Fixed `PackReal{,32,64}{Big,Little}` to follow the Basis Library |
| 1211 | specification. |
| 1212 | |
| 1213 | * 2006-04-19 |
| 1214 | ** Fixed a bug in `MLton.share` that could cause a segfault. |
| 1215 | |
| 1216 | * 2006-03-30 |
| 1217 | ** Changed `MLton.Vector.unfoldi` to return the state in addition to the |
| 1218 | result vector. |
| 1219 | |
| 1220 | * 2006-03-30 |
| 1221 | ** Added `MLton.Vector.create`, a more powerful vector-creation function than |
| 1222 | is available in the basis library. |
| 1223 | |
| 1224 | * 2006-03-04 |
| 1225 | ** Added MLRISC from SML/NJ 110.57 to standard distribution. |
| 1226 | |
| 1227 | * 2006-03-03 |
| 1228 | ** Fixed bug in SSA simplifier that could eliminate an irredundant test. |
| 1229 | |
| 1230 | * 2006-03-02 |
| 1231 | ** Ported a bugfix from SML/NJ for a bug with the combination of `withNack` |
| 1232 | and `never` in CML. |
| 1233 | |
| 1234 | * 2006-02-09 |
| 1235 | ** Support compiler specific annotations in ML Basis files. If an annotation |
| 1236 | contains `:`, then the text preceding the `:` is meant to denote a compiler. |
| 1237 | For MLton, if the text preceding the `:` is equal to `mlton`, then the |
| 1238 | remaining annotation is scanned as a normal annotation. If the text preceding |
| 1239 | the `:` is not-equal to `mlton`, then the annotation is ignored, and no |
| 1240 | warning is issued. |
| 1241 | |
| 1242 | * 2006-02-04 |
| 1243 | ** Fixed bug in elaboration of functors; a program with a very large number of |
| 1244 | functors could exhibit the error `ElaborateEnv.functorClosure: firstTycons`. |
| 1245 | |
| 1246 | |
| 1247 | == Version 20051202 |
| 1248 | |
| 1249 | Here are the changes from version 20041109 to version 20051202. |
| 1250 | |
| 1251 | === Summary |
| 1252 | |
| 1253 | * New license: BSD-style instead of GPL. |
| 1254 | * New platforms: |
| 1255 | ** hppa: Debian Linux. |
| 1256 | ** x86: MinGW. |
| 1257 | * Compiler. |
| 1258 | ** improved exception history. |
| 1259 | ** Command-line switches. |
| 1260 | *** Added: `-as-opt`, `-mlb-path-map`, `-target-as-opt`, `-target-cc-opt`. |
| 1261 | *** Deprecated: none. |
| 1262 | *** Removed: `-native`, `-sequence-unit`, `-warn-match`, `-warn-unused`. |
| 1263 | * Language. |
| 1264 | ** FFI syntax changes and extensions. |
| 1265 | *** Added: `_symbol`. |
| 1266 | *** Changed: `_export`, `_import`. |
| 1267 | *** Removed: `_ffi`. |
| 1268 | ** ML Basis annotations. |
| 1269 | *** Added: `allowFFI`, `nonexhaustiveExnMatch`, `nonexhaustiveMatch`, |
| 1270 | `redundantMatch`, `sequenceNonUnit`. |
| 1271 | *** Deprecated: `allowExport`, `allowImport`, `sequenceUnit`, `warnMatch`. |
| 1272 | * Libraries. |
| 1273 | ** Basis Library. |
| 1274 | *** Added: `Int1`, `Word1`. |
| 1275 | ** `MLton` structure. |
| 1276 | *** Added: `Process.create`, `ProcEnv.setgroups`, `Rusage.measureGC`, |
| 1277 | `Socket.fdToSock`, `Socket.Ctl.getError`. |
| 1278 | *** Changed: `MLton.Platform.Arch`. |
| 1279 | ** Other libraries. |
| 1280 | *** Added: ckit library, ML-NLFFI library, SML/NJ library. |
| 1281 | * Tools. |
| 1282 | ** updates of `mllex` and `mlyacc` from SML/NJ. |
| 1283 | ** added `mlnlffigen`. |
| 1284 | ** profiling supports better inclusion/exclusion of code. |
| 1285 | |
| 1286 | === Details |
| 1287 | |
| 1288 | * 2005-11-19 |
| 1289 | ** Updated SML/NJ Library and CKit Library from SML/NJ 110.57. |
| 1290 | |
| 1291 | * 2005-11-15 |
| 1292 | ** Fixed a bug in `MLton.ProcEnv.setgroups`. |
| 1293 | |
| 1294 | * 2005-11-11 |
| 1295 | ** Fixed a bug in the interleaving of lexing/parsing and elaborating of ML |
| 1296 | Basis files, which would raise an unhandled `Force` exception on cyclic basis |
| 1297 | references. Thanks to John Dias for the bug report. |
| 1298 | |
| 1299 | * 2005-11-10 |
| 1300 | ** Fixed two bugs in `Time.scan`. One would raise `Time` on a string with a |
| 1301 | large fractional component. Thanks to Carsten Varming for the bug report. |
| 1302 | The other failed to scan strings with an explicit sign followed by a decimal |
| 1303 | point. |
| 1304 | |
| 1305 | * 2005-11-03 |
| 1306 | ** Removed `MLton.GC.setRusage`. |
| 1307 | ** Added `MLton.Rusage.measureGC`. |
| 1308 | |
| 1309 | * 2005-09-11 |
| 1310 | ** Fixed bug in display of types with large numbers of type variables, which |
| 1311 | could cause unhandled exception `Chr`. |
| 1312 | |
| 1313 | * 2005-09-08 |
| 1314 | ** Fixed bug in type inference of flexible records that would show up as |
| 1315 | `"Type error: variable applied to wrong number of type args"`. |
| 1316 | |
| 1317 | * 2005-09-06 |
| 1318 | ** Fixed bug in `Real.signBit`, which had assumed that the underlying C |
| 1319 | signbit returned 0 or 1, when in fact any nonzero value is allowed to indicate |
| 1320 | the signbit is set. |
| 1321 | |
| 1322 | * 2005-09-05 |
| 1323 | ** Added `-mlb-path-map` switch. |
| 1324 | |
| 1325 | * 2005-08-25 |
| 1326 | ** Fixed bug in `MLton.Finalizable.touch`, which was not keeping alive |
| 1327 | finalizable values in all cases. |
| 1328 | |
| 1329 | * 2005-08-18 |
| 1330 | ** Added SML/NJ Library and CKit Library from SML/NJ 110.55 to standard |
| 1331 | distribution. |
| 1332 | ** Fixed bug in `Socket.Ctl.*`, which got the endianness wrong on big-endian |
| 1333 | machines. Thanks to Wesley Terpstra for the bug report and fix. |
| 1334 | ** Added `MLton.GC.setRusage`. |
| 1335 | ** Fixed bug in `mllex`, which had file positions starting at 2. They now |
| 1336 | start at zero. |
| 1337 | |
| 1338 | * 2005-08-15 |
| 1339 | ** Fixed bug in `LargeInt.scan`, which should skip leading `"0x"` and `"0X"`. |
| 1340 | Thanks to Wesley Terpstra for the bug report and fix. |
| 1341 | |
| 1342 | * 2005-08-06 |
| 1343 | ** Additional revisions of FFI: |
| 1344 | *** Deprecated `_export` with incomplete annotation. |
| 1345 | *** Added `_address` for address of C objects. |
| 1346 | *** Eliminated address component of `_symbol`. |
| 1347 | *** Changed the type of the `_symbol*` expression. |
| 1348 | *** See documentation for more detail. |
| 1349 | |
| 1350 | * 2005-08-06 |
| 1351 | ** Annotation changes: |
| 1352 | *** Deprecated: `sequenceUnit` |
| 1353 | *** Added: `sequenceNonUnit` |
| 1354 | |
| 1355 | * 2005-08-03 |
| 1356 | ** Annotation changes: |
| 1357 | *** Deprecated: `allowExport`, `allowImport`, `warnMatch` |
| 1358 | *** Added: `allowFFI`, `nonexhaustiveExnMatch`, `nonexhaustiveMatch`, |
| 1359 | `redundantMatch` |
| 1360 | |
| 1361 | * 2005-08-01 |
| 1362 | ** Update `mllex` and `mlyacc` with SML/NJ 110.55+ versions. This |
| 1363 | incorporates a small number of minor bug fixes. |
| 1364 | |
| 1365 | * 2005-07-23 |
| 1366 | ** Fixed bug in pass to flatten refs into containing data structure. |
| 1367 | |
| 1368 | * 2005-07-23 |
| 1369 | ** Overhaul of FFI: |
| 1370 | *** Deprecated `_import` of C base types. |
| 1371 | *** Added `_symbol` for address, getter, and setter of C base types. |
| 1372 | *** See documentation for more detail. |
| 1373 | |
| 1374 | * 2005-07-21 |
| 1375 | ** Update `mllex` and `mlyacc` with SML/NJ 110.55 versions. This incorporates |
| 1376 | a small number of minor bug fixes. |
| 1377 | |
| 1378 | * 2005-07-20 |
| 1379 | ** Fixed bug in front end that allowed unary constructors to be used without |
| 1380 | an argument in patterns. |
| 1381 | |
| 1382 | * 2005-07-19 |
| 1383 | ** Eliminated `_ffi`, which has been deprecated for some time. |
| 1384 | |
| 1385 | * 2005-07-14 |
| 1386 | ** Fixed bug in runtime that caused getrusage to be called on every GC, even |
| 1387 | if timing info isn't needed. |
| 1388 | |
| 1389 | * 2005-07-13 |
| 1390 | ** Fixed bug in closure conversion tickled by making a weak pointer to a |
| 1391 | closure. |
| 1392 | |
| 1393 | * 2005-07-12 |
| 1394 | ** Changed `{OS,Posix}.Process.sleep` to call `nanosleep()` instead of |
| 1395 | `sleep()`. |
| 1396 | ** Added `MLton.ProcEnv.setgroups`. |
| 1397 | |
| 1398 | * 2005-07-11 |
| 1399 | ** `InetSock.{any,toAddr}` raise `SysErr` if port is not in [0, 2^16^). |
| 1400 | |
| 1401 | * 2005-07-02 |
| 1402 | ** Fixed bug in `Socket.recvVecFrom{,',NB,NB'}`. The type was too polymorphic |
| 1403 | and allowed the creation of a bogus `sock_addr`. |
| 1404 | |
| 1405 | * 2005-06-28 |
| 1406 | ** The front end now reports errors on encountering undefined or cyclicly |
| 1407 | defined MLB path variables. |
| 1408 | |
| 1409 | * 2005-05-22 |
| 1410 | ** Fixed bug in `Posix.IO.{getlk,setlk,setlkw}` that caused a link-time error: |
| 1411 | undefined reference to `Posix_IO_FLock_typ`. |
| 1412 | ** Improved exception history so that the first entry in the history is the |
| 1413 | source position of the raise, and the rest is the call stack. |
| 1414 | |
| 1415 | * 2005-05-19 |
| 1416 | ** Improved exception history for `Overflow` exceptions. |
| 1417 | |
| 1418 | * 2005-04-20 |
| 1419 | ** Fixed a bug in pass to flatten refs into containing data structure. |
| 1420 | |
| 1421 | * 2005-04-14 |
| 1422 | ** Fixed a front-end bug that could cause an internal bug message of the form |
| 1423 | `"missing flexInst"`. |
| 1424 | |
| 1425 | * 2005-04-13 |
| 1426 | ** Fixed a bug in the representation of flat arrays/vectors that caused |
| 1427 | incorrect behavior when the element size was 2 or 4 bytes and there were |
| 1428 | multiple components to the element (e.g. `(char * char) vector`). |
| 1429 | |
| 1430 | * 2005-04-01 |
| 1431 | ** Fixed a bug in `GC_arrayAllocate` that could cause a segfault. |
| 1432 | |
| 1433 | * 2005-03-22 |
| 1434 | ** Added structures `Int1`, `Word1`. |
| 1435 | |
| 1436 | * 2005-03-19 |
| 1437 | ** Fixed a bug that caused `Socket.Ctl.{get,set}LINGER` to raise `Subscript`. |
| 1438 | The problem was in the use of `PackWord32Little.update`, which scales the |
| 1439 | supplied index by `bytesPerElem`. |
| 1440 | |
| 1441 | * 2005-03-13 |
| 1442 | ** Fixed a bug in CML mailboxes. |
| 1443 | |
| 1444 | * 2005-02-26 |
| 1445 | ** Fixed an off-by-one error in `mkstemp` defined in `mingw.c`. |
| 1446 | |
| 1447 | * 2005-02-13 |
| 1448 | ** Added `mlnlffigen` tool (heavily adapted from SML/NJ). |
| 1449 | |
| 1450 | * 2005-02-12 |
| 1451 | ** Added MLNLFFI Library (heavily adapted from SML/NJ) to standard |
| 1452 | distribution. |
| 1453 | |
| 1454 | * 2005-02-04 |
| 1455 | ** Fixed a bug in `OS.path.toString`, which did not raise `InvalidArc` when |
| 1456 | needed. |
| 1457 | |
| 1458 | * 2005-02-03 |
| 1459 | ** Fixed a bug in `OS.Path.joinDirFile`, which did not raise `InvalidArc` when |
| 1460 | passed a file that was not an arc. |
| 1461 | |
| 1462 | * 2005-01-26 |
| 1463 | ** Fixed a front end bug that incorrectly rejected expansive __valbind__s with |
| 1464 | useless bound type variables. |
| 1465 | |
| 1466 | * 2005-01-22 |
| 1467 | ** Fixed x86 codegen bug which failed to account for the possibility that a |
| 1468 | 64-bit move could interfere with itself (as simulated by 32-bit moves). |
| 1469 | |
| 1470 | * 2004-12-22 |
| 1471 | ** Fixed `Real32.fmt StringCvt.EXACT`, which had been producing too many |
| 1472 | digits of precision because it was converting to a `Real64.real`. |
| 1473 | |
| 1474 | * 2004-12-15 |
| 1475 | ** Replaced MLB path variable `MLTON_ROOT` with `SML_LIB`, to use a more |
| 1476 | compiler-independent name. We will keep `MLTON_ROOT` aliased to `SML_LIB` |
| 1477 | until after the next release. |
| 1478 | |
| 1479 | * 2004-12-02 |
| 1480 | ** `Unix.create` now works on all platforms (including Cygwin and MinGW). |
| 1481 | |
| 1482 | * 2004-11-24 |
| 1483 | ** Added support for `MLton.Process.create`, which works on all platforms |
| 1484 | (including Windows-based ones like Cygwin and MinGW) and allows better control |
| 1485 | over `std{in,out,err}` for child process. |
| 1486 | |
| 1487 | |
| 1488 | == Version 20041109 |
| 1489 | |
| 1490 | Here are the changes from version 20040227 to 20041109. |
| 1491 | |
| 1492 | === Summary |
| 1493 | |
| 1494 | * New platforms: |
| 1495 | ** x86: FreeBSD 5.x, OpenBSD |
| 1496 | ** PowerPC: Darwin (MacOSX) |
| 1497 | * Support for MLBasis files. |
| 1498 | * Support for dynamic libraries. |
| 1499 | * Support for Concurrent ML (CML). |
| 1500 | * New structures: `Int2`, `Int3`, ..., `Int31` and `Word2`, `Word3`, ..., `Word31`. |
| 1501 | * A new form of profiling: `-profile count`. |
| 1502 | * A bytecode generator. |
| 1503 | * Data representation improvements. |
| 1504 | * `MLton` structure changes. |
| 1505 | ** Added: `share`, `shareAll` |
| 1506 | ** Changed: `Exn`, `IntInf`, `Signal`, `Thread`. |
| 1507 | * Command-line switch changes. |
| 1508 | ** Deprecated: |
| 1509 | *** `-native` (use `-codegen`) |
| 1510 | *** `-sequence-unit` (use `-default-ann`) |
| 1511 | *** `-warn-match` (use `-default-ann`) |
| 1512 | *** `-warn-unused` (use `-default-ann`) |
| 1513 | ** Removed: |
| 1514 | *** `-detect-overflow` |
| 1515 | *** `-exn-history` (use `-const`) |
| 1516 | *** `-safe` |
| 1517 | *** `-show-basis-used` |
| 1518 | ** Added: |
| 1519 | *** `-codegen` |
| 1520 | *** `-const` |
| 1521 | *** `-default-ann` |
| 1522 | *** `-disable-ann` |
| 1523 | *** `-profile-branch` |
| 1524 | *** `-target-link-opt` |
| 1525 | |
| 1526 | === Details |
| 1527 | |
| 1528 | * 2004-09-22 |
| 1529 | ** Extended `_import` to support indirect function calls. |
| 1530 | |
| 1531 | * 2004-09-13 |
| 1532 | ** Made `Date.{fromString,scan}` accept a space (treated as zero) in the first |
| 1533 | character of the day of the month. |
| 1534 | |
| 1535 | * 2004-09-12 |
| 1536 | ** Fixed bug in `IntInf` that could cause a segfault. |
| 1537 | ** Remove `MLton.IntInf.size`. |
| 1538 | |
| 1539 | * 2004-09-05 |
| 1540 | ** Made `-detect-overflow` and `-safe` expert options. |
| 1541 | |
| 1542 | * 2004-08-30 |
| 1543 | ** Added `val MLton.share: 'a -> unit`, which maximizes sharing in a heap |
| 1544 | object. |
| 1545 | |
| 1546 | * 2004-08-27 |
| 1547 | ** Fixed bug in `Real.toLargeInt`. It would incorrectly raise `Option` |
| 1548 | instead of `Overflow` in the case when the real was not an `INF`, but rounding |
| 1549 | produced an `INF`. |
| 1550 | ** Fixed bugs in `Date.{fmt,fromString,scan,toString}`. They incorrectly |
| 1551 | allowed a space for the first character in the day of the month. |
| 1552 | |
| 1553 | * 2004-08-18 |
| 1554 | ** Changed `MLton.{Thread,Signal,World}` to distinguish between implicitly and |
| 1555 | explicitly paused threads. |
| 1556 | |
| 1557 | * 2004-07-28 |
| 1558 | ** Added support for programming in the large using the ML Basis system. |
| 1559 | |
| 1560 | * 2004-07-11 |
| 1561 | ** Fixed bugs in `ListPair.*Eq` functions, which incorrectly raised the |
| 1562 | `UnequalLengths` exception. |
| 1563 | |
| 1564 | * 2004-07-01 |
| 1565 | ** Added `val MLton.Exn.addExnMessager: (exn -> string option) -> unit`. |
| 1566 | |
| 1567 | * 2004-06-23 |
| 1568 | ** Runtime system options that take memory sizes now accept a "`g`" suffix |
| 1569 | indicating gigabytes. They also now take a real instead of an integer, |
| 1570 | e.g. `fixed-heap 0.5g`. They also now accept uppercase, e.g. `150M`. |
| 1571 | |
| 1572 | * 2004-06-12 |
| 1573 | ** Added support for OpenBSD. |
| 1574 | |
| 1575 | * 2004-06-10 |
| 1576 | ** Added support for FreeBSD 5.x. |
| 1577 | |
| 1578 | * 2004-05-28 |
| 1579 | ** Deprecated the `-native` flag. Instead, use the new flag `-codegen |
| 1580 | {native|bytecode|C}`. This is in anticipation of adding a bytecode compiler. |
| 1581 | |
| 1582 | * 2004-05-26 |
| 1583 | ** Fixed a front-end bug that could cause cascading error to print a very |
| 1584 | large and unreadable internal bug message of the form `"datatype ... realized |
| 1585 | with scheme Unknown"`. |
| 1586 | |
| 1587 | * 2004-05-17 |
| 1588 | ** Automatically restart functions in the Basis Library that correspond |
| 1589 | directly to interruptable system calls. |
| 1590 | |
| 1591 | * 2004-05-13 |
| 1592 | ** Added `-profile count`, for dynamic counts of function calls and branches. |
| 1593 | ** Equate the types `Posix.Signal.signal` and `Unix.signal`. |
| 1594 | |
| 1595 | * 2004-05-11 |
| 1596 | ** Fixed a bug with `-basis 1997` that would cause type errors due to |
| 1597 | differences between types in the MLton structure and types in the rest of the |
| 1598 | basis library. |
| 1599 | |
| 1600 | * 2004-05-01 |
| 1601 | ** Fixed a bug with sharing constraints in signatures that would sometimes |
| 1602 | mistakenly treat two structures as identical when they shouldn't have been. |
| 1603 | This would cause some programs to be mistakenly rejected. |
| 1604 | |
| 1605 | * 2004-04-30 |
| 1606 | ** Added `MLton.Signal.{handled,restart}`. |
| 1607 | |
| 1608 | * 2004-04-23 |
| 1609 | ** Added `Timer.checkCPUTimes`, and updated the `Timer` structure to match the |
| 1610 | latest basis spec. Also fixed `totalCPUTimer` and `totalRealTimer`, which |
| 1611 | were wrong. |
| 1612 | |
| 1613 | * 2004-04-13 |
| 1614 | ** Added `MLton.Signal.Mask.{getBlocked,isMember}`. |
| 1615 | |
| 1616 | * 2004-04-12 |
| 1617 | ** Fix bug that mistakenly generalized variable types containing unknown types |
| 1618 | when matching against a signature. |
| 1619 | ** Reasonable front-end error message when unification causes recursive |
| 1620 | (circular) type. |
| 1621 | |
| 1622 | * 2004-04-03 |
| 1623 | ** Fixed bug in sharing constraints so that `sharing A = B = C` means that all |
| 1624 | pairs `A = B`, `A = C`, `B = C` are shared, not just `A = B` and `B = C`. |
| 1625 | This matters in some situations. |
| 1626 | |
| 1627 | * 2004-03-20 |
| 1628 | ** Fixed `Time.now` which was treating microseconds as nanoseconds. |
| 1629 | |
| 1630 | * 2004-03-14 |
| 1631 | ** Fixed SSA optimizer bug that could cause the error `"<type> has no |
| 1632 | tyconInfo property"`. |
| 1633 | |
| 1634 | * 2004-03-11 |
| 1635 | ** Fixed `Time.fromReal` to raise `Time`, not `Overflow`, on unrepresentable |
| 1636 | times. |
| 1637 | |
| 1638 | * 2004-03-04 |
| 1639 | ** Added structures `Word2`, `Word3`, ..., `Word31`. |
| 1640 | |
| 1641 | * 2004-03-03 |
| 1642 | ** Added structures `Int2`, `Int3`, ..., `Int31`. |
| 1643 | ** Fixed bug in elaboration of `and` with signatures, structures, and functors |
| 1644 | so that it now evaluates all right-hand sides before binding any left-hand |
| 1645 | sides. |
| 1646 | |
| 1647 | |
| 1648 | == Version 20040227 |
| 1649 | |
| 1650 | Here are the changes from version 20030716 to 20040227. |
| 1651 | |
| 1652 | === Summary |
| 1653 | |
| 1654 | * The front end now follows the Definition of SML and produces readable error |
| 1655 | messages. |
| 1656 | * Added support for NetBSD. |
| 1657 | * Basis library changes tracking revisions to the specification. |
| 1658 | * Added structures: `Int64`, `Real32`, `Word64`. |
| 1659 | * File positions use `Int64`. |
| 1660 | * Major improvements to `-show-basis`, which now displays the basis in a very |
| 1661 | readable way with full type information. |
| 1662 | * Command-line switch changes. |
| 1663 | ** Deprecated: `-basis`. |
| 1664 | ** Removed: `-lib-search`, `-link`, `-may-load-world`, `-static`. |
| 1665 | ** Added: `-link-opt`, `-runtime`, `-sequence-unit`, `-show-def-use`, |
| 1666 | `-stop tc`, `-warn-match`, `-warn-unused`. |
| 1667 | ** Changed: `-export-header`, `-show-basis`, `-show-basis-used`. |
| 1668 | ** Renamed: `-host` to `-target`. |
| 1669 | * FFI changes. |
| 1670 | ** Renamed `_ffi` as `_import`. |
| 1671 | ** Added `cdecl` and `stdcall` attributes to `_import` and `_export` |
| 1672 | expressions. |
| 1673 | * MLton structure changes. |
| 1674 | ** Added: Pointer. |
| 1675 | ** Removed: Ptrace. |
| 1676 | ** Changed: `Finalizable`, `IntInf`, `Platform`, `Random`, `Signal`, `Word`. |
| 1677 | |
| 1678 | === Details |
| 1679 | |
| 1680 | * 2004-02-16 |
| 1681 | ** Changed `-export-header`, `-show-basis`, `-show-basis-used` to take a file |
| 1682 | name argument, and they no longer force compilation to halt. |
| 1683 | ** Added `-show-def-use` and `-warn-unused`, which deal with def-use |
| 1684 | information. |
| 1685 | |
| 1686 | * 2004-02-13 |
| 1687 | ** Added flag `-sequence-unit`, which imposes the constraint that in the |
| 1688 | sequence expression `(e1; e2)`, `e1` must be of type `unit`. |
| 1689 | |
| 1690 | * 2004-02-10 |
| 1691 | ** Lots of changes to `MLton.Signal`: name changes, removal of superfluous |
| 1692 | functions, additional functions. |
| 1693 | |
| 1694 | * 2004-02-09 |
| 1695 | ** Extended `-show-basis` so that when used with an input program, it shows |
| 1696 | the basis defined by the input program. |
| 1697 | ** Added `stop` runtime argument. |
| 1698 | ** Made `-call-graph {false|true}` an option to `mlprof` that determines |
| 1699 | whether or not a call graph file is written. |
| 1700 | |
| 1701 | * 2004-01-20 |
| 1702 | ** Fixed a bug in `IEEEReal.{fromString,scan}`, which would improperly return |
| 1703 | `INF` instead of `ZERO` for things like `"0.0000e123456789012345"`. |
| 1704 | ** Fixed a bug in `Real.{fromDecimal,fromString,scan}`, which didn't return an |
| 1705 | appropriately signed zero for `~0.0`. |
| 1706 | ** Fixed a bug in `Real.{toDecimal,fmt}`, which didn't correctly handle |
| 1707 | `~0.0`. |
| 1708 | ** Report a compile-time error on unrepresentable real constants. |
| 1709 | |
| 1710 | * 2004-01-05 |
| 1711 | ** Removed option `-may-load-world`. You can now use `-runtime no-load-world` |
| 1712 | instead. |
| 1713 | ** Removed option `-static`. You can now use `-link-opt -static` instead. |
| 1714 | ** Changed `MLton.IntInf.size` to return 0 instead of 1 on small ints. |
| 1715 | |
| 1716 | * 2003-12-28 |
| 1717 | ** Fixed horrible bug in `MLton.Random.alphaNumString` that caused it to |
| 1718 | return 0 for all characters beyond position 11. |
| 1719 | |
| 1720 | * 2003-12-17 |
| 1721 | ** Removed `-basis` as a normal flag. It is still available as an expert |
| 1722 | flag, but its use is deprecated. It will almost certainly disappear after the |
| 1723 | next release. |
| 1724 | |
| 1725 | * 2003-12-10 |
| 1726 | ** Allow multiple `@MLton --` runtime args in sequnce. This makes it easier |
| 1727 | for scripts to prefix `@MLton` args without having to splice them with other |
| 1728 | ones. |
| 1729 | |
| 1730 | * 2003-12-04 |
| 1731 | ** Added support for files larger than 2G. This included changing |
| 1732 | `Position` from `Int32` to `Int64`. |
| 1733 | |
| 1734 | * 2003-12-01 |
| 1735 | ** Added `structure MLton.Pointer`, which includes a `type t` for pointers |
| 1736 | (memory addresses, not SML heap pointers) and operations for loading from and |
| 1737 | storing to memory. |
| 1738 | |
| 1739 | * 2003-11-03 |
| 1740 | ** Fixed `Timer.checkGCTime` so that only the GC user time is included, not GC |
| 1741 | system time. |
| 1742 | |
| 1743 | * 2003-10-13 |
| 1744 | ** Added `-warn-match` to control display nonexhaustive and redundant |
| 1745 | match warnings. |
| 1746 | ** Fixed space leak in `StreamIO` causing the entire stream to be retained. |
| 1747 | Thanks to Jared Showalter for the bug report and fix. |
| 1748 | |
| 1749 | * 2003-10-10 |
| 1750 | ** Added `-stop tc` switch to stop after type checking. |
| 1751 | |
| 1752 | * 2003-09-25 |
| 1753 | ** Fixed `Posix.IO.getfl`, which had mistakenly called `fcntl` with `F_GETFD` |
| 1754 | instead of `F_GETFL`. |
| 1755 | ** Tracking basis library changes: |
| 1756 | *** `Socket` module datagram functions no longer return amount written, |
| 1757 | since they always write the entire amount or fail. So, |
| 1758 | `send{Arr,Vec}To{,'}` now return `unit` instead of `int`. |
| 1759 | *** Added nonblocking versions of all the send and recv functions, as well |
| 1760 | as accept and connect. So, we now have: `acceptNB`, `connectNB`, |
| 1761 | `recv{Arr,Vec}{,From}NB{,'}`, `send{Arr,Vec}{,To}NB{,'}`. |
| 1762 | |
| 1763 | * 2003-09-24 |
| 1764 | ** Tracking basis library changes: |
| 1765 | *** `TextIO.inputLine` now returns a `string option`. |
| 1766 | *** Slices used in `Byte`, `PRIM_IO`, `PrimIO`, `Posix.IO`, `StreamIO`. |
| 1767 | *** `Posix.IO.readVec` raises `Size`, not `Subscript`, with negative |
| 1768 | argument. |
| 1769 | |
| 1770 | * 2003-09-22 |
| 1771 | ** Fixed `Real.toManExp` so that the mantissa is in [0.5, 1), not [1, 2). The |
| 1772 | spec says that 1.0 <= man * radix < radix, which since radix is 2, implies |
| 1773 | that the mantissa is in [0.5, 1). |
| 1774 | ** Added `Time.{from,to}Nanoseconds`. |
| 1775 | |
| 1776 | * 2003-09-11 |
| 1777 | ** Added `Real.realRound`. |
| 1778 | ** Added `Char{Array,Vector}Slice` to `Text`. |
| 1779 | |
| 1780 | * 2003-09-11 |
| 1781 | ** `OS.IO.poll` and `Socket.select` now raise errors on negative timeouts. |
| 1782 | ** `Time.time` is now implemented using `IntInf` instead of `Int`, which means |
| 1783 | that a much larger range of time values is representable. |
| 1784 | |
| 1785 | * 2003-09-10 |
| 1786 | ** `Word64` is now there. |
| 1787 | |
| 1788 | * 2003-09-09 |
| 1789 | ** Replaced `Pack32{Big,Little}` with `PackWord32{Big,Little}`. |
| 1790 | ** Fixed bug in `OS.FileSys.fullPath`, which mistakenly stopped as soon as it |
| 1791 | hit a symbolic link. |
| 1792 | |
| 1793 | * 2003-09-08 |
| 1794 | ** Fixed `@MLton max-heap`, which was mistakenly ignored. Cleaned up `@MLton |
| 1795 | fixed-heap`. Both `fixed-heap` and `max-heap` can use copying or mark-compact |
| 1796 | collection. |
| 1797 | |
| 1798 | * 2003-09-06 |
| 1799 | ** `Int64` is completely there. |
| 1800 | ** Fixed `OS.FileSys.tmpName` so that it creates the file, and doesn't use |
| 1801 | `tmpnam`. This eliminates an annoying linker warning message. |
| 1802 | |
| 1803 | * 2003-09-05 |
| 1804 | ** Added structures `{LargeInt,LargeReal,LargeWord,Word}{Array,Array2,ArraySlice,Vector,VectorSlice}` |
| 1805 | ** Fixed bug in `Real.toDecimal`, which return class `NORMAL` for subnormals. |
| 1806 | ** Fixed bug in `Real.toLargeInt`, which didn't return as precise an integer |
| 1807 | as possible. |
| 1808 | |
| 1809 | * 2003-09-03 |
| 1810 | ** Lots of fixes to `REAL` functions. |
| 1811 | *** `Real32` is now completely in place, except for `Real32.nextAfter` on |
| 1812 | SunOS. |
| 1813 | *** Fixed `Real.Math.exp` on x86 to return the right value when applied to |
| 1814 | `posInf` and `negInf`. |
| 1815 | *** Changed `Real.Math.{cos,sin,tan}` on x86 to always use a call to the C |
| 1816 | math library instead of using the x86 instruction. This eliminates some |
| 1817 | anomalies between compiling `-native false` and `-native true`. |
| 1818 | *** Change `Real.Math.pow` to handle exceptional cases in the SML code. |
| 1819 | *** Fixed `Real.signBit` on Sparcs. |
| 1820 | |
| 1821 | * 2003-08-28 |
| 1822 | ** Fixed `PackReal{,64}Little` to work correctly on Sparc. |
| 1823 | ** Added `PackReal{,64}Big`, `PackReal32{Big,Little}`. |
| 1824 | ** Added `-runtime` switch, which passes arguments to the runtime via |
| 1825 | `@MLton`. These arguments are processed before command line switches. |
| 1826 | ** Eliminated MLton switch `-may-load-world`. Can use `-runtime` combined |
| 1827 | with new runtime switch `-no-load-world` to disable load world in an |
| 1828 | executable. |
| 1829 | |
| 1830 | * 2003-08-26 |
| 1831 | ** Changed `-host` to `-target`. |
| 1832 | ** Split `MLton.Platform.{arch,os}` into `MLton.Platform.{Arch,OS}.t`. |
| 1833 | |
| 1834 | * 2003-08-21 |
| 1835 | ** Fixed bug in C codegen that would cause undefined references to |
| 1836 | `Real_{fetch,move,store}` when compiling on Sparcs with `-align 4`. |
| 1837 | |
| 1838 | * 2003-08-17 |
| 1839 | ** Eliminated `-link` and `-lib-search`, which are no longer needed. |
| 1840 | Eliminated support for passing `-l*`, `-L*`, and `*.a` on the command line. |
| 1841 | Use `-link-opt` instead. |
| 1842 | |
| 1843 | * 2003-08-16 |
| 1844 | ** Added `-link-opt`, for passing options to `gcc` when linking. |
| 1845 | |
| 1846 | * 2003-07-19 |
| 1847 | ** Renamed `_ffi` as `_import`. The old `_ffi` will remain for a while, but |
| 1848 | is deprecated and should be replaced with `_import`. |
| 1849 | ** Added attributes to `_export` and `_import`. For now, the only attributes |
| 1850 | are `cdecl` and `stdcall`. |
| 1851 | |
| 1852 | |
| 1853 | == Version 20030716 |
| 1854 | |
| 1855 | Here are the changes from version 20030711 to 20030716. |
| 1856 | |
| 1857 | == Summary |
| 1858 | |
| 1859 | * Fixed several serious bugs with the 20030711 release. |
| 1860 | |
| 1861 | == Details |
| 1862 | |
| 1863 | * 2003-07-15 |
| 1864 | ** Fixed bug that caused a segfault when attempting to create an |
| 1865 | array that was too large, e.g |
| 1866 | |
| 1867 | 1 + Array.sub (Array.tabulate (valOf Int.maxInt, fn i => i), 0) |
| 1868 | |
| 1869 | ** mlton now checks the command line arguments following the file to compile |
| 1870 | that are passed to the linker to make sure they are reasonable. |
| 1871 | |
| 1872 | * 2003-07-14 |
| 1873 | ** Fixed packaging for Cygwin and Sparc to include `libgmp.a`. |
| 1874 | ** Eliminated bootstrap target. The `Makefile` automatically determines |
| 1875 | whether to bootstrap or not. |
| 1876 | ** Fixed XML type checker bug that could cause error: `"empty tyvars in |
| 1877 | PolyVal dec"`. |
| 1878 | |
| 1879 | * 2003-07-12 |
| 1880 | ** Turned off `FORCE_GENERATIONAL` in gc. It had been set, which caused the |
| 1881 | gc to always use generational collection. This could seriously slow apps down |
| 1882 | that don't need it. |
| 1883 | |
| 1884 | |
| 1885 | == Version 20030711 |
| 1886 | |
| 1887 | Here are the changes from version 20030312 to 20030711. |
| 1888 | |
| 1889 | === Summary |
| 1890 | |
| 1891 | * Added support for Sparc/SunOS using the C code generator. |
| 1892 | * Completed the basis library implementation. At this point, the only missing |
| 1893 | basis library function is `use`. |
| 1894 | * Added `_export`, which allows one to call SML functions from C. |
| 1895 | * Added weak pointers (via `MLton.Weak`) and finalization (via |
| 1896 | `MLton.Finalizable`). |
| 1897 | * Added new integer modules: `Int8`, `Int16`. |
| 1898 | * Better profiling call graphs |
| 1899 | * Fixed conversions between reals and their decimal representations to be |
| 1900 | correct using the gdtoa library. |
| 1901 | |
| 1902 | === Details |
| 1903 | |
| 1904 | * 2003-07-07 |
| 1905 | ** Profiling improvements: |
| 1906 | *** Eliminated `mlton -profile-split`. Added `mlprof -split`. Now the |
| 1907 | profiling infrastructure keeps track of the splits and allows one to decide |
| 1908 | which splits to make (if any) when `mlprof` is run, which is much better |
| 1909 | than having to decide at compile time. |
| 1910 | *** Changed `mlprof -graph` to `mlprof -keep`, and changed the behavior so |
| 1911 | that `-keep` also controls which functions are displayed in the table. |
| 1912 | *** Eliminated `mlprof -ignore`: it's behavior is now subsumed by `-keep`, |
| 1913 | whose meaning has changed to be more like -ignore on nodes that are not |
| 1914 | kept. |
| 1915 | ** When calling `gcc` for linking, put `-link` args in same order as they |
| 1916 | appeared on the MLton command line (they used to be reversed). |
| 1917 | |
| 1918 | * 2003-07-03 |
| 1919 | ** Making `OS.Process.{atExit,exit}` conform to the basis library spec in that |
| 1920 | exceptions raised during cleaners are caught and ignored. Also, calls to |
| 1921 | `exit` from cleaners cause the rest of cleaners to run. |
| 1922 | |
| 1923 | * 2003-07-02 |
| 1924 | ** Fixed bug with negative `IntInf` constants that could cause compile time |
| 1925 | error message: `"x86Translate.translateChunk ... strange Offset: base: ..."` |
| 1926 | ** Changed argument type of `MLton.IntInf.Small` from `word` to `int`. |
| 1927 | ** Added fix to profiling so that the `mlmon.out` file is written even when |
| 1928 | the program terminates due to running out of memory. |
| 1929 | |
| 1930 | * 2003-06-25 |
| 1931 | ** Added `{Int{8,16},Word8}{,Array,ArraySlice,Vector,VectorSlice,Array2}` |
| 1932 | structures. |
| 1933 | |
| 1934 | * 2003-06-25 |
| 1935 | ** Fixed bug in `IntInf.sign`, which returned the wrong value for zero. |
| 1936 | |
| 1937 | * 2003-06-24 |
| 1938 | ** Added `_export`, for calling from C to SML. |
| 1939 | |
| 1940 | * 2003-06-18 |
| 1941 | ** Regularization of options: |
| 1942 | *** `-diag` --> `-diag-pass` |
| 1943 | *** `-drop-pass` takes a regexp |
| 1944 | |
| 1945 | * 2003-06-06 |
| 1946 | ** Fixed bug in `OS.IO.poll` that caused it to return the input event types |
| 1947 | polled for instead of what was actually available. |
| 1948 | |
| 1949 | * 2003-06-04 |
| 1950 | ** Fixed bug in KnownCase SSA optimization that could case incorrect results |
| 1951 | in compiled programs. |
| 1952 | |
| 1953 | * 2003-06-03 |
| 1954 | ** Fixed bug in SSA optimizer that could cause the error message: |
| 1955 | |
| 1956 | Type error: Type.equals |
| 1957 | {from = char vector, to = unit vector} |
| 1958 | Type error: analyze raised exception loopStatement: ... |
| 1959 | unhandled exception: TypeError |
| 1960 | |
| 1961 | * 2003-06-02 |
| 1962 | ** Fixed `Real.rem` to work correctly on `inf`-s and `nan`-s. |
| 1963 | ** Fixed bug in profiling that caused the function name to be omitted on |
| 1964 | functions defined by `val rec`. |
| 1965 | |
| 1966 | * 2003-05-31 |
| 1967 | ** `Fixed Real.{fmt,fromString,scan,toString}` to match the basis library |
| 1968 | spec. |
| 1969 | ** Added `IEEEReal.{fromString,scan}`. |
| 1970 | ** Added `Real.{from,to}Decimal`. |
| 1971 | |
| 1972 | * 2003-05-25 |
| 1973 | ** Added `Real.nextAfter`. |
| 1974 | ** Added `OS.Path.{from,to}UnixPath`, which are the identity function on Unix. |
| 1975 | |
| 1976 | * 2003-05-20 |
| 1977 | ** Added type `MLton.pointer`, the type of C pointers, for use with the FFI. |
| 1978 | |
| 1979 | * 2003-05-18 |
| 1980 | ** Fixed two bugs in type inference that could cause the compiler to raise the |
| 1981 | `TypeError` exception, along with a lot of XML IL. The `type-check.sml` |
| 1982 | regression contains simple examples of what failed. |
| 1983 | ** Fixed a bug in the simplifier that could cause the message: `"shrinker |
| 1984 | raised Prim.apply raised assertion failure: SmallIntInf.fromWord"`. |
| 1985 | |
| 1986 | * 2003-05-15 |
| 1987 | ** Fixed bug in `Real.class` introduced on 04-28 that cause many regression |
| 1988 | failures with reals when using newer `gcc`-s. |
| 1989 | ** Replaced `MLton.Finalize` with `MLton.Finalizable`, which has a more robust |
| 1990 | approach to finalization. |
| 1991 | |
| 1992 | * 2003-05-13 |
| 1993 | ** Fixed bug in `MLton.FFI` on Cygwin that caused `Thread_returnToC` to be |
| 1994 | undefined. |
| 1995 | |
| 1996 | * 2003-05-12 |
| 1997 | ** Added support for finalization with `MLton.Finalize`. |
| 1998 | |
| 1999 | * 2003-05-09 |
| 2000 | ** Fixed a runtime system bug that could cause a segfault. This bug would |
| 2001 | happen after a GC during heap resizing when copying a heap, if the heap was |
| 2002 | allocated at a very low (<10M) address. The bug actually showed up on a |
| 2003 | Cygwin system. |
| 2004 | |
| 2005 | * 2003-05-08 |
| 2006 | ** Fixed bug in `HashType` that raised `"Vector.forall2"` when the arity of a |
| 2007 | type constructor is changed by `SimplifyTypes`, but a newly constructed type |
| 2008 | has the same hash value. |
| 2009 | |
| 2010 | * 2003-05-02 |
| 2011 | ** Switched over to new layered IO implementation, which completes the |
| 2012 | implementation of the `BinIO` and `TextIO` modules. |
| 2013 | |
| 2014 | * 2003-04-28 |
| 2015 | ** Fixed bug that caused an assertion failure when generating a jump table for |
| 2016 | a case dispatch on a non-word sized index with non-zero lower bound on the |
| 2017 | range. |
| 2018 | |
| 2019 | * 2003-04-24 |
| 2020 | ** Added `-align {4|8}`, which controls alignment of objects. With `-align |
| 2021 | 8`, memory accesses to doubles are guaranteed to be aligned mod 8, and so |
| 2022 | don't need special routines to load or store. |
| 2023 | |
| 2024 | * 2003-04-22 |
| 2025 | ** Fixed bug that caused a total failure of time profiling with `-native |
| 2026 | false`. The bug was introduced with the C codegen improvements that split the |
| 2027 | C into multiple files. Now, the C codegen declares all profile labels used in |
| 2028 | each file so that they are global symbols. |
| 2029 | |
| 2030 | * 2003-04-18 |
| 2031 | ** Added `MLton.Weak`, which supports weak pointers. |
| 2032 | |
| 2033 | * 2003-04-10 |
| 2034 | ** Replaced the basis library's `MLton.hostType` with `MLton.Platform.arch` |
| 2035 | and `MLton.Platform.os`. |
| 2036 | |
| 2037 | * 2003-04 |
| 2038 | ** Added support for SPARC/SunOS using the C codegen. |
| 2039 | |
| 2040 | * 2003-03-25 |
| 2041 | ** Added `MLton.FFI`, which allows callbacks to SML from C. |
| 2042 | |
| 2043 | * 2003-03-21 |
| 2044 | ** Fixed `mlprof` so that the default `-graph arg` for data from |
| 2045 | `-profile-stack true` is `(thresh-stack x)`, not `(thresh x)`. |
| 2046 | |
| 2047 | |
| 2048 | == Version 20030312 |
| 2049 | |
| 2050 | Here are the changes from version 20020923 to 20030312. |
| 2051 | |
| 2052 | === Summary |
| 2053 | |
| 2054 | * Added source-level profiling of both time and allocation. |
| 2055 | * Updated basis library to 2002 specification. To obtain the old |
| 2056 | library, compile with `-basis 1997`. |
| 2057 | * Added many modules to basis library: |
| 2058 | ** `BinPrimIO`, `GenericSock`, `ImperativeIO`, `INetSock`, `NetHostDB`, |
| 2059 | `NetProtDB`, `NetServDB`, `Socket`, `StreamIO`, `TextPrimIO`, `UnixSock`. |
| 2060 | * Completed implementation of `IntInf` and `OS.IO`. |
| 2061 | |
| 2062 | === Details |
| 2063 | |
| 2064 | * 2003-02-23 |
| 2065 | ** Replaced `-profile-combine` wih `-profile-split`. |
| 2066 | |
| 2067 | * 2003-02-11 |
| 2068 | ** Regularization of options: |
| 2069 | *** `-l` --> `-link` |
| 2070 | *** `-L` --> `-lib-search` |
| 2071 | *** `-o` --> `-output` |
| 2072 | *** `-v` --> `-verbose` |
| 2073 | |
| 2074 | * 2003-02-10 |
| 2075 | ** Added option to `mlton`: `-profile-combine {false|true}` |
| 2076 | |
| 2077 | * 2003-02-09 |
| 2078 | ** Added options to `mlprof`: `-graph-title`, `-gray`, `-ignore`, `-mlmon`, |
| 2079 | `-tolerant`. |
| 2080 | |
| 2081 | * 2002-11 - 2003-01 |
| 2082 | ** Added source-level allocation and time profiling. This includes the new |
| 2083 | options to mlton: `-profile` and `-profile-stack`. |
| 2084 | |
| 2085 | * 2002-12-28 |
| 2086 | ** Added `NetHostDB`, `NetProtDB`, `NetServDB` structures. |
| 2087 | ** Added `Socket`, `GenericSock`, `INetSock`, `UnixSock` structures. |
| 2088 | |
| 2089 | * 2002-12-19 |
| 2090 | ** Fixed bug in signal check insertion that could cause some signals to be |
| 2091 | missed. The fix was to add a signal check on entry to each function in |
| 2092 | addition to at each loop header. |
| 2093 | |
| 2094 | * 2002-12-10 |
| 2095 | ** Fixed bug in runtime that might cause the message `"Unable to set |
| 2096 | cardMapForMutator"`. |
| 2097 | |
| 2098 | * 2002-11-23 |
| 2099 | ** Added support for the latest Basis Library specification. |
| 2100 | ** Added option `-basis` to choose Basis Library version. Currently available |
| 2101 | basis libraries are `2002`, `2002-strict`, `1997`, and `none`. |
| 2102 | ** Added `IntInf.{orb,xorb,andb,notb,<<,~>>}` values. |
| 2103 | ** Added `OS.IO.{poll_desc,poll_info}` types. |
| 2104 | ** Added `OS.IO.{pollDesc,pollToIODesc,infoToPollDesc,Poll}` values. |
| 2105 | ** Added `OS.IO.{pollIn,pollOut,pollPri,poll,isIn,isOut,isPri}` values. |
| 2106 | ** Added `BinPrimIO`, `TextPrimIO` structures. |
| 2107 | ** Added `StreamIO`, `ImperativeIO` functors. |
| 2108 | |
| 2109 | * 2002-11-22 |
| 2110 | ** Fixed bug that caused time profiling to fail (with a segfault) when |
| 2111 | resuming a saved world. |
| 2112 | |
| 2113 | * 2002-11-07 |
| 2114 | ** Fixed bug in `MLton.eq` that could arise when using `eq` on functions. |
| 2115 | |
| 2116 | * 2002-11-05 |
| 2117 | ** Improvements to polymorphic equality. Equality on IntInfs, vectors, and |
| 2118 | dataypes all do an `eq` test first before a more expensive comparison. |
| 2119 | |
| 2120 | * 2002-11-01 |
| 2121 | ** Added allocation profiling. Now, can compile with either `-profile alloc` |
| 2122 | or `-profile time`. Renamed `MLton.Profile` as `MLton.ProfileTime`. Added |
| 2123 | `MLton.ProfileAlloc`. Cleaned up and changed most `mlprof` option names. |
| 2124 | |
| 2125 | * 2002-10-31 |
| 2126 | ** Eliminated `MLton.debug`. |
| 2127 | ** Fixed bug in the optimizer that affected `IntInf.fmt`. The optimizer had |
| 2128 | been always using base 10, instead of the passed in radix. |
| 2129 | |
| 2130 | * 2002-10-22 |
| 2131 | ** Fixed `Real.toManExp` so that the mantissa is in [1, 2), not [0.5, 1). |
| 2132 | ** Added `Real.fromLargeInt`, `Real.toLargeInt`. |
| 2133 | ** Fixed `Real.split`, which would return an incorrect whole part due to the |
| 2134 | underlying primitive, `Real_modf`, being treated as functional instead of |
| 2135 | side-effecting. |
| 2136 | |
| 2137 | * 2002-09-30 |
| 2138 | ** Fixed `rpath` problem with packaging. All executables in packages |
| 2139 | previously made had included a setting for `RPATH`. |
| 2140 | |
| 2141 | |
| 2142 | == Version 20020923 |
| 2143 | |
| 2144 | Here are the changes from version 20020410 to 20020923. |
| 2145 | |
| 2146 | === Summary |
| 2147 | |
| 2148 | * MLton now runs on FreeBSD. |
| 2149 | * Major runtime system improvements. The runtime now implements mark-compact |
| 2150 | and generational collection, in addition to the copying collection that was |
| 2151 | there before. It automatically switches between the the collection strategies |
| 2152 | to improve performance and to try to avoid paging. |
| 2153 | * Performance when compiling `-exn-history true` has been improved. |
| 2154 | * Added `IntInf.log2`, `MLton.GC.pack`, `MLton.GC.unpack`. |
| 2155 | * Fixed bug in load world that could cause "sread failed" on Cygwin. |
| 2156 | * Fixed optimizer bug that could cause `"no analyze var value property"` |
| 2157 | message. |
| 2158 | |
| 2159 | === Details |
| 2160 | |
| 2161 | * 2002-09 |
| 2162 | ** Integrated Sam Rushing's changes to port MLton to FreeBSD. |
| 2163 | |
| 2164 | * 2002-08-25 |
| 2165 | ** Changed the implementation of exception history to be completely |
| 2166 | functional. Now, the extra field in exceptions (when compiling `-exn-history |
| 2167 | true`) is a `string list` instead of a `string list ref`, and `raise` conses a |
| 2168 | new exception with a new element in the list instead of assigning to the list. |
| 2169 | This changes the semantics of exception history (for the better) on some |
| 2170 | programs. See `regression/exnHistory3.sml` for an example. It also |
| 2171 | significantly improves performance when compiling `-exn-history true`. |
| 2172 | |
| 2173 | * 2002-07 and 2002-08 |
| 2174 | ** Added generational GC, and code to the runtime that automatically turns it |
| 2175 | on and off. |
| 2176 | |
| 2177 | * 2002-08-20 |
| 2178 | ** Fixed SSA optimizer bug that could cause the following error message: `"x_0 |
| 2179 | has no analyze var value property"` |
| 2180 | |
| 2181 | * 2002-07-28 |
| 2182 | ** Added `MLton.GC.{pack,unpack}`. `pack` shrinks the heap so that other |
| 2183 | processes can use the RAM, and its dual, `unpack`, resizes the heap to the |
| 2184 | desired size. |
| 2185 | |
| 2186 | * 2002-06 and 2002-07 |
| 2187 | ** Added mark compact GC. |
| 2188 | ** Changed array layout so that arrays have three, not two header words. The |
| 2189 | new word is a counter word that preceeds the array length and header. |
| 2190 | ** Changed all header words to be indices into an array of object descriptors. |
| 2191 | |
| 2192 | * 2002-06-27 |
| 2193 | ** Added patches from Michael Neumann to port runtime to FreeBSD 4.5. |
| 2194 | |
| 2195 | * 2002-06-05 |
| 2196 | ** Output file and intermediate file are now saved in the current directory |
| 2197 | instead of in the directory containing the input file. |
| 2198 | |
| 2199 | * 2002-05-31 |
| 2200 | ** Fixed bug in overloading of `/` so that the following now type checks: |
| 2201 | |
| 2202 | fun f (x, y) = x + y / y |
| 2203 | |
| 2204 | * 2002-04-26 |
| 2205 | ** Added back `max-heap` runtime option. |
| 2206 | |
| 2207 | * 2002-04-25 |
| 2208 | ** Fixed load/save world so that they use binary mode. This should fix the |
| 2209 | `sread failed` problem that Byron Hale saw on Cygwin that caused `mlton` to |
| 2210 | fail to start. |
| 2211 | ** Added `IntInf.log2`. |
| 2212 | ** Changed call to linker to use `libgmp.a` (if it exists) instead of |
| 2213 | `libgmp.so`. This is because the linker adds a dependency to a shared library |
| 2214 | even if there are no references to it |
| 2215 | |
| 2216 | * 2002-04-23 |
| 2217 | ** Rewrote heap resizing code. This fixed bug that was triggered with large |
| 2218 | heaps and could cause a spurious out of memory error. |
| 2219 | ** Removed GnuMP from MLton sources (again :-). |
| 2220 | |
| 2221 | |
| 2222 | == Version 20020410 |
| 2223 | |
| 2224 | Here are the changes from version 20011006 to version 20020410. |
| 2225 | |
| 2226 | === Details |
| 2227 | |
| 2228 | * 2002-03-28 |
| 2229 | ** Added BinIO. |
| 2230 | |
| 2231 | * 2002-03-27 |
| 2232 | ** Regularization of options |
| 2233 | *** `-g` --> `-degug {false|true}` |
| 2234 | *** `-h n` --> `-fixed-heap n` |
| 2235 | *** `-p` --> `-profile {false|true}` |
| 2236 | |
| 2237 | * 2002-03-22 |
| 2238 | ** Set up the stubs so that MLton can be compiled in the standard basis |
| 2239 | library, with no `MLton` structure. Thus it is now easy to compile MLton with |
| 2240 | an older (or newer) version of itself that has a different `MLton` structure. |
| 2241 | |
| 2242 | * 2002-03-17 |
| 2243 | ** Added `MLton.Process.{spawn,spawne,spawnp}`, which use primitives when |
| 2244 | running on Cygwin and fork/exec when running on Linux. |
| 2245 | |
| 2246 | * 2002-02 - 2002-03 |
| 2247 | ** Added the ability to cross-compile to Cygwin/Windows. |
| 2248 | |
| 2249 | * 2002-02-24 |
| 2250 | ** Added GnuMP back for use with Cygwin. |
| 2251 | |
| 2252 | * 2002-02-10 |
| 2253 | ** Reworked object header words so that `Array.maxLen = valOf Int.maxInt`. |
| 2254 | Also fixed a long-standing minor bug in MLton, where `Array.array |
| 2255 | (Array.maxLen, ...)` would raise `Size` instead of attempting to allocate the |
| 2256 | array. It was an off-by-one error in the meaning of `Array.maxLen`. |
| 2257 | |
| 2258 | * 2002-02-08 |
| 2259 | ** Modifications to runtime to behave better in situations where the amount of |
| 2260 | live data is a signifant fraction of the amount of RAM, based on code from |
| 2261 | PolySpace. MLton executables by default can now use more than the available |
| 2262 | amount of RAM. Executables will still respect the `max-heap` runtime arg if |
| 2263 | it is set. |
| 2264 | |
| 2265 | * 2002-02-04 |
| 2266 | ** Improvements to runtime so that it fails to get space, it attempts to get |
| 2267 | less space instead of failing. Based on PolySpace's modifications. |
| 2268 | ** Added `MLton.eq`. |
| 2269 | |
| 2270 | * 2002-02-03 |
| 2271 | ** Added `MLton.IntInf.gcd`. |
| 2272 | ** Removed GnuMP from MLton sources. We now link with `/usr/lib/libgmp.a`. |
| 2273 | ** Added `TextIO.getPosOut`. |
| 2274 | ** Renamed type `MLton.Itimer.which` to `MLton.Itimer.t` and |
| 2275 | `MLton.Itimer.whichSignal` to `MLton.Itimer.signal`. |
| 2276 | ** Added `-coalesce` flag, for use with the C backend. |
| 2277 | |
| 2278 | * 2002-01-26 |
| 2279 | ** Added `-show-basis-used`, which prints out the parts of the basis library |
| 2280 | that the input program uses. |
| 2281 | ** Changed several other flags (`-print-at-fun-entry`, `-show-basis`, |
| 2282 | `-static`) to follow the `{false|true}` convention. |
| 2283 | |
| 2284 | * 2002-01-22 |
| 2285 | ** Improved `MLton.profile` so that multiple profile arrays can exist |
| 2286 | simultaneously and so that the current one being used can be set from the SML |
| 2287 | side. |
| 2288 | |
| 2289 | * 2002-01-18 |
| 2290 | ** The Machine IL has been replaced with an RSSA (representation explicit SSA) |
| 2291 | IL and an improved Machine IL. |
| 2292 | |
| 2293 | * 2002-01-16 |
| 2294 | ** Added KnownCase SSA optimization |
| 2295 | |
| 2296 | * 2002-01-14 |
| 2297 | ** Added rudimentary profiling control from with a MLton compile program via |
| 2298 | the `MLton.Profile` structure. |
| 2299 | |
| 2300 | * 2002-01-09 |
| 2301 | ** Fixed bug in match compiler that caused case expressions on datatypes with |
| 2302 | redundant cases to be compiled incorrectly. |
| 2303 | |
| 2304 | * 2002-01-08 |
| 2305 | ** Added redundant tuple construction elimination to SSA shrinker. |
| 2306 | ** Improved Flatten SSA optimization. |
| 2307 | |
| 2308 | * 2001-12-06 |
| 2309 | ** Changed the interface for `MLton.Signal`. There is no longer a separate |
| 2310 | `Handler` substructure. This was done so that programs that just use |
| 2311 | `default` and `ignore` signal handlers don't bring in the entire thread |
| 2312 | mechanism. |
| 2313 | |
| 2314 | * 2001-12-05 |
| 2315 | ** Added LocalRef elimination SSA optimization. |
| 2316 | |
| 2317 | * 2001-11-19 |
| 2318 | ** The CPS IL has been replaced with an SSA (static-single assignment) IL. |
| 2319 | All of the optimizations have been ported from CPS to SSA. |
| 2320 | |
| 2321 | * 2001-10-24 |
| 2322 | ** Fixed bug in `Thread_atomicEnd` -- `limit` was mistakenly set to `base` |
| 2323 | instead of to 0. This caused assertion failures when for executables compiled |
| 2324 | `-g` because `GC_enter` didn't reset `limit`. |
| 2325 | ** Fixed bug in register allocation of byte registers. |
| 2326 | |
| 2327 | * 2001-10-23 |
| 2328 | ** Added `-D` option to `cmcat` for preprocessor defines. Thanks to Anoq for |
| 2329 | sending the code. |
| 2330 | ** Changed limit check insertion so that limit checks are only coalesced |
| 2331 | within a single basic block -- not across blocks. This slows many benchmarks |
| 2332 | down, but is needed to fix a bug in the way that limit checks were coalesced |
| 2333 | across blocks. Hopefully we will figure out a better fix soon. |
| 2334 | |
| 2335 | * 2001-10-18 |
| 2336 | ** Fixed type inference of flexrecord so that it now follows the Definition. |
| 2337 | Many programs containing flexrecords were incorrectly rejected. Added many |
| 2338 | new tests to regression/flexrecord.sml. |
| 2339 | ** Changed the behavior of `-keep dot` combined with `-keep pass` for SSA |
| 2340 | passes. Dot files are now saved for the program before and after, instead of |
| 2341 | just after. |
| 2342 | |
| 2343 | * 2001-10-11 |
| 2344 | ** Fixed a bug in the type inference that caused type variables to be |
| 2345 | mistakenly generalized. The bug was exposed in Norman Ramsey's `sled.sml`. |
| 2346 | Added a test to `regression/flexrecord.sml` to catch the problem. |
| 2347 | |
| 2348 | |
| 2349 | == Version 20011006 |
| 2350 | |
| 2351 | Here are the changes from version 20010806 to version 20011006. |
| 2352 | |
| 2353 | === Summary |
| 2354 | |
| 2355 | * Added `MLton.Exn.history`, which is similar to `SMLofNJ.exnHistory`. |
| 2356 | * Support for `#line` directives of the form `(*#line line.col "file"*)`. |
| 2357 | * Performance improvements in native codegenerator. |
| 2358 | * Bug fixes in front-end, optimizer, register allocator, |
| 2359 | `Real.{maxFinite,minPos,toManExp}`, and in heap save and restore. |
| 2360 | |
| 2361 | === Details |
| 2362 | |
| 2363 | * 2001-10-05 |
| 2364 | ** Fixed a bug in polymorphic layered patterns, like |
| 2365 | |
| 2366 | val 'a a as b = [] |
| 2367 | |
| 2368 | These would always fail due to the variable `a` not being handled correctly. |
| 2369 | ** Fixed the syntax of `val rec` so that a pattern is allowed on the left-hand |
| 2370 | side of the `=`. Thus, we used to reject, but now accept, the following. |
| 2371 | |
| 2372 | val rec a as b as c = fn _ => () |
| 2373 | val rec a : unit -> unit : unit -> unit = fn () => () |
| 2374 | |
| 2375 | Thanks again to Andreas Rossberg's test files. This is now tested for in |
| 2376 | `valrec.sml`. |
| 2377 | ** Fixed dynamic semantics of `val rec` so that if `val rec` is used to |
| 2378 | override constructor status, then at run time, the `Bind` exception is raised |
| 2379 | as per rule 126 of the Definition. So, for example, the following program |
| 2380 | type checks and compiles, but raises `Bind` at run time. |
| 2381 | |
| 2382 | val rec NONE = fn () => () |
| 2383 | val _ = NONE () |
| 2384 | |
| 2385 | Again, this is checked in `valrec.sml`. |
| 2386 | ** Added `\r\n` to ml.lex so that Windows style newlines are acceptable in |
| 2387 | input files. |
| 2388 | |
| 2389 | * 2001-10-04 |
| 2390 | ** Fixed bug in the implementation of `open` declarations, which in the case |
| 2391 | of `open A B` had opened `A` and then looked up `B` in the resulting |
| 2392 | environment. The correct behaviour (see rule 22 of the Definition) is to |
| 2393 | lookup each _longstrid_ in the current environment, and then open them all in |
| 2394 | sequence. This is now checked for in the `open.sml` regression test. Thanks |
| 2395 | to Andreas Rossberg for pointing this bug out. |
| 2396 | ** Fixed bug that caused tyvars of length 1 (i.e. `'`) to be rejected. This |
| 2397 | is now checked in the `id.sml` regression test. Again, thanks to Andreas |
| 2398 | Rossberg for the test. |
| 2399 | |
| 2400 | * 2001-10-02 |
| 2401 | ** Fixed bugs in `Real.toManExp` (which always returned the wrong result |
| 2402 | because the call to `frexp` was not treated as side-effecting by the |
| 2403 | optimizer) and in `Real.minPos`, which was zero because of a mistake with |
| 2404 | extra precision bits. |
| 2405 | |
| 2406 | * 2001-10-01 |
| 2407 | ** Added `MLton.Exn.history`. |
| 2408 | ** Fixed register allocation bug with `fucom` instruction. Was allowing |
| 2409 | `fucomp` when the first source was not removable. |
| 2410 | ** Changed `Real.isFinite` to use the C `math.h` `finite` function. This |
| 2411 | fixed the nontermination bug which occurred in any program that used |
| 2412 | `Real.maxFinite`. |
| 2413 | |
| 2414 | * 2001-09-22 |
| 2415 | ** Bug fixes found from Ramsey's `lrtl` in `contify.fun` and |
| 2416 | `unused-args.fun`, both of which caused compile-time exceptions to be raised. |
| 2417 | |
| 2418 | * 2001-09-21 |
| 2419 | ** Fixed `MLton.World.{load,save}` so that the saved world does not store the |
| 2420 | max heap size. Instead, the max heap size is computed upon load world in |
| 2421 | exactly the same way as at program startup. This fixes a long-standing (but |
| 2422 | only recently noticed) problem in which `mlton` (which uses a saved world) |
| 2423 | would attempt to use as much memory as was on the machine used to build |
| 2424 | `world.mlton`. |
| 2425 | |
| 2426 | * 2001-08-29 |
| 2427 | ** Overlow checking is now on by default in the C backend. This is a huge |
| 2428 | performance hit, but who cares, since we never use the C backend except for |
| 2429 | testing anyways. |
| 2430 | |
| 2431 | * 2001-08-22 |
| 2432 | ** Added support for #line directives of the form |
| 2433 | |
| 2434 | (*#line line.col "file"*) |
| 2435 | |
| 2436 | These directives only affect error messages produced by the parser and |
| 2437 | elaborator. |
| 2438 | |
| 2439 | * 2001-08-17 |
| 2440 | ** Fixed bug in RemoveUnused optimzation that caused the following program to |
| 2441 | fail to compile. |
| 2442 | |
| 2443 | fun f l = case l of [] => f l | _ :: l => f l |
| 2444 | val _ = f [13] |
| 2445 | |
| 2446 | * 2001-08-14 |
| 2447 | ** New x86-codegen infrastructure. |
| 2448 | *** support for tracking liveness of stack slots and carrying them in |
| 2449 | registers across basic blocks |
| 2450 | *** more specific `Entry` and `Transfer` datatypes to make calling convention |
| 2451 | distinctions more explicit |
| 2452 | *** new heuristic for carrying values in registers across basic blocks (look |
| 2453 | Ma, no Overflows!) |
| 2454 | *** new "predict" model for generating register allocation hints |
| 2455 | *** additional bug fixes |
| 2456 | |
| 2457 | * 2001-08-07 |
| 2458 | ** `MLton.Socket.shutdownWrite` flushes the outstream. |
| 2459 | |
| 2460 | |
| 2461 | == Version 20010806 |
| 2462 | |
| 2463 | Here are the changes from version 20010706 to version 20010806. |
| 2464 | |
| 2465 | === Summary |
| 2466 | |
| 2467 | * `Word.andb (w, 0xFF)` now works correctly |
| 2468 | * `MLton.Rusage.rusage` has a patch to work around a linux kernel bug |
| 2469 | * Programs of the form `_exp_ ; _program_` are now accepted |
| 2470 | * Added the `MLton.Rlimit` structure |
| 2471 | * Added the `-keep dot` flag, which produces call graphs, intraprocedural |
| 2472 | control-flow graphs, and dominator trees |
| 2473 | |
| 2474 | === Details |
| 2475 | |
| 2476 | * 2001-08-06 |
| 2477 | ** Added simple CommonBlock elimination CPS optimization. |
| 2478 | |
| 2479 | * 2001-08-02 |
| 2480 | ** Took out `-keep il`. |
| 2481 | |
| 2482 | * 2001-07-31 |
| 2483 | ** Performance improvements to `TextIO.{input, output, output1}`. |
| 2484 | |
| 2485 | * 2001-07-25 |
| 2486 | ** Added RedundantTest elimination CPS optimization. |
| 2487 | |
| 2488 | * 2001-07-21 |
| 2489 | ** Added CommonSubexp elimination CPS optimization. |
| 2490 | |
| 2491 | * 2001-07-20 |
| 2492 | ** Bug fix to x86 codegen. The `commuteBinALMD` peephole optimization would |
| 2493 | rewrite `mov 2,Y; add Y,Y` as `mov Y,Y; add 2,Y`. Now the appropriate |
| 2494 | interference checks are made. |
| 2495 | ** Added intraprocedural unused argument removal. |
| 2496 | ** Added intraprocedural flattener. This avoids some stupid tuple allocations |
| 2497 | in loops. Decent speedup on a few benchmarks (`count-graphs`, `psdes-random`, |
| 2498 | `wc-scanStream`) and no noticeable slowdowns. |
| 2499 | ** Added `-keep dot` flag. |
| 2500 | |
| 2501 | * 2001-07-17 |
| 2502 | ** Modified grammar to properly handle `val rec`. There were several problems. |
| 2503 | *** MLton had accepted `val rec 'a ...` instead of `val 'a rec ...` |
| 2504 | *** MLton had not accepted `val x = 13 and rec f = fn () => ()` |
| 2505 | *** MLton had not accepted `val rec rec f = fn () => ()` |
| 2506 | *** MLton had not accepted `val rec f = fn () => () and rec g = fn () => ()` |
| 2507 | |
| 2508 | * 2001-07-16 |
| 2509 | ** Workaround for Linux kernel bug that can cause `getrusage` to return a wrong |
| 2510 | system time value (low by one second). See `fixedGetrusage` in `gc.c`. |
| 2511 | ** Bug fix to x86 codegen. The register allocator could get confused when |
| 2512 | doing comparisons of floating point numbers and use the wrong operand. The |
| 2513 | bug seems to have never been detected because it only happens when both of the |
| 2514 | operands are already on the floating point stack, which is rare, since one is |
| 2515 | almost always in memory since we don't carry floating point values in the |
| 2516 | stack across basic blocks. |
| 2517 | ** Added production to the grammar on page 58 of the Definition that had been |
| 2518 | missing from MLton since day one. |
| 2519 | |
| 2520 | program ::= exp ; <program> |
| 2521 | |
| 2522 | Also updated docs to reflect change. |
| 2523 | ** Modified grammar to accept the empty program. |
| 2524 | ** Added `-type-check` expert flag to turn on type checking in ILs. |
| 2525 | |
| 2526 | * 2001-07-15 |
| 2527 | ** Bug fix to the algebraic simplifier. It had been rewriting |
| 2528 | `Word32.andb (w, 0wxFF)` to `w` instead of |
| 2529 | `Word32.andb (w, 0wxFFFFFFFF)` to `w`. |
| 2530 | |
| 2531 | * 2001-07-13 |
| 2532 | ** Improved CPS shrinker so that `if`-tests where the `then` and `else` branch |
| 2533 | jump to the same label is turned into a direct jump. |
| 2534 | ** Improved CPS shrinker (`Prim.apply`) to handle constructors |
| 2535 | *** `A = A` --> `true` |
| 2536 | *** `A = B` --> `false` |
| 2537 | *** `A x` = `B y` --> `false` |
| 2538 | ** Rewrote a lot of loops in the basis library to use inequalities instead of |
| 2539 | equality for the loop termination test so that the (forthcoming) overflow |
| 2540 | detection elimination will work on the loop index variable. |
| 2541 | |
| 2542 | * 2001-07-11 |
| 2543 | ** Fixed minor bugs in `Array2.{array,tabulate}`, `Substring.{slice}` that |
| 2544 | caused the `Overflow` exception to be raised instead of `Size` or `Subscript` |
| 2545 | ** Fixed bug in `Pack32Big.update` that caused the wrong location to be updated. |
| 2546 | ** Fixed several bugs in `Pack32{Big,Little}.{subArr,subVec,update}` that |
| 2547 | caused `Overflow` to be raised instead of `Subscript`. Also, improved the |
| 2548 | implementation so that bounds checking only occurs once per call (instead of |
| 2549 | four times, which was sometimes happening. |
| 2550 | ** Fixed bugs in `Time.{toMilliseconds,toMicroseconds}` that could cause a |
| 2551 | spurious `Overflow` exception. |
| 2552 | ** Fixed bugs in `Time.{fromMilliseconds,fromMicroseconds}` that could cause a |
| 2553 | spurious `Time` exception. |
| 2554 | ** Improved `Pack32.sub*` by reordering the `orb`-s. |
| 2555 | ** Improved `{Int,IntInf}.mod` to increase chances of constant folding. |
| 2556 | ** Switched many uses of `+`, `-`, `*` in basis library to the non-overflow |
| 2557 | checked versions. Modules changed were: `Array`, `Array2`, `Byte`, `Char`, |
| 2558 | `Int`, `IntInf`, `List`, `Pack32{Big,Little}`, `Util`, `String`, `StringCvt`, |
| 2559 | `Substring`, `TextIO`, `Time`, `Vector`. |
| 2560 | ** Added regression tests for `Array2`, `Int` (overflow checking), `Pack32`, |
| 2561 | `Substring`, `Time`. |
| 2562 | ** Changed CPS output so that it includes a dot graph for each CPS function. |
| 2563 | |
| 2564 | * 2001-07-09 |
| 2565 | ** Change `OS.Process.exit` so that it raises an exception if the exit status |
| 2566 | is not in [0, 256). |
| 2567 | ** Added `MLton.Rlimit` to provide access to `getrlimit` and `setrlimit`. |
| 2568 | |
| 2569 | |
| 2570 | == Version 20010706 |
| 2571 | |
| 2572 | Here are the changes from the 20000906 version to the 20010706 version. |
| 2573 | |
| 2574 | === Summary |
| 2575 | |
| 2576 | * Native X86 code generator (instead of using `gcc`) |
| 2577 | * Significantly improved compile times |
| 2578 | * Significantly improved run times for generated executables |
| 2579 | * Many bug fixes |
| 2580 | * Correct raising of the `Overflow` exception for integer arithmetic |
| 2581 | * New modules in the `MLton` structure |
| 2582 | |
| 2583 | === Details |
| 2584 | |
| 2585 | * 2001-07-06 |
| 2586 | ** GC mods from Henry. Mostly adding `inline` declarations. |
| 2587 | |
| 2588 | * 2001-07-05 |
| 2589 | ** Fixed several runtime bugs involving threads, critical sections, and |
| 2590 | signals. |
| 2591 | |
| 2592 | * 2001-06-29 |
| 2593 | ** Fixed performance bug in `cps/two-point-lattice.fun` that caused quadratic |
| 2594 | behavior. This affects the raise-to-jump and useless analayses. In |
| 2595 | particular, the useless analysis was blowing up when compiling `fxp`. |
| 2596 | |
| 2597 | * 2001-06-27 |
| 2598 | ** Henry improved `wordAlign` -- this sped up GC by 27% (during a self |
| 2599 | compile). |
| 2600 | |
| 2601 | * 2001-06-20 |
| 2602 | ** Moved `MLton.random` to `MLton.Random.rand` and added other stuff to |
| 2603 | `MLton.Random` |
| 2604 | ** Added `MLton.TextIO.mkstemp`. |
| 2605 | ** Made `Int.{div,quot}` respect the `-detect-overflow` switch. |
| 2606 | |
| 2607 | * 2001-06-20 |
| 2608 | ** Added `MLton.Syslog`. |
| 2609 | |
| 2610 | * 2001-06-07 |
| 2611 | ** Fixed bug in `MLton.Socket.accept` that was in the runtime implementation |
| 2612 | `Socket_accept`. It did a `setsockopt SO_REUSEADDR` after the `accept`. It |
| 2613 | should have been after the call to `socket` in `Socket_listen`. Thanks to |
| 2614 | Doug Bagley for the fix. |
| 2615 | |
| 2616 | * 2001-05-30 |
| 2617 | ** Fixed bug in remove-unused that caused polymorphic equality to return |
| 2618 | `true` sometimes when constructors were never used in a pattern match. For |
| 2619 | example, the following (in which `A` and `B` are not used as patterns): |
| 2620 | |
| 2621 | datatype t = A | B |
| 2622 | datatype u = C of t |
| 2623 | val _ = if C A = C B then raise Fail "bug" else () |
| 2624 | |
| 2625 | * 2001-03-27 |
| 2626 | ** Fixed bug that caused all of the following to fail: |
| 2627 | `{LargeWord,Word,SysWord}.{toLargeInt,toLargeIntX,fromLargeInt}` The problem |
| 2628 | was the basis library file `integer/patch.sml` which fixed `Word32` but not |
| 2629 | the other structures that are the same. |
| 2630 | |
| 2631 | * 2001-02-12 |
| 2632 | ** Fixed bug in match compiler that caused it to spend a lot of extra time in |
| 2633 | deep patterns. It still could be exponential however. Hopefully this will |
| 2634 | get fixed in the release after next. This bug could cause very slow compile |
| 2635 | times in some cases. Anyways, this fix cut the `finish infer` time of a self |
| 2636 | compile down from 22 to under 4 seconds. I.E. most of the time used to be |
| 2637 | spent due to this bug. |
| 2638 | |
| 2639 | * 2001-02-06 |
| 2640 | ** Fixed bug in frontend that caused the wrong file and line number to be |
| 2641 | reported with errors in functor bodys. |
| 2642 | |
| 2643 | * 2001-01-03 - 2000-02-05 |
| 2644 | ** Changes to CoreML, XML, SXML, and CPS ILs to replace lists by vectors in |
| 2645 | order to decrease space usage. |
| 2646 | |
| 2647 | * 2001-01-16 |
| 2648 | ** Fixed a bug in constant propagation where the length of vectors was not |
| 2649 | propagated properly. |
| 2650 | |
| 2651 | * 2000-12-11 - 2001-01-03 |
| 2652 | ** Major rewrite of elaborator to use a single hash table for each namespace |
| 2653 | instead of a hash table for every environment. |
| 2654 | |
| 2655 | * 2000-12-20 |
| 2656 | ** Fixed some bugs in the SML/NJ compatibility library, |
| 2657 | `src/lib/mlton-subs-in-smlnj`. |
| 2658 | |
| 2659 | * 2000-12-08 |
| 2660 | ** More careful removal of tracing code when compiling `MLton_debug=0`. This |
| 2661 | cut down self compile data size by 100k and compile time by a few seconds. |
| 2662 | ** Added built in character and word cases propagated throughout all ILs. |
| 2663 | |
| 2664 | * 2000-12-06 |
| 2665 | ** Added max stack size information to `gc-summary`. |
| 2666 | |
| 2667 | * 2000-12-05 |
| 2668 | ** Added `src/benchmark`, which contains an SML program that benchmarks all of |
| 2669 | the SML compilers I have my hands on. The script has lots of hardwired paths |
| 2670 | for now. |
| 2671 | |
| 2672 | * 2000-12-04 |
| 2673 | ** Fixed bug in `Posix.ProcEnv.environ,` which did not work correctly in a |
| 2674 | saved world (the original `environ` was saved). In fact, it did not work at |
| 2675 | all because the ML primitive expected a constant and the C was a nullary |
| 2676 | function. This caused a segfault with any program using |
| 2677 | `Posix.ProcEnv.environ`. |
| 2678 | ** `Added MLton.ProcEnv.setenv`, since there doesn't seem to be any `setenv` |
| 2679 | in the basis library. |
| 2680 | |
| 2681 | * 2000-11-29 |
| 2682 | ** Changed backend so that it should no longer generate machine programs with |
| 2683 | `void` operands. |
| 2684 | ** Added `-detect-overflow` and `-safe` flags. |
| 2685 | |
| 2686 | * 2000-11-27 - 2000-11-28 |
| 2687 | ** Changes in many places to use `List.revMap` instead of `List.map` to cut |
| 2688 | down on allocation. |
| 2689 | |
| 2690 | * 2000-11-21 |
| 2691 | ** Added `MLton.Word.~` and `MLton.Word8.~` to the `MLton` structure. |
| 2692 | |
| 2693 | * 2000-11-20 |
| 2694 | ** Fixed a bug in the CPS shrinker that could cause a compile-time failure. |
| 2695 | It was maintaining occurrence counts incorrectly. |
| 2696 | |
| 2697 | * 2000-11-15 |
| 2698 | ** Fixed a (performance) bug in constant propagation that caused the hashing |
| 2699 | to be bad. |
| 2700 | ** Improved translation to XML so that the match compiler isn't called on |
| 2701 | tuple or if expressions. This should speed up the translation and make the |
| 2702 | output smaller. |
| 2703 | ** Fixed a bug in the match compiler that caused it to not generate integer |
| 2704 | case statements. This should speed up the mlyacc benchmark and the MLton |
| 2705 | front end. |
| 2706 | |
| 2707 | * 2000-11-09 |
| 2708 | ** Added `IntInf_equal` and `IntInf_compare` primitives. |
| 2709 | ** Took out the automatic `-keep c` when compiling `-g`. |
| 2710 | |
| 2711 | * 2000-11-08 |
| 2712 | ** Added a whole bunch of algebraic laws to the CPS shrinker, including some |
| 2713 | specifically targeted to `IntInf` primitives. |
| 2714 | |
| 2715 | * 2000-11-03 |
| 2716 | ** Improved implementation of properties so that sets don't allocate. |
| 2717 | ** Improved implementation of type homomorphism in type inference. What was |
| 2718 | there before appears to have been a bug -- it didn't use the property on |
| 2719 | types. |
| 2720 | |
| 2721 | * 2000-11-02 |
| 2722 | ** Fixed timers used with `-v` option to use user + sys time. |
| 2723 | |
| 2724 | * 2000-10-27 |
| 2725 | ** Split the runtime basis library C files into many separate files so that |
| 2726 | only the needed code would be included by the linker. |
| 2727 | ** Fixed several bugs in the front end grammar and elaborator that caused type |
| 2728 | specifications to be handled incorrectly. The following three programs used |
| 2729 | to be handled incorrectly, but are now handled correctly. |
| 2730 | |
| 2731 | signature S = sig type t and u = int end (* reject *) |
| 2732 | signature S = sig type t = int and u = t end (* accept *) |
| 2733 | signature S = sig eqtype t and u = int end (* reject *) |
| 2734 | |
| 2735 | * 2000-10-25 |
| 2736 | ** Changes to `main.sml` to run complete compiles with `-native` switch. |
| 2737 | |
| 2738 | * 2000-10-24 |
| 2739 | ** Removed defunctorizer. |
| 2740 | |
| 2741 | * 2000-10-20 |
| 2742 | ** Fixed bug in `cps-tree.fun` with `PrimExp.maySideEffect`. This bug could |
| 2743 | cause `"no operand"` failures in the backend. |
| 2744 | ** Fixed bug in the runtime implementation of `MLton.size`. The size for |
| 2745 | stack objects was using the `used` instead of `reserved`, and so was too low. |
| 2746 | |
| 2747 | * 2000-10-19 |
| 2748 | ** Replaced automatically generated dependencies in `src/runtime/Makefile` |
| 2749 | with hand generated ones. Took out `make depend` from `src/Makefile`. `make |
| 2750 | depend` was behaving really badly on RHAT 7.0. |
| 2751 | ** Tweaked compiler to shorten width of C output lines to work around bug in |
| 2752 | RHAT 7.0 `cpp` which silently truncates (very) long lines. |
| 2753 | ** Fixed bug in grammar that didn't allow `op` to occur in datatype and |
| 2754 | exception bindings, causing the following to fail |
| 2755 | |
| 2756 | datatype t = op T |
| 2757 | exception op E = op Fail |
| 2758 | |
| 2759 | ** Improved error messages in CM processor. Fixed bug in CM Alias handling. |
| 2760 | |
| 2761 | * 2000-10-18 |
| 2762 | ** Fixed two bugs in the gc that did comparisons with `(s->limit - |
| 2763 | s->frontier)`, which of course doesn't work if `frontier` is beyond `limit`, |
| 2764 | since these are unsigned. This could have caused segfaults, except that the |
| 2765 | mutator checks the `frontier` upon return from the GC. |
| 2766 | |
| 2767 | * 2000-10-17 |
| 2768 | ** Fixed bug in backend in the calculation of `maxFrameSize`. It could be |
| 2769 | wrong (low) in some situations. |
| 2770 | ** Improved CPS inliner's estimate of function sizes. The size of a function |
| 2771 | now takes into account other inlined functions that the function calls. This |
| 2772 | also changed the meaning of the size argument to the `-inline` switch. It now |
| 2773 | corresponds (roughly) to the product of the size of the function and the |
| 2774 | number of calls. In general, it should be larger than before. |
| 2775 | |
| 2776 | * 2000-10-13 |
| 2777 | ** Made some calls to `Array.sub` unsafe in the implementation of `Array2`. |
| 2778 | ** Integrated Matthew's new x86 backend with floating point support. |
| 2779 | |
| 2780 | * 2000-10-09 |
| 2781 | ** Fixed CM file processor so that MLton works if it is run from a different |
| 2782 | directory than the main CM file. |
| 2783 | |
| 2784 | * 2000-10-04 |
| 2785 | ** Changed LimitCheck so it loops on the `frontier > limit` check. This fixed |
| 2786 | a potential bug in threads caused when there is enough space available for a |
| 2787 | thread, `t`, before switching to another thread but not enough space when it |
| 2788 | resumes. This could have caused a segfault. |
| 2789 | |
| 2790 | * 2000-10-03 |
| 2791 | ** More rewrites of `TextIO.StreamIO` to improve speed. |
| 2792 | ** Changed `TextIO` so that only `TextIO.stdErr` is unbuffered. |
| 2793 | ** Changed `TextIO` so that FIFOs and sockets are buffered. |
| 2794 | |
| 2795 | * 2000-10-02 |
| 2796 | ** Combined remove-unused-constructors, remove-unused-functions, and |
| 2797 | remove-unused-globals into a single pass that runs to fixed-point and produces |
| 2798 | results at least as good as running the previous three in (any) sequence. |
| 2799 | |
| 2800 | * 2000-09-29 |
| 2801 | ** Added `GC_FIRST_CHECK`, which does a gc at each limit check the first time |
| 2802 | it reached. |
| 2803 | ** Reimplemented `TextIO.StreamIO` (from 2000-09-12) to use lists of strings |
| 2804 | instead of lists of characters so that the per char space overhead is small. |
| 2805 | |
| 2806 | * 2000-09-21 |
| 2807 | ** Fixed bug in profiling labels in C code. The label was always the basic |
| 2808 | block label instead of the cps function label. |
| 2809 | ** Added `-b` switch to `mlprof` to gather data at the basic block level. |
| 2810 | ** Improved performance of `TextIO.input1` by about 3X. |
| 2811 | |
| 2812 | * 2000-09-15 - 2000-09-19 |
| 2813 | ** Added overflow exceptions to CPS and Machine ILs. |
| 2814 | |
| 2815 | * 2000-09-12 |
| 2816 | ** Fixed `TextIO.scanStream`. It was very broken. |
| 2817 | ** Added `TextIO.{getInstream,mkInstream,setInstream}` and |
| 2818 | `TextIO.StreamIO.{canInput,closeIn,endOfStream,input1,input,inputAll,inputLine,inputN}`. |
| 2819 | |
| 2820 | * 2000-09-11 |
| 2821 | ** Fixed `Real_qequal` in `mlton-lib.h`. It was missing a paren that caused |
| 2822 | code using it to not even compile. It was also semantically incorrect. |
| 2823 | ** Noted that `Real_{equal,lt,le,gt,ge}` may not follow basis library spec, |
| 2824 | since ANSI does not require IEEE compliance, and hence these could return |
| 2825 | wrong results when nans are involved. |
| 2826 | |
| 2827 | |
| 2828 | == Version 20000906 |
| 2829 | |
| 2830 | Here are the changes from the 20000712 version to the 20000906 version. |
| 2831 | |
| 2832 | === Summary |
| 2833 | |
| 2834 | * Version 20000906 is mostly a bugfix release over 20000712. The other major |
| 2835 | changes are that `mllex` and `mlyacc` are now included and that `mlton` can now |
| 2836 | process a limited subset of CM files as input. |
| 2837 | |
| 2838 | === Details |
| 2839 | |
| 2840 | * 2000-09-06 |
| 2841 | ** Fixed `Socket_listen` in `mlton-lib.c` so that it closes the socket if the |
| 2842 | `bind`, `listen`, or `getsockname` fails. This could have caused a file |
| 2843 | descriptor leak. |
| 2844 | |
| 2845 | * 2000-09-05 |
| 2846 | ** Added `-static` commandline switch. |
| 2847 | ** Changed default max heap size to .85 RAM from .95 RAM. |
| 2848 | ** Added `PackRealLittle` structure to basis library. |
| 2849 | |
| 2850 | * 2000-08-25 |
| 2851 | ** Added cases on integers to ILs (instead of using sequences of tests) so |
| 2852 | that backend can emit more efficient test (jump table, binary tree, ...). |
| 2853 | |
| 2854 | * 2000-08-24 |
| 2855 | ** Fixed bug in `gc.c`. `dfsInitializeStack` would `smummap` a `NULL` pointer |
| 2856 | whenver `toSpace` was `NULL`. This could cause `MLton.size` to segfault. |
| 2857 | ** Fixed bug in `Popt` that caused `-k` to fail with no keeps. |
| 2858 | |
| 2859 | * 2000-08-22 - 2000-08-23 |
| 2860 | ** Ported `mllex` and `mlyacc` from SML/NJ |
| 2861 | |
| 2862 | * 2000-08-20 - 2000-08-21 |
| 2863 | ** Added ability to use a `.cm` file as input to MLton. |
| 2864 | |
| 2865 | * 2000-08-16 |
| 2866 | ** Ported `mlprof` to SML. |
| 2867 | ** Fixed bug in `library/basic/assert.sml` that caused asserts to be run even |
| 2868 | when `MLton.debug = false`. |
| 2869 | |
| 2870 | * 2000-08-15 |
| 2871 | ** Fixed bug in backend -- computation of `maxFrameSize` was wrong. It didn't |
| 2872 | count slots in frames that didn't make nontail calls. This could lead to the |
| 2873 | stack being overwritten because a stack limit check didn't guarantee enough |
| 2874 | space, and lead to a segfault. |
| 2875 | ** Fixed bug in `gc.c` `newThreadOfSize`. If the thread allocation caused a |
| 2876 | gc, then the stack wasn't forwarded, leading to a segfault. The solution was |
| 2877 | to ensure enough memory all at once, and then fill in both objects. |
| 2878 | |
| 2879 | * 2000-08-14 |
| 2880 | ** Changed limit checks so that checks < 512 bytes are replaced by a check for |
| 2881 | 0 bytes. The runtime also moves the limit down by 512. This is done so that |
| 2882 | the common case, a small limit check, has less code and is faster. |
| 2883 | ** Fixed bug in `cps/cps-tree.fun`. `Program.hasPrim` returned `true` for any |
| 2884 | program that had *any* primapp, not just programs satisfying the predicate. |
| 2885 | This caused `cps/once.fun` to be overly conservative, since it thought that |
| 2886 | every program used continuations. |
| 2887 | |
| 2888 | * 2000-08-10 |
| 2889 | ** Fixed bug in CPS typechecker. It didn't enforce that handlers should be |
| 2890 | defined before any reference to them -- including implicit references in |
| 2891 | `HandlerPops`. This caused an evil bug in the liveness analysis where a |
| 2892 | variable that was only live in the handler was missed in a continuation |
| 2893 | because the liveness for the handler wasn't computed yet. |
| 2894 | ** Limited the size for moving up limit checks for arrays whose size is known |
| 2895 | at compile time to avoid huge limit checks getting moved into loops. |
| 2896 | ** added `-indent`, `-kp`, `-show-types` switches. |
| 2897 | ** Put optimization in CPS IL suggested by Neal Glew. It determines for each |
| 2898 | toplevel function if it can raise an exception to its caller. Also, it |
| 2899 | removes `HanderPush` and `HandlerPop` for handlers that are not on top of the |
| 2900 | stack for any nontail call. |
| 2901 | |
| 2902 | * 2000-08-08 |
| 2903 | ** Changed register allocator so that continuation formals can be allocated in |
| 2904 | pseudo registers -- they aren't necessarily forced to the stack. |
| 2905 | |
| 2906 | * 2000-08-03 |
| 2907 | ** Fixed bug in constant folding. `Word8.>>` had been used to implement |
| 2908 | `Word8.~>>`. |
| 2909 | ** Fixed bug in allocate registers that was not forcing the size argument to |
| 2910 | `Primitive.Array.array` to be a stack slot. This could cause problems if |
| 2911 | there was a thread switch in the limit check, since upon return the size |
| 2912 | pseudo register would have a bogus value. |
| 2913 | |
| 2914 | * 2000-08-01 |
| 2915 | ** Turned back on XML simplification after monomorphisation. |
| 2916 | |
| 2917 | * 2000-07-31 |
| 2918 | ** Fixed bug in `MLton.Itimer.set` that caused the time to be doubled. |
| 2919 | ** Fixed bug in `MLton.Thread` that made it look like asynchronous exceptions |
| 2920 | were allowed by `throw`-ing an exception raising thunk to an interrupted |
| 2921 | thread obtained via a signal handler. Attempting asynchronous exceptions will |
| 2922 | now cause process death, with a helpful error message. |
| 2923 | |
| 2924 | * 2000-07-27 |
| 2925 | ** Updated docs to include `structure World: MLTON_WORLD` in `MLton` |
| 2926 | structure. |
| 2927 | ** Added toplevel signatures `MLTON_{CONT, ..., WORLD}` to basis library. |
| 2928 | ** Fixed broken link in docs to CM in `cmcat` section. |
| 2929 | |
| 2930 | * 2000-07-26 |
| 2931 | ** Eliminated `GC_switchToThread` and `Thread_switchTo1`, since the inlined |
| 2932 | version `Thread_switchTo` is all that's needed, and Matt's X86 backend now |
| 2933 | handles it. |
| 2934 | ** Added `MLton.Signal.vtalrm`, needed for `Itimer.Set{which = |
| 2935 | Itimer.Virtual, ...}`. |
| 2936 | |
| 2937 | * 2000-07-25 |
| 2938 | ** Added `MLton.Socket.shutdownWrite`. |
| 2939 | |
| 2940 | * 2000-07-21 |
| 2941 | ** Updated `mlton-lib.c` `MLton_bug` with new email (MLton@sourcelight.com). |
| 2942 | |
| 2943 | * 2000-07-19 |
| 2944 | ** Fixed `Posix.Process.kill` to check for errors. |
| 2945 | |
| 2946 | * 2000-07-18 |
| 2947 | ** Fixed the following `Posix.ProcEnv` functions to check for errors: |
| 2948 | `setgid`, `setpgid`, `setsid`, `setuid`. |
| 2949 | ** Fixed `doc/examples/callcc.sml`. |
| 2950 | |
| 2951 | |
| 2952 | == Version 20000712 |
| 2953 | |
| 2954 | Here are the changes from the 1999-07-12 to the 20000712 version. |
| 2955 | |
| 2956 | === Details |
| 2957 | |
| 2958 | * 2000-06-10 - 2000-07-12 |
| 2959 | ** Too many changes to count: bug fixes, new basis library modules, optimizer |
| 2960 | improvements. |
| 2961 | |
| 2962 | * 2000-06-30 |
| 2963 | ** Fixed bug in monomorphiser that caused programs with non-value carrying |
| 2964 | exception declarations in polymorphic functions to have a compile-time error |
| 2965 | because of a duplicate label. The problem was that the exception constructor |
| 2966 | wasn't duplicated. |
| 2967 | |
| 2968 | * 2000-05-22 - 2000-06-10 |
| 2969 | ** Finished the changes for the new CPS IL. |
| 2970 | |
| 2971 | * 2000-01-01 |
| 2972 | ** Fixed some errors in the basis library: |
| 2973 | *** `Real.copySign` |
| 2974 | *** `Posix.FileSys.fpathconf` |
| 2975 | *** `Posix.IO.{lseek, getlk, setlk, setlkw}` |
| 2976 | *** `Posix.ProcEnv.setpgid` |
| 2977 | *** `Posix.TTY.getattr` |
| 2978 | *** `System.FileSys.realPath` |
| 2979 | |
| 2980 | * 1999-12-22 |
| 2981 | ** Fixed bug in `src/closure-convert/abstract-value.fun` that caused a |
| 2982 | compiler failure whenever a program had a vector where the element type |
| 2983 | contained an `->`. |
| 2984 | |
| 2985 | * 1999-12-10 |
| 2986 | ** Changed dead code elimination in `core-ml/dead-code.fun` so that wildcard |
| 2987 | declarations (`val _ = ...`) in the basis are kept. Changed places in the |
| 2988 | basis library to take advantage of this. |
| 2989 | ** Added `setTopLevelHander` primitive so that the basis library code can |
| 2990 | define the toplevel handler. |
| 2991 | ** Changed `basis-library/misc/suffix.sml` to call `OS.Process.exit`. Took |
| 2992 | out `Halt` transfer from CPS, since the program never should reach it. |
| 2993 | ** Cleaned up `basis-library/system/{process.sml, unix.sml}` to use the new |
| 2994 | signal handling stuff. |
| 2995 | |
| 2996 | * 1999-11-28 - 1999-12-20 |
| 2997 | ** Added support for threads and cleaned up signal handling. This involved a |
| 2998 | number of changes: |
| 2999 | *** The stack is now allocated as just another kind of heap object. |
| 3000 | *** Limit checks are inserted at all loop headers, whether or not there is |
| 3001 | any allocation. This is to ensure that the signal handler always has a |
| 3002 | chance to get called. |
| 3003 | *** The register allocator puts more variables in stack slots. The new rule |
| 3004 | is that a variable goes in a stack slot if it is ever live across a nontail |
| 3005 | call, in a handler, or (this is the new part) across a limit check. |
| 3006 | *** Arguments are passed on the stack, with the convention determined by |
| 3007 | argument types. |
| 3008 | *** The "locals" array of pointers that was copied to/from for GC is now |
| 3009 | gone, because no registers (in particular no pointer valued registers) can |
| 3010 | be live at a limit check point. |
| 3011 | |
| 3012 | * 1999-11-21 |
| 3013 | ** Runtime system |
| 3014 | *** Fixed a bug introduced by the signal code (presumably on 1999-08-09) |
| 3015 | that caused a gc to *not* be performed when doing a save world. This caused |
| 3016 | the heaps created by save world to be the same size as the heap -- not the |
| 3017 | live data. This was quite bad. |
| 3018 | *** Cleaned up the `Makefile`. Add make depend. |
| 3019 | *** Added max gc pause to `gc-summary` info. |
| 3020 | *** Move heap translation variables that had been file statics into the |
| 3021 | `GC_state`. |
| 3022 | ** Made `structure Position` available at toplevel. |
| 3023 | ** Basis Library |
| 3024 | *** Added `MLton.loadWorld` |
| 3025 | ** Added `Primitive.usesCallcc` |
| 3026 | ** Added `Primitive.safe` |
| 3027 | ** Removed special size functions from `cps/save-world` -- they are no longer |
| 3028 | necessary since size doesn't do a gc. |
| 3029 | ** Fixed another (sigh) bug in `cps/simplify-types.fun` that could cause it to |
| 3030 | not terminate. |
| 3031 | |
| 3032 | * 1999-11-16 |
| 3033 | ** Cleaned up `backend/machine.fun` a bit so that it spits out macros for |
| 3034 | allocation of objects and bumping of frontier. Added macros `MLTON_object` |
| 3035 | and `MLTON_incFrontier` to `include/mlton-lib.h`. |
| 3036 | ** Fixed a bug in `backend/limit-check.fun` that caused loops to not be |
| 3037 | detected if they were only reached by a case branch. This could cause there |
| 3038 | to be loop that allocates with no limit check. Needless to say, this could |
| 3039 | cause a segfault if the loop ran for long enough. |
| 3040 | |
| 3041 | * 1999-10-18 |
| 3042 | ** Added basis library function `Array2.copy`. |
| 3043 | |
| 3044 | * 1999-08-15 |
| 3045 | ** Turned off globalization of ref cells (`closure-convert/globalize.fun`) |
| 3046 | because it interacts badly with serialization. |
| 3047 | |
| 3048 | * 1999-08-13 |
| 3049 | ** Fixed bug in `mlton-lib.h` in `MLTON_allocArrayNoPointers` that was |
| 3050 | triggered when `bytesPerElt == 0`. The problem was that it wasn't reserving |
| 3051 | space for the forwarding pointer. This could cause a segfault. |
| 3052 | |
| 3053 | * 1999-08-08 and 1999-08-09 |
| 3054 | ** Added support for signal handling. |
| 3055 | |
| 3056 | * 1999-08-07 |
| 3057 | ** Fixed bugs in `Array.tabulate` (and other `tabulate` variants) caused if |
| 3058 | the function argument used `callcc`. |
| 3059 | |
| 3060 | * 1999-08-01 |
| 3061 | ** Added serialization, which was mostly code in `src/runtime/gc.c`. + |
| 3062 | `GC_serialize` converts an object to a `Word8Vector.vector`. + |
| 3063 | `GC_deserialize` undoes the conversion. + (de)Serialization should work for |
| 3064 | all objects except for functions, because I haven't yet added the support in |
| 3065 | the flow analysis. |
| 3066 | |
| 3067 | * 1999-07-31 |
| 3068 | ** Cleaned up the GC. Changed headers, by stealing a bit from the number of |
| 3069 | non pointers and making it a mark bit (used in `GC_size`). |
| 3070 | ** Rewrote `GC_size` so that it runs in time proportional to the number of |
| 3071 | pointers in the object. It does a depth-first-search now, using toSpace to |
| 3072 | hold the stack. |
| 3073 | |
| 3074 | * 1999-07-30 |
| 3075 | ** Fixed bug in `SUBSTRING`. `getc` had the wrong type. This bug wasn't |
| 3076 | noticed because MLton doesn't do enough type checking. |
| 3077 | ** Fixed bug (segfault) caused when a GC immediately followed a throw. |
| 3078 | |
| 3079 | * 1999-07-29 |
| 3080 | ** Fixed bug in `Date.fmt` (`basis-library/system/date.sml`). It was not |
| 3081 | setting `Tm.buf`, and hence the time was always 0 unless there had been a |
| 3082 | previous call to `setTmBuf`. |
| 3083 | |
| 3084 | * 1999-07-28 |
| 3085 | ** Fixed bugs in `Posix.IO.FLock.{getlk,setlk,setlkw}`, which would cause |
| 3086 | compilation to fail because `FLock.toInt` was defined as the C `castInt`, |
| 3087 | which no longer exists. Instead, expand `FLock.toInt` to |
| 3088 | `MLTON_pointerToInt`, which was added to `include/mlton-lib.h`. |
| 3089 | ** Changed `Posix.Primitive.Flock` to `Posix.Primitive.FLock`. |
| 3090 | ** Added `MLTON_chown`, `MLTON_ftruncate` to `include/mlton-posix.h`. They |
| 3091 | were missing. This would cause compilation of any program using |
| 3092 | `Posix.FileSys.{chown,ftruncate}` to fail. Also made it so all of the |
| 3093 | primitives in `basis-library/posix/primitive.sml` use `MLTON_` versions of |
| 3094 | functions, even if a wrapper is unnecessary. |
| 3095 | |
| 3096 | * 1999-07-25 |
| 3097 | ** Added some other missing signature definitions to toplevel. |
| 3098 | |
| 3099 | * 1999-07-24 |
| 3100 | ** Added missing `OS_*` signature definitions to |
| 3101 | `basis-library/top-level/top-level.sml`. |
| 3102 | |
| 3103 | * 1999-07-19 |
| 3104 | ** Fixed bug in `basis-library/arrays-and-vectors/mono-array.sml`. Used `:>` |
| 3105 | instead of `:` so that the monomorphic array types are abstract. |
| 3106 | |
| 3107 | |
| 3108 | == Version 19990712 |
| 3109 | |
| 3110 | Here are the changes from the 1999-03-19 version to the 1999-07-12 version. |
| 3111 | |
| 3112 | === Details |
| 3113 | |
| 3114 | * 1999-07-12 |
| 3115 | ** Changed `src/backend/machine.fun` so that the 'pointer locals' array is |
| 3116 | only as large as neccessary in order to copy all pointer-valued locals, not as |
| 3117 | large as the number of pointer-valued locals. |
| 3118 | |
| 3119 | * 1999-07-11 |
| 3120 | ** Rewrote `src/backend/allocate-registers.fun` so that it does a better job |
| 3121 | of sharing "registers" (i.e. C local variables) and stack slots. This should |
| 3122 | cut down on the amount of copying that has to happen before and after a gc. |
| 3123 | It should also cut down on the size of stack slots. |
| 3124 | |
| 3125 | * 1999-07-10 |
| 3126 | ** Fixed a bug in `src/backend/parallel-move.fun` that should have been |
| 3127 | triggered on most any parallel move. I guess parallel moves almost never |
| 3128 | happened due to the old register allocation strategy -- but, with the new one |
| 3129 | (see note for 1999-07-12) parallel moves will be frequent. |
| 3130 | |
| 3131 | * 1999-06-27 |
| 3132 | ** Fixed `src/main.sml` so that when compiling `-p`, the `.c` file is compiled |
| 3133 | `-g` and the `.o` is linked `-p`. |
| 3134 | ** In `bakend/machine.fun`, added profiling comments before chunkswitches and |
| 3135 | put in an optimization to avoid printing repeated profiling comments. Also, |
| 3136 | profiling comments are only output when compiling `-p`. |
| 3137 | |
| 3138 | * 1999-06-17 |
| 3139 | ** Changed `-i` to `-inline`, `-f` to `-flatten`, `-np` to `-no-polyvariance`, |
| 3140 | `-u` to `-unsafe`. |
| 3141 | ** Added `-i`, `-I`, `-l`, `-L` flags for includes and libraries. |
| 3142 | ** Updated documentation for these options and for ffi. |
| 3143 | |
| 3144 | * 1999-06-16 |
| 3145 | ** Hardwired version number in `src/control/control.sml`. As it stood, the |
| 3146 | version number was computed when MLton was built after someone downloaded it, |
| 3147 | which was clearly wrong. |
| 3148 | |
| 3149 | * 1999-06-16 |
| 3150 | ** Fixed undefined variable `time` in `GC_done` in `src/runtime/gc.c`. |
| 3151 | |
| 3152 | * 19990-06-08 |
| 3153 | ** in `include/mlton-lib.h`: |
| 3154 | *** removed `#include <huge_val.h>` |
| 3155 | *** added `#include <math.h>` |
| 3156 | *** and deleted all of the function signatures I had copied from `math.h` |
| 3157 | ** Changed `Real.{minNormalPos, minPos, maxFinite}` so that they are computed |
| 3158 | in `real.sml` instead of appearing as constants in the C. |
| 3159 | |
| 3160 | * 1999-06-07 |
| 3161 | `IntInf.pow` added to basis library. |
| 3162 | |
| 3163 | * 1999-06-04 |
| 3164 | ** `bin/mlton` changed to use `.arch-n-opsys` if it exists. |
| 3165 | |
| 3166 | * 1999-06-03 |
| 3167 | ** `src/Makefile` changed to use `sml-cm` instead of `sml` |
| 3168 | |
| 3169 | * 1999-05-10 |
| 3170 | ** Patch to `src/atoms/small-int-inf.fun` to work around a bug in the SML/NJ |
| 3171 | implementation of bignums. This bug was causing some hex bignum constants to |
| 3172 | be lexed incorrectly. |
| 3173 | |
| 3174 | * 1999-04-15 |
| 3175 | ** Comments emitted in C code for profiling. The comments identify the CPS |
| 3176 | function responsible for each C statement. |
| 3177 | |
| 3178 | * 1999-04-15 |
| 3179 | ** `callcc` and `throw` added. |
| 3180 | |
| 3181 | * 1999-04-15 |
| 3182 | ** Bug in `src/cps/simplify-types` fixed. The bug caused nontermination |
| 3183 | whenever there was a circular datatype with a vector on the rhs. |
| 3184 | E.g. `datatype t = T of t vector` |
| 3185 | |
| 3186 | |
| 3187 | == Version 19990319 |
| 3188 | |
| 3189 | Here are the changes from the 1998-08-26 version to the 1999-03-19 version. |
| 3190 | |
| 3191 | === Summary |
| 3192 | |
| 3193 | * Compile time and code size have decreased. |
| 3194 | * Runtime performance of executables has improved. |
| 3195 | * Large programs can now be compiled. |
| 3196 | * MLton is self hosting. |
| 3197 | * The basis library is mostly complete and many bugs have been fixed. |
| 3198 | * The monomorphiser (`-m`) is no longer available. |
| 3199 | * The heap and stack are automatically resized. |
| 3200 | * There are now facilities for heap checkpointing (`MLton.saveWorld`) and object |
| 3201 | size computation (`MLton.size`). |
| 3202 | * MLton uses the GNU multiprecision (GnuMP) library to provide a fast |
| 3203 | implementation of `IntInf`. |