--- sml/trunk/HISTORY 2002/03/23 21:14:40 1174 +++ sml/trunk/HISTORY 2003/08/11 20:46:00 1342 @@ -13,6 +13,692 @@ Description: ---------------------------------------------------------------------- +Name: Matthias Blume (blume@tti-c.org) +Date: 2003/08/11 15:45:00 CDT +Tag: blume-20030811-windows +Description: + +Version number bumped to 110.42.9. NEW BOOTFILES!!! + + http://smlnj.cs.uchicago.edu/dist/working/110.42.9/ + +This patch restores SML/NJ's ability to run under win32. There are a +number of changes, including fixes for several bugs that had gone +unnoticed until now: + + - uname "CYGWIN_NT*" is recognized as win32 (This is relevant only when + trying to run the win32 version from within cygwin.) + + - There are a number of simple .bat scripts that substitute for their + corresponding Unix shell-scripts. (See below.) + + - The internals of ml-build have been modified slightly. The main + difference is that instead of calling ".link-sml" (or link-sml.bat) + using OS.Process.system, the ML process delegates this task back + to the script. Otherwise problems arise in mixed environments such + as Cygwin where scripts look and work like Unix scripts, but + where OS.Process.system cannot run them. + + - In CM, the srcpath pickler used native pathname syntax -- which + is incorrect in the case of cross-compilation. The new pickle format + is independent of platform-specific naming conventions. + + - Path configuration files (such as lib/pathconfig) can now choose + between native and standard syntax. Placing a line of the form + + standard! + + into the file causes all subsequent paths to be interpreted using + CM standard pathname syntax (= Unix conventions); a line + + native! + + switches back to native style. This was needed so that + path config files can be written portably, see src/system/pathconfig. + + - Runtime system: + + - win32-filesys.c: get_file_time and set_file_time now + access modification time, not creation time. + + - I/O code made aware of new array representation. + + - Bug fixes in X86.prim.masm. + + - src/system/makeml made aware of win32. (For use under cygwin + and other Unix-environments for windows.) + + - In Basis, fixed off-by-one error in win32-io.sml (function vecF) + which caused BinIO.inputAll to fail consistently. + +.bat scripts: + + Windows .bat scripts assume that SMLNJ_HOME is defined. + + - sml.bat, ml-yacc.bat, ml-lex.bat: Driver scripts for standalone + applications (sml, ml-yacc, ml-lex). + - ml-build.bat: analogous to ml-build. + - config\install.bat: Analogous to config/install.sh. This requires + that SMLNJ_HOME is set and that Microsoft Visual C is ready to use. + (nmake etc. must be on the path, and vcvars32 must have been run.) + Moreover, sources for ml-lex and ml-yacc need to exist under src, + and the bootfile hierarchy must have been unpacked under + sml.boot.x86-win32. + The script is very primitive and does a poor job at error checking. + It only installs the base system, ml-lex, and ml-yacc. No other + libraries are being installed (i.e., you get only those that + are part of the compiler.) + - link-sml.bat: analogous to .link-sml, but not currently used + +Unrelated bug fixes: + + - ml-nlffigen now exports structures ST_* corresponding to incomplete + types. + - Added getDevice to PP/src/pp-debug-fn.sml. (Would not compile + otherwise.) + +---------------------------------------------------------------------- +Name: Dave MacQueen (macqueen@cs.uchicago.edu) +Date: 2003/06/17 +Tag: macqueen-20030617-bug895 +Description: + +Modified compiler/Elaborator/print/pptype.sml to fix bug 895. +Tag will be used for new development branch (mcz-branch) for +use by MacQueen, (Lucasz) Zairek, and (George) Cao at uchicago. + +---------------------------------------------------------------------- +Name: Matthias Blume (blume@tti-c.org) +Date: 2003/05/27 16:55:00 CDT +Tag: blume-20030527-polyeq +Description: + +Tried to eliminated most cases of polymorphic equality. + +---------------------------------------------------------------------- +Name: Matthias Blume (blume@tti-c.org) +Date: 2003/05/21 17:45:00 CDT +Tag: blume-20030517-complete +Description: + +Two changes: + + 1. Added a flag for controlling whether non-exhaustive bindings will + be treated as errors (default is false). + 2. Cleaned up the *entire* source tree so that CMB.make goes through + without a single non-exhaustive match- or bind warning. + +---------------------------------------------------------------------- +Name: Matthias Blume (blume@tti-c.org) +Date: 2003/05/17 10:20:00 CDT +Tag: blume-20030517-absyn +Description: + +1. Added cases for IF, WHILE, ANDALSO, and ORELSE to Absyn. + + This mainly affects the quality of error messages. However, some + of the code is now more straightforward than before. (Treatment of + the above four constructs in translate.sml is much simpler than + the "macro-expansion" that was going on before. Plus, the mach- + compiler no longer gets invoked just to be able to compile an + if-expression.) + +2. The ErrorMsg.Error exception is now caught and absorbed by the + interactive loop. + +---------------------------------------------------------------------- +Name: Allen Leung +Date: 2003/05/16 13:05:00 CDT +Tag: leunga-20030516-cygwin-runtime +Description: + + Ported the runtime system to cygwin, which uses the unix +x86-unix bin files. Missing/buggy features: + + o getnetbyname, getnetbyaddr: these functions seem to be missing in + the Cygwin library. + o Ctrl-C handling may be flaky. + o Windows system calls and Windows I/O are not supported. + + A new set of binfiles is located at: + + http://www.dorsai.org/~leunga/boot.x86-unix.tgz + + This is only needed for bootstrapping the cygwin version of smlnj. + Other x86 versions can use the existing binfiles. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2003/04/08 15:42:00 CDT +Tag: blume-20030408-listpair +Description: + +1. Added a target 'mlrisc' to installer. + +2. Added missing elements to structure ListPair. + +---------------------------------------------------------------------- +Name: Allen Leung +Date: 2003/01/07 10:40:00 EST +Tag: leunga-20030107-int-rem +Description: + +Fixed a bug in Int.rem(x,y) where y is a power of 2 on x86. +The arguments to the SUBL instruction were swapped. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/12/12 16:25:00 EST +Tag: blume-20021212-risc-ra +Description: + +Fixed a serious bug in the rewrite code for FP spilling/reloading that +sent the RA into an infinite loop when floating point registers get +spilled. (Because of this bug, e.g., nucleic stopped compiling between +110.37 and 110.38.) +There was another set of potential problems related to the handling of +MLRISC annotations (but those did not yet cause real problems, apparently). + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/12/06 22:40:00 EST +Tag: blume-20021206-cm-fileid +Description: + +Added a call of SrcPath.sync at the beginning of Parse.parse (in CM). +This fixes the problem of CM getting confused by files that suddenly +change their identity (e.g., by getting unlinked and recreated by some +text editor such as vi). There might be a better/cheaper/cleaner way +of doing this, but for now this will have to do. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/10/28 09:50:00 EST +Tag: blume-20021028-typecheck +Description: + +Exported structure Typecheck from $smlnj/viscomp/core.cm. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/10/17 09:10:00 EDT +Tag: Release_110_42 +Description: + +In good old tradition, there has been a slight hiccup so that we have +to patch 110.42 after the fact. The old release tag has been replaced +(see below). + +The change solves a problem with two competing approaches the +configuration problem regarding MacOS 10.1 vs. MacOS 10.2 which got in +each other's way. + +This change only affects the runtime system code and the installer script. +(No new bootfiles.) + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/10/16 12:00:00 EDT +Tag: Release_110_42_removed +Description: + +New working release. New bootfiles. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/10/10 13:10:00 EDT +Tag: blume-20021010-ppc-divs +Description: + +The mltree operator DIVS must be implemented with an overflow check on +the PPC because the hardware indicates divide-by-zero using "overflow" as +well. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/07/23 11:45:00 +Tag: blume-20020723-smlnj-home +Description: + +Sml now senses the SMLNJ_HOME environment variable. If this is set, +then the bin dir is assumed to be in $SMLNJ_HOME/bin and (unless +CM_PATHCONFIG is also set), the path configuration file is assumed +to be in $SMLNJ_HOME/lib/pathconfig. This way one can easily move +the entire tree to some other place and everything will "just work". + +(Companion commands such as ml-build and ml-makedepend also sense this +variable.) + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/07/12 21:19:00 EDT +Tag: blume-20020712-liveness +Description: + +Exported two useful "step" functions from liveness module (MLRISC). + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/07/05 16:00 EDT +Tag: Release_110_41 +Description: + +New working release. New bootfiles. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/07/05 10:25:00 EDT +Tag: blume-20020705-btimp +Description: + +Exported structure BTImp from $smlnj/viscomp/debugprof.cm so that +other clients can set up backtracing support. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/06/25 17:23:00 EDT +Tag: blume-20020625-fpmax +Description: + +Fixed a bug in translation of INLMAX (and INLMIN) for the floating-point +case. (The sense of the isNaN test was reversed -- which made min and +max always return their first argument.) + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/06/11 +Tag: blume-20020611-unixpath +Description: + +Back-ported OS.Path.{from,to}UnixPath from idlbasis-devel branch. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/06/10 16:35:00 EDT +Tag: blume-20020610-ieeereal +Description: + +I back-ported my implementation of IEEEReal.fromString from the +idlbasis-devel branch so that we can test it. + +Another small change is that ppDec tries to give more information +than just "" in the case of functors. However, this code is +broken in some mysterious way if the functor's body's signature +has not been declared by ascription but gets inferred from the +implementation. This needs fixing... + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/05/31 +Tag: blume-20020531-btrace-mode +Description: + +Resurrected SMLofNJ.Internals.BTrace.mode. (It accidentally fell by +the wayside when I switched over to using Controls everywhere.) + +---------------------------------------------------------------------- +Name: Lal George +Date: 2002/05/23 12:21:40 EDT +Tag: george-20020523-visual-labels +Description: + +Labels are now displayed in the graphical output to make +the fall-through and target blocks obvious. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/05/22 11:03:00 EDT +Tag: blume-20020522-shrink +Description: + +John tweaked yesterday's fix for 1131 to handle an out-of-memory +situation that comes up when allocating huge arrays. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/05/21 16:00:00 EDT +Tag: Release_110_40 +Description: + +New working release (110.40). New bootfiles. + +[Also: John Reppy fixed GC bug 1131.] + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/05/21 12:35:00 EDT +Tag: blume-20020521-cmdoc +Description: + +CM documentation update. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/05/21 10:55:00 EDT +Tag: blume-20020521-misc +Description: + +- John tweaked runtime to be silent on heap export (except when + GC messages are on). +- I added a few more things (cross-compiling versions of CMB) to + config/preloads (as suggestions). + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/05/20 22:25:00 EDT +Tag: blume-20020520-controls +Description: + +- Added ControlUtil structure to control-lib.cm. +- Use it throughout. +- Used Controls facility to define MLRISC controls (as opposed to + registering MLRISC control ref cells with Controls after the fact) +- Fixed messed-up controls priorities. + +* Removed again all the stuff from config/preloads that one wouldn't + be able to preload at the time the initial heap image is built. + (Many libraries, e.g., CML, do not exist yet at this time. The + only libraries that can be preloaded via config/preloads are those + that come bundled with the bootfiles.) + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/05/20 10:59:00 EDT +Tag: blume-20020520-preloads +Description: + +Added a lot of commented-out suggestions for things to be included +in config/preloads. + +---------------------------------------------------------------------- +Name: Allen Leung +Date: 2002/05/18 14:20:00 EDT +Tag: leunga-20020518-mdl +Description: + +o Made the mdl tool stuff compile and run again. +o I've disabled all the stuff that depends on RTL specifications; they + are all badly broken anyway. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/05/17 16:49:00 EDT +Tag: blume-20020517-controls +Description: + +0. John Reppy made several modifications to the SML/NJ library. + In particular, there is a shiny new controls-lib.cm. + +1. Pushed new controls interface through compiler so that everything + compiles again. + +2. Added FormatComb and FORMAT_COMB to the CML version of the + SML/NJ library (so that CML compiles again). + +3. Modified init scripts because XXX_DEFAULT environment variables + are no longer with us. (Boot-time initialization is now done + using the same environment variables that are also used for + startup-time initialization of controls.) + +---------------------------------------------------------------------- +Name: Lal George +Date: 2002/05/15 09:20:10 EDT +Tag: george-20020515-pseudo-op-decls +Description: + + All pseudo-ops emitted before the first segment declaration +such as TEXT, DATA, and BSS directives are assumed to be global +declarations and are emitted first in the assembly file. This is +useful in a number of situations where one has pseudo-ops that are not +specific to any segment, and also works around the constraint that one +cannot have client pseudo-ops in the TEXT segment. + + Because no segment is associated with these declarations it is +an error to allocate any space or objects before the first segment +directive and an exception will be raised. However, we cannot make +this check for client pseudo-ops. + + These top level declarations are a field in the CFG graph_info. +In theory you can continue to add to this field after the CFG has been +built -- provided you know what you are doing;-) + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/05/13 16:40:00 EDT +Tag: blume-20020513-pp-etc +Description: + +A few minor bugfixes: + + - Stopgap measure for bug recently reported by Elsa Gunter (ppDec). + (Bogus printouts for redefined bindings still occur. Compiler + bug should no longer occur now. We need to redo the prettyprinter + from scratch.) + + - CM pathname printer now also adds escape sequences for ( and ) + + - commend and docu fixes for ml-nlffi + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/05/10 16:40:00 EDT +Tag: blume-20020510-erg-textio +Description: + +Applied the following bugfix provided by Emden Gansner: + + Output is corrupted when outputSubstr is used rather than output. + + The problem occurs when a substring + + ss = (s, dataStart, dataLen) + + where dataStart > 0, fills a stream buffer with avail bytes left. + avail bytes of s, starting at index dataStart, are copied into the + buffer, the buffer is flushed, and then the remaining dataLen-avail + bytes of ss are copied into the beginning of the buffer. Instead of + starting this copy at index dataStart+avail in s, the current code + starts the copy at index avail. + + Fix: + In text-io-fn.sml, change line 695 from + val needsFlush = copyVec(v, avail, dataLen-avail, buf, 0) + to + val needsFlush = copyVec(v, dataStart+avail, dataLen-avail, buf, 0) + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/04/12 13:55:00 EDT +Tag: blume-20020412-assyntax +Description: + +1. Grabbed newer assyntax.h from the XFree86 project. +2. Fiddled with how to compile X86.prim.asm without warnings. +3. (Very) Minor cleanup in CM. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/04/01 (no joke!) 17:07:00 EST +Tag: blume-20020401-x86div +Description: + +Added full support for div/mod/rem/quot on the x86, using the machine +instruction's two results (without clumsily recomputing the remainder) +directly where appropriate. + +Some more extensive power-of-two support was added to the x86 instruction +selector (avoiding expensive divs, mods, and muls where they can be +replaced with cheaper shifts and masks). However, this sort of thing +ought to be done earlier, e.g., within the CPS optimizer so that +all architectures benefit from it. + +The compiler compiles to a fixed point, but changes might be somewhat +fragile nevertheless. Please, report any strange things that you might +see wrt. div/mod/quot/rem... + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/03/29 17:22:00 +Tag: blume-20020329-div +Description: + +Fixed my broken div/mod logic. Unfortunately, this means that the +inline code for div/mod now has one more comparison than before. +Fast paths (quotient > 0 or remainder = 0) are not affected, though. +The problem was with quotient = 0, because that alone does not tell +us which way the rounding went. One then has to look at whether +remainder and divisor have the same sign... :( + +Anyway, I replaced the bootfiles with fresh ones... + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/03/29 14:10:00 EST +Tag: blume-20020329-inlprims +Description: + +NEW BOOTFILES!!! Version number bumped to 110.39.3. + +Primops have changed. This means that the bin/boot-file formats have +changed as well. + +To make sure that there is no confusion, I made a new version. + + +CHANGES: + +* removed REMT from mltree (remainder should never overflow). + +* added primops to deal with divisions of all flavors to the frontend + +* handled these primops all the way through so they map to their respective + MLRISC support + +* used these primops in the implementation of Int, Int32, Word, Word32 + +* removed INLDIV, INLMOD, and INLREM as they are no longer necessary + +* parameterized INLMIN, INLMAX, and INLABS by a numkind + +* translate.sml now deals with all flavors of INL{MIN,MAX,ABS}, including + floating point + +* used INL{MIN,MAX,ABS} in the implementation of Int, Int32, Word, Word32, + and Real (but Real.abs maps to a separate floating-point-only primop) + + +TODO items: + +* Hacked Alpha32 instruction selection, disabling the selection of REMx + instructions because the machine instruction encoder cannot handle + them. (Hppa, PPC, and Sparc instruction selection did not handle + REM in the first place, and REM is supported by the x86 machine coder.) + +* Handle DIV and MOD with DIV_TO_NEGINF directly in the x86 instruction + selection phase. (The two can be streamlined because the hardware + delivers both quotient and remainder at the same time anyway.) + +* Think about what to do with "valOf(Int32.minInt) div ~1" and friends. + (Currently the behavior is inconsistent both across architectures and + wrt. the draft Basis spec.) + +* Word8 should eventually be handled natively, too. + +* There seems to be one serious bug in mltree-gen.sml. It appears, though, + as if there currently is no execution path that could trigger it in + SML/NJ. (The assumptions underlying functions arith and promotable do not + hold for things like multiplication and division.) + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/03/27 16:27:00 EST +Tag: blume-20020327-mlrisc-divisions +Description: + +Added support for all four division operations (ML's div, mod, quot, +and rem) to MLRISC. In the course of doing so, I also rationalized +the naming (no more annoying switch-around of DIV and QUOT), by +parameterizing the operation by div_rounding_mode (which can be either +DIV_TO_ZERO or DIV_TO_NEGINF). + +The generic MLTreeGen functor takes care of compiling all four +operations down to only round-to-zero div. + +Missing pieces: + + * Doing something smarter than relying on MLTreeGen on architectures + like, e.g., the x86 where hardware division delivers both quotient and + remainder at the same time. With this, the implementation of the + round-to-neginf operations could be further streamlined. + + * Remove inlining support for div/mod/rem from the frontend and replace it + with primops that get carried through to the backend. Do this for all + int and word types. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/03/25 17:25:00 EST +Tag: blume-20020325-divmod +Description: + +I improved (hopefully without breaking them) the implementation of Int.div, +Int.mod, and Int.rem. For this, the code in translate.sml now takes +advantage of the following observations: + + Let q = x quot y r = x rem y + d = x div y m = x mod y + +where "quot" is the round-to-zero version of integer division that +hardware usually provides. Then we have: + + r = x - q * y where neither the * nor the - will overflow + d = if q >= 0 orelse x = q * y then q else q - 1 + where neither the * nor the - will overflow + m = if q >= 0 orelse r = 0 then r else r + y + where the + will not overflow + +This results in substantial simplification of the generated code. +The following table shows the number of CFG nodes and edges generated +for + fun f (x, y) = x OPER y + (* with OPER \in div, mod, quot, rem *) + + + OPER | nodes(old) | edges(old) | nodes(new) | edges(new) + -------------------------------------------------------- + div | 24 | 39 | 12 | 16 + mod | 41 | 71 | 12 | 16 + quot | 8 | 10 | 8 | 10 + rem | 10 | 14 | 8 | 10 + + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/03/25 22:06:00 EST +Tag: blume-20020325-cprotobug +Description: + +Fixed a bug in cproto (c prototype decoder). + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/03/25 16:00:00 EST +Tag: blume-20020325-raw-primops +Description: + +I did some cleanup to Allen's new primop code and +replaced yesterday's bootfiles with new ones. +(But they are stored in the same place.) + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/03/24 22:40:00 EST +Tag: blume-20020324-bootfiles +Description: + +Made the bootfiles that Allen asked for. + +---------------------------------------------------------------------- Name: Allen Leung Date: 2002/03/23 15:50:00 EST Tag: leunga-20020323-flint-cps-rcc-primops
Click to toggle
does not end with </html> tag
does not end with </body> tag
The output has ended thus: ------ Name: Allen Leung Date: 2002/03/23 15:50:00 EST Tag: leunga-20020323-flint-cps-rcc-primops