new RPMs

Stephen Weeks MLton@sourcelight.com
Tue, 24 Jul 2001 23:08:33 -0700


> What were the other bugs that were fixed?

Here's the latest CHANGES.

* 2000-7-21
  - Added common-supexpression elimination CPS optimization.

* 2000-7-20
  - Bug fix to x86 codegen.  The commuteBinALMD peephole optimization would
    rewrite  mov 2,Y; add Y,Y  as  mov Y,Y; add 2,Y.  Now the appropriate
    interference checks are made.
  - Added intraprocedural unused argument removal.
  - Added intraprocedural flattener.  This avoids some stupid tuple
    allocations in loops.  Decent speedup on a few benchmarks
    (count-graphs, psdes-random, wc-scanStream) and no noticeable
    slowdowns.
  - Added -keep dot flag.

* 2000-7-17
  - Modified grammar to properly handle val rec.  There were several problems.
    o MLton had accepted "val rec 'a ..." instead of "val 'a rec ..."
    o MLton had not accepted "val x = 13 and rec f = fn () => ()"
    o MLton had not accepted "val rec rec f = fn () => ()"
    o MLton had not accepted "val rec f = fn () => () and rec g = fn () => ()"

* 2000-7-16
  - Workaround for Linux kernel bug that can cause getrusage to return a wrong
    system time value (low by one second).  See fixedGetrusage in gc.c.
  - Bug fix to x86 codegen.  The register allocator could get confused when
    doing comparisons of floating point numbers and use the wrong operand. 
    The bug seems to have never been detected because it only happens when both
    of the operands are already on the floating point stack, which is rare,
    since one is almost always in memory since we don't carry floating point
    values in the stack across basic blocks.
  - Added production to the grammar on page 58 of the Definition that had been
    missing from MLton since day one.
		program ::= exp ; <program>
    Also updated docs to reflect change.
  - Modified grammar to accept the empty program.
  - Added -type-check expert flag to turn on type checking in ILs.

* 2000-7-15
  - Bug fix to the algebraic simplifier.  It had been rewriting
		Word32.andb (w, 0wxFF) to w
    instead of  Word32.andb (w, 0wxFFFFFFFF) to w.

* 2000-7-13
  - Improved CPS shrinker so that if-tests where the then and else branch jump
    to the same label is turned into a direct jump.
  - Improved CPS shrinker (Prim.apply) to handle constructors
	A = A --> true
 	A = B --> false
	A x = B y --> false
  - Rewrote a lot of loops in the basis library to use inequalities instead of
    equality for the loop termination test so that the (forthcoming) overflow
    detection elimination will work on the loop index variable.

* 2001-7-11
  - Fixed minor bugs in Array2.{array,tabulate}, Substring.{slice} that caused 
    the Overflow exception to be raised instead of Size or Subscript
  - Fixed bug in Pack32Big.update that caused the wrong location to be updated.
  - Fixed several bugs in Pack32{Big,Little}.{subArr,subVec,update} that caused
    Overflow to be raised instead of Subscript.  Also, improved the
    implementation so that bounds checking only occurs once per call (instead of
    four times, which was sometimes happening.
  - Fixed bugs in Time.{toMilliseconds,toMicroseconds} that could cause 
    a spurious Overflow exception.
  - Fixed bugs in Time.{fromMilliseconds,fromMicroseconds} that could cause
    a spurious Time exception.
  - Improved Pack32.sub* by reordering the orbs.
  - Improved {Int,IntInf}.mod to increase chances of constant folding.
  - Switched many uses of +, -, * in basis library to the non-overflow checked
    versions.  Modules changed were: Array, Array2, Byte, Char, Int, IntInf, 
    List, Pack32{Big,Little}, Util, String, StringCvt, Substring, TextIO, Time,
    Vector.
  - Added regression tests for Array2, Int (overflow checking), Pack32, 
    Substring, Time.
  - Changed CPS output so that it includes a dot graph for each CPS function.

* 2001-7-9
  - Change OS.Process.exit so that it raises an exception if the exit status
    is not in [0, 256).
  - Added MLton.Rlimit to provide access to getrlimit and setrlimit.