--- sml/trunk/HISTORY 2001/08/28 18:03:37 920 +++ sml/trunk/HISTORY 2002/01/18 21:45:37 1030 @@ -8,12 +8,525 @@ The form of an entry should be: Name: -Date: +Date: yyyy/mm/dd Tag: Description: ---------------------------------------------------------------------- Name: Matthias Blume +Date: 2002/01/18 +Tag: blume-20020118-ready-for-new-release +Description: + +Made config/srcarchiveurl point to a new place. (Will provide boot +files shortly.) + +Maybe we christen this to be 110.38? + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/01/18 +Tag: blume-20020118-more-ffifiddle +Description: + +Today's FFI fiddling: + + - Provided a structure CGetSet with "convenient" versions of C.Get.* and + C.Set.* that use concrete (MLRep.*) arguments and results instead + of abstract ones. + + - Provided word-style bit operations etc. for "int" representation + types in MLRep.SBitops where ranges over Char, Int, Short, + and Long. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/01/18 +Tag: blume-20020118-use-x86-fp +Description: + +Now that x86-fast-fp seems to be working, I turned it back on again +by default. (Seems to work fine now, even with the FFI.) + +Other than that, I added some documentation about the FFI to +src/ml-nlffigen/README and updated the FFI test examples in +src/ml-nlffi-lib/Tests/*. + +---------------------------------------------------------------------- +Name: Allen Leung +Date: 2002/01/17 +Tag: leunga-20020117-x86-fast-fp-call +Description: + + 1. Fixed a problem with handling return fp values when x86's fast fp + mode is turned on. + + 2. Minor pretty printing fix for cellset. Print %st(0) as %st(0) instead + of %f32. + + 3. Added a constructor INT32lit to the ast of MLRISC tools. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/01/16 +Tag: blume-20020116-ffifiddle +Description: + +More fiddling with the FFI interface: + + - Make constness 'c instead of rw wherever possible. This eliminates + the need for certain explicit coercions. (However, due to ML's + value polymorphism, there will still be many cases where explicit + coercions are necessary. Phantom types are not the whole answer + to modeling a subtyping relationship in ML.) + + - ro/rw coersions for pointers added. (Avoids the detour through */&.) + + - "printf" test example added to src/ml-nlffi-lib/Tests. (Demonstrates + clumsy workaround for varargs problem.) + +---------------------------------------------------------------------- +Name: Lal George +Date: 2002/01/15 +Tag: +Description: + +1. Since COPY instructions are no longer native to the architecture, + a generic functor can be used to implement the expandCopies function. + +2. Allowed EXPORT and IMPORT pseudo-op declarations to appear inside a + TEXT segment. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/01/15 +Tag: blume-20020115-ffiupdates +Description: + +1. Fix for bug resulting in single-precision float values being returned + incorrectly from FFI calls. + +2. Small modifications to C FFI API: + + - memory-allocation routines return straight objects (no options) + and raise an exception in out-of-memory situations + - unsafe extensions to cast between function pointers and pointers + from/to ints + - added structure C_Debug as an alternative to structure C where + pointer-dereferencing (|*| and |*!) always check for null-pointers + - added open_lib' to DynLinkage; open_lib' works like open_lib + but also takes a (possibly empty) list of existing library handles + that the current library depends on + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2002/01/10 +Tag: blume-20020110-newffigen +Description: + +1. Updates to portable graph code. + +2. Major update to ml-nlffigen and ml-nlffi-lib. Things are much + more scalable now so that even huge interfaces such as the one + for GTK compile in finite time and space. :-) + See src/ml-nlffigen/README for details on what's new. + +---------------------------------------------------------------------- +Name: Lal George +Date: 2001/01/09 14:31:35 EST 2002 +Tag: george-20011206-rm-native-copy +Description: + + Removed the native COPY and FCOPY instructions + from all the architectures and replaced it with the + explicit COPY instruction from the previous commit. + + It is now possible to simplify many of the optimizations + modules that manipulate copies. This has not been + done in this change. + +---------------------------------------------------------------------- +Name: Lal George +Date: 2001/12/06 16:50:13 EST 2001 +Tag: george-20011206-mlrisc-instruction +Description: + +Changed the representation of instructions from being fully abstract +to being partially concrete. That is to say: + + from + type instruction + + to + type instr (* machine instruction *) + + datatype instruction = + LIVE of {regs: C.cellset, spilled: C.cellset} + | KILL of {regs: C.cellset, spilled: C.cellset} + | COPYXXX of {k: CB.cellkind, dst: CB.cell list, src: CB.cell list} + | ANNOTATION of {i: instruction, a: Annotations.annotation} + | INSTR of instr + +This makes the handling of certain special instructions that appear on +all architectures easier and uniform. + +LIVE and KILL say that a list of registers are live or killed at the +program point where they appear. No spill code is generated when an +element of the 'regs' field is spilled, but the register is moved to +the 'spilled' (which is present, more for debugging than anything else). + +LIVE replaces the (now deprecated) DEFFREG instruction on the alpha. +We used to generate: + + DEFFREG f1 + f1 := f2 + f3 + trapb + +but now generate: + + f1 := f2 + f3 + trapb + LIVE {regs=[f1,f2,f3], spilled=[]} + +Furthermore, the DEFFREG (hack) required that all floating point instruction +use all registers mentioned in the instruction. Therefore f1 := f2 + f3, +defines f1 and uses [f1,f2,f3]! This hack is no longer required resulting +in a cleaner alpha implementation. (Hopefully, intel will not get rid of +this architecture). + +COPYXXX is intended to replace the parallel COPY and FCOPY available on +all the architectures. This will result in further simplification of the +register allocator that must be aware of them for coalescing purposes, and +will also simplify certain aspects of the machine description that provides +callbacks related to parallel copies. + +ANNOTATION should be obvious, and now INSTR represents the honest to God +machine instruction set! + +The /instructions/Instr.sml files define certain utility +functions for making porting easier -- essentially converting upper case +to lower case. All machine instructions (of type instr) are in upper case, +and the lower case form generates an MLRISC instruction. For example on +the alpha we have: + + datatype instr = + LDA of {r:cell, b:cell, d:operand} + | ... + + val lda : {r:cell, b:cell, d:operand} -> instruction + ... + +where lda is just (INSTR o LDA), etc. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2001/11/22 21:40:00 EST +Tag: Release_110_37 +Description: + +Release 110.37. This time for real. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2001/11/21 16:35:00 EST +Tag: blume-20011121-foot-in-mouth +Description: + +Removed the "Release_110_37" tag because of a serious bug. +This will be re-tagged once the bug is fixed. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2001/11/21 16:14:00 EST +Tag: blume-20011121-forgottenfile +Description: + +Forgot to add a file. (Just a .tex-file -- part of +the CM manual source.) + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2001/11/21 16:10:00 EST +Tag: blume-20011121-invalid_110_37 +Description: + +Note: I removed the original tag "Release_110_37" from this commit + because we found a serious bug in all non-x86 backends. + - Matthias + +1. Modifications to the SML/NJ code generator and to the runtime system + so that code object name strings are directly inserted into code + objects at code generation time. The only business the runtime system + has with this is now to read the name strings on occasions. + (The encoding of the name string has also changed somewhat.) + +2. CM now implements a simple "set calculus" for specifying export lists. + In particular, it is now possible to refer to the export lists of + other libraries/groups/sources and form unions as well as differences. + See the latest CM manual for details. + +3. An separate notion of "proxy" libraries has again be eliminated from + CM's model. (Proxy libraries are now simply a special case of using + the export list calculus.) + +4. Some of the existing libraries now take advantage of the new set + calculus. + (Notice that not all libraries have been converted because some + of the existing .cm-files are supposed to be backward compatible + with 110.0.x.) + +5. Some cleanup in stand-alone programs. (Don't use "exnMessage" -- use + "General.exnMessage"! The former relies on a certain hook to be + initialized, and that often does not happen in the stand-alone case.) + +---------------------------------------------------------------------- +Name: Lal George +Date: 2001/11/21 13:56:18 EST +Tag: george-2001121-pseudo-ops +Description: + + Implemented a complete redesign of MLRISC pseudo-ops. Now there + ought to never be any question of incompatabilities with + pseudo-op syntax expected by host assemblers. + + For now, only modules supporting GAS syntax are implemented + but more should follow, such as MASM, and vendor assembler + syntax, e.g. IBM as, Sun as, etc. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2001/11/14 11:52:00 EST +Tag: blume-20011114-srcname +Description: + +1. Routed the name of the current source file to mlriscgen where it + should be directly emitted into the code object. (This last part + is yet to be done.) + +2. Some cleanup of the pgraph code to make it match the proposal that + I put out the other day. (The proposal notwithstanding, things are + still in flux here.) + +---------------------------------------------------------------------- +Name: Lal George +Date: 2001/11/14 09:44:04 EST +Tag: +Description: + + Fix for a backpatching bug reported by Allen. + + Because the boundary between short and long span-dependent + instructions is +/- 128, there are an astounding number of + span-dependent instructions whose size is over estimated. + + Allen came up with the idea of letting the size of span + dependent instructions be non-monotonic, for a maxIter + number of times, after which the size must be monotonically + increasing. + + This table shows the number of span-dependent instructions + whose size was over-estimated as a function of maxIter, for the + file Parse/parse/ml.grm.sml: + + maxIter # of instructions: + 10 687 + 20 438 + 30 198 + 40 0 + + In compiling the compiler, there is no significant difference in + compilation speed between maxIter=10 and maxIter=40. Actually, + my measurements showed that maxIter=40 was a tad faster than + maxIter=10! Also 96% of the files in the compiler reach a fix + point within 13 iterations, so fixing maxIter at 40, while high, + is okay. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2001/10/31 15:25:00 EST +Tag: blume-20011031-pgraph +Description: + +CKIT: +* Changed the "Function" constructor of type Ast.ctype to carry optional + argument identifiers. +* Changed the return type of TypeUtil.getFunction accordingly. +* Type equality ignores the argument names. +* TypeUtil.composite tries to preserve argument names but gives up quickly + if there is a mismatch. + +installation script: +* attempts to use "curl" if available (unless "wget" is available as well) + +CM: +* has an experimental implementation of "portable graphs" which I will + soon propose as an implementation-independent library format +* there are also new libraries $/pgraph.cm and $/pgraph-util.cm + +NLFFI-LIB: +* some cleanup (all cosmetic) + +NLFFIGEN: +* temporarily disabled the mechanism that suppresses ML output for + C definitions whose identifiers start with an underscore character +* generate val bindings for enum constants +* user can request that only one style (light or heavy) is being used; + default is to use both (command-line arguments: -heavy and -light) +* fixed bug in handling of function types involving incomplete pointers +* generate ML entry points that take record arguments (i.e., using + named arguments) for C functions that have a prototype with named + arguments + (see changes to CKIT) + +---------------------------------------------------------------------- +Name: Allen Leung +Date: 2001/10/27 20:34:00 EDT +Tag: leunga-20011027-x86-fast-fp-call +Description: + + Fixed the bug described in blume-20010920-slowfp. + + The fix involves + 1. generating FCOPYs in FSTP in ia32-svid + 2. marking a CALL with the appropriate annotation + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2001/10/16 11:32:00 EDT +Tag: blume-20011016-netbsd +Description: + +Underscore patch from Chris Richards (fixing problem with compiling +runtime system under recent NetBSD). + +---------------------------------------------------------------------- +Name: Allen Leung +Date: 2001/10/12 17:18:32 EDT 2001 +Tag: leung-20011012-x86-printflowgraph +Description: + +X86RA now uses a valid (instead of dummy) PrintFlowgraph module. + +---------------------------------------------------------------------- +Name: Lal George +Date: 2001/10/11 23:51:34 EDT +Tag: george-20011011-too-many-instrs +Description: + +The representation of a program point never expected to see more +than 65536 instructions in a basic block! + +---------------------------------------------------------------------- +Name: Lal George +Date: 2001/10/09 09:41:37 EDT +Tag: george-20011008-mlrisc-labels +Description: + +Changed the machine description files to support printing of +local and global labels in assembly code, based on host assembler +conventions. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2001/09/25 15:25:00 EDT +Tag: blume-20010925-exninfo +Description: + +I provided a non-hook implementation of exnName (at the toplevel) and +made the "dummy" implementation of exnMessage (at the toplevel) more +useful: if nothing gets "hooked in", then at least you are going to +see the exception name and a message indicating why you don't see more. + +[For the time being, programs that need exnMessage and want to use +ml-build should either use General.exnMessage (strongly recommended) or +refer to structure General at some other point so that CM sees a +static dependency.] + +[Similar remarks go for "print" and "use": If you want to use their +functionality in stand-alone programs generated by ml-build, then use +TextIO.output and Backend.Interact.useFile (from $smlnj/compiler.cm).] + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2001/09/20 17:28:00 EDT +Tag: blume-20010920-slowfp +Description: + +Allen says that x86-fast-fp is not safe yet, so I turned it off again... + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2001/09/20 17:20:00 EDT +Tag: blume-20010920-canonicalpaths +Description: + +0. Updated the BOOT file (something that I forgot to do earlier). + +1. Small internal change to CM so that it avoids "/../" in filenames + as much as possible (but only where it is safe). + +2. Changed config/_run-sml (resulting in a changed bin/.run-sml) so + that arguments that contain delimiters are passed through correctly. + This change also means that all "special" arguments of the form + @SMLxxx... must come first. + +3. Changed install script to put relative anchor names for tool commands + into pathconfig. + +---------------------------------------------------------------------- +Name: Matthias Blume +>>>>>>> 1.169 +Date: 2001/09/18 15:35:00 EDT +Tag: blume-20010918-readme11036 +Description: + +Added README files. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2001/09/18 11:45:00 EDT +Tag: Release_110_36 (retag) +Description: + +Fixed mistake in config/preloads. Retagged as 110.36. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2001/09/18 09:40:00 EDT +Tag: Release_110_36_orig (tag changed) +Description: + +New version (110.36). New bootfiles. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2001/09/14 16:15:00 EDT +Tag: blume-20010914-x86fastfp +Description: + +John committed some changes that Allen made, in particular a (hopefully) +correctly working version of the x86-fp module. + +I changed the default setting of the Control.MLRISC.getFlag "x86-fast-fp" +flag to "true". Everything seems to compile to a fixpoint ok, and +"mandelbrot" speeds up by about 15%. + +---------------------------------------------------------------------- +Name: Matthias Blume +Date: 2001/09/13 11:20:00 EDT +Tag: blume-20010913-minimal +Description: + +1. Stefan Monnier's patch to fix a miscompilation problem that + was brought to light by John Reppy's work on Moby. + +2. Implemented a minimal "structure Compiler" that contains just + "version" and "architecture". The minimal version will be + available when the full version is not. This is for backward- + compatibility with code that wants to test Compiler.version. + +---------------------------------------------------------------------- +Name: Matthias Blume Date: 2001/08/28 14:03:00 EDT Tag: blume-20010828-ml-lex Description: @@ -2939,7 +3452,7 @@ elaborator). There were a lot of changes during my "linkpath" trials that could have been reverted to their original state but weren't. Please, don't be too harsh on me for messing with this code a bit more - than what was strictly necessary... (I _did_ resist the tempation + than what was strictly necessary... (I _did_ resist the temptation of doing any "global reformatting" to avoid an untimely death at Dave's hands. :)
Click to toggle
does not end with </html> tag
does not end with </body> tag
The output has ended thus: tation of doing any "global reformatting" to avoid an untimely death at Dave's hands. :)